more examples

This commit is contained in:
Lunny Xiao 2023-10-30 13:40:19 +08:00
parent d14289a40e
commit 7a9cb6aa52
No known key found for this signature in database
GPG Key ID: C3B7C91B632F738A
2 changed files with 44 additions and 6 deletions

View File

@ -8,6 +8,7 @@ import (
"context"
"database/sql"
"xorm.io/builder"
"xorm.io/xorm/v2"
)
@ -21,6 +22,30 @@ func New[T any](c xorm.Interface) *Executor[T] {
}
}
func (q *Executor[T]) Where(cond builder.Cond) *Executor[T] {
q.client.Where(cond)
return q
}
func (q *Executor[T]) Get(ctx context.Context) (*T, error) {
var result T
if has, err := q.client.Get(&result); err != nil {
return nil, err
} else if !has {
return nil, nil
}
return &result, nil
}
func (q *Executor[T]) InsertOne(ctx context.Context, obj *T) error {
_, err := q.client.InsertOne(obj)
return err
}
func (q *Executor[T]) Insert(ctx context.Context, results []T) (int64, error) {
return q.client.Insert(results)
}
func (q *Executor[T]) Exec(ctx context.Context) (sql.Result, error) {
return q.client.Exec()
}

View File

@ -8,6 +8,7 @@ import (
"context"
"testing"
"xorm.io/builder"
"xorm.io/xorm/v2"
_ "github.com/mattn/go-sqlite3"
@ -25,11 +26,23 @@ func TestExecutor(t *testing.T) {
assert.NoError(t, engine.Sync(new(User)))
// create querier
querier := New[User](engine)
executor := New[User](engine)
users, err := querier.All(context.Background())
if err != nil {
t.Fatal(err)
}
assert.Equal(t, len(users), 0)
err = executor.InsertOne(context.Background(), &User{
Name: "test",
})
assert.NoError(t, err)
user, err := executor.Get(context.Background())
assert.NoError(t, err)
assert.Equal(t, user.Name, "test")
assert.Equal(t, user.Id, int64(1))
users, err := executor.All(context.Background())
assert.NoError(t, err)
assert.Equal(t, len(users), 1)
users, err = executor.Where(builder.Eq{"id": 1}).All(context.Background())
assert.NoError(t, err)
assert.Equal(t, len(users), 1)
}