添加 gets 查询
This commit is contained in:
parent
409ffd8081
commit
0bc93850ed
|
@ -279,3 +279,19 @@ func FindScannerFromDB[T Model](db dbQuery, ctx context.Context, fn func(T), q *
|
|||
func FindScanner[T Model](ctx context.Context, fn func(T), q *QueryCondition) error {
|
||||
return findScanner[T](globalBb, ctx, fn, q)
|
||||
}
|
||||
|
||||
func Gets[T Model](ctx context.Context, q *QueryCondition) (T, error) {
|
||||
return gets[T](globalBb, ctx, q)
|
||||
}
|
||||
func GetsFromDB[T Model](db dbQuery, ctx context.Context, q *QueryCondition) (T, error) {
|
||||
return gets[T](db, ctx, q)
|
||||
}
|
||||
|
||||
func gets[T Model](db dbQuery, ctx context.Context, q *QueryCondition) (r T, err error) {
|
||||
s, args, err := BuildQuerySql[T](q)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
err = db.Get(ctx, &r, s, args...)
|
||||
return
|
||||
}
|
||||
|
|
|
@ -531,3 +531,41 @@ func BenchmarkFindsXX(b *testing.B) {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
func Test_gets(t *testing.T) {
|
||||
type args struct {
|
||||
db dbQuery
|
||||
ctx context.Context
|
||||
q *QueryCondition
|
||||
}
|
||||
type testCase[T Model] struct {
|
||||
name string
|
||||
args args
|
||||
wantR T
|
||||
wantErr bool
|
||||
}
|
||||
tests := []testCase[options]{
|
||||
{
|
||||
name: "t1",
|
||||
args: args{
|
||||
db: glob,
|
||||
ctx: ctx,
|
||||
q: Conditions(Where(SqlBuilder{{"option_name", "blogname"}})),
|
||||
},
|
||||
wantR: options{3, "blogname", "记录并见证自己的成长", "yes"},
|
||||
wantErr: false,
|
||||
},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
gotR, err := gets[options](tt.args.db, tt.args.ctx, tt.args.q)
|
||||
if (err != nil) != tt.wantErr {
|
||||
t.Errorf("gets() error = %v, wantErr %v", err, tt.wantErr)
|
||||
return
|
||||
}
|
||||
if !reflect.DeepEqual(gotR, tt.wantR) {
|
||||
t.Errorf("gets() gotR = %v, want %v", gotR, tt.wantR)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user