more examples
This commit is contained in:
parent
d14289a40e
commit
7a9cb6aa52
|
@ -8,6 +8,7 @@ import (
|
||||||
"context"
|
"context"
|
||||||
"database/sql"
|
"database/sql"
|
||||||
|
|
||||||
|
"xorm.io/builder"
|
||||||
"xorm.io/xorm/v2"
|
"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) {
|
func (q *Executor[T]) Exec(ctx context.Context) (sql.Result, error) {
|
||||||
return q.client.Exec()
|
return q.client.Exec()
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,6 +8,7 @@ import (
|
||||||
"context"
|
"context"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"xorm.io/builder"
|
||||||
"xorm.io/xorm/v2"
|
"xorm.io/xorm/v2"
|
||||||
|
|
||||||
_ "github.com/mattn/go-sqlite3"
|
_ "github.com/mattn/go-sqlite3"
|
||||||
|
@ -25,11 +26,23 @@ func TestExecutor(t *testing.T) {
|
||||||
assert.NoError(t, engine.Sync(new(User)))
|
assert.NoError(t, engine.Sync(new(User)))
|
||||||
|
|
||||||
// create querier
|
// create querier
|
||||||
querier := New[User](engine)
|
executor := New[User](engine)
|
||||||
|
|
||||||
users, err := querier.All(context.Background())
|
err = executor.InsertOne(context.Background(), &User{
|
||||||
if err != nil {
|
Name: "test",
|
||||||
t.Fatal(err)
|
})
|
||||||
}
|
assert.NoError(t, err)
|
||||||
assert.Equal(t, len(users), 0)
|
|
||||||
|
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