more examples
This commit is contained in:
parent
d14289a40e
commit
7a9cb6aa52
|
@ -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()
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue