Files
chaisql/example_test.go
Asdine El Hrychy 978a15b11f Fix example
2019-08-19 20:19:20 +02:00

99 lines
1.6 KiB
Go

package genji_test
//go:generate genji -s User -f example_test.go
import (
"log"
"github.com/asdine/genji"
"github.com/asdine/genji/engine/memory"
"github.com/asdine/genji/field"
"github.com/asdine/genji/query"
"github.com/asdine/genji/record"
)
type User struct {
ID int64 `genji:"pk"`
Name string `genji:"index"`
Age uint32
}
func Example() {
ng := memory.NewEngine()
db, err := genji.New(ng)
if err != nil {
log.Fatal(err)
}
defer db.Close()
// open a read-write transaction
err = db.Update(func(tx *genji.Tx) error {
users := NewUserTable()
// init the table
err := users.Init(tx)
if err != nil {
return err
}
t, err := users.SelectTable(tx)
if err != nil {
return err
}
// insert a User, no reflection involved
_, err = t.Insert(&User{
ID: 10,
Name: "foo",
Age: 32,
})
if err != nil {
return err
}
// Create a result value
var result UserResult
// SELECT ID, Name FROM foo where Age >= 18
return query.Select(users.ID, users.Name).From(t).Where(users.Age.Gte(18)).
Run(tx).
Scan(&result)
})
if err != nil {
log.Fatal(err)
}
}
func ExampleDB() {
ng := memory.NewEngine()
db, err := genji.New(ng)
if err != nil {
log.Fatal(err)
}
defer db.Close()
err = db.Update(func(tx *genji.Tx) error {
err := tx.CreateTable("Table")
if err != nil {
return err
}
t, err := tx.Table("Table")
if err != nil {
return err
}
r := record.FieldBuffer{
field.NewString("Name", "foo"),
field.NewInt("Age", 10),
}
_, err = t.Insert(r)
return err
})
if err != nil {
log.Fatal(err)
}
}