feat: add delete, context, and tx helpers
Add Delete/DeleteAffected, context-aware CRUD helpers, WithTx, ContainsCol, and queryReturning deduplication for returning statements. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,72 @@
|
||||
package dbx
|
||||
|
||||
import (
|
||||
"context"
|
||||
"database/sql"
|
||||
|
||||
"github.com/go-jet/jet/v2/qrm"
|
||||
)
|
||||
|
||||
type mockStatement struct {
|
||||
queryContextFn func(ctx context.Context, dest any) error
|
||||
execContextFn func(ctx context.Context) (sql.Result, error)
|
||||
}
|
||||
|
||||
func (m mockStatement) Query(db qrm.Queryable, dest any) error {
|
||||
return m.QueryContext(context.Background(), db, dest)
|
||||
}
|
||||
|
||||
func (m mockStatement) QueryContext(ctx context.Context, db qrm.Queryable, dest any) error {
|
||||
if m.queryContextFn != nil {
|
||||
return m.queryContextFn(ctx, dest)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m mockStatement) Exec(db qrm.Executable) (sql.Result, error) {
|
||||
return m.ExecContext(context.Background(), db)
|
||||
}
|
||||
|
||||
func (m mockStatement) ExecContext(ctx context.Context, db qrm.Executable) (sql.Result, error) {
|
||||
if m.execContextFn != nil {
|
||||
return m.execContextFn(ctx)
|
||||
}
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
type mockQueryable struct{}
|
||||
|
||||
func (mockQueryable) Query(string, ...any) (*sql.Rows, error) { return nil, nil }
|
||||
|
||||
func (mockQueryable) QueryContext(context.Context, string, ...any) (*sql.Rows, error) {
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
type mockExecutable struct{}
|
||||
|
||||
func (mockExecutable) Exec(string, ...any) (sql.Result, error) { return nil, nil }
|
||||
|
||||
func (mockExecutable) ExecContext(context.Context, string, ...any) (sql.Result, error) {
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
type mockResult struct {
|
||||
lastInsertID int64
|
||||
rowsAffected int64
|
||||
lastInsertErr error
|
||||
rowsAffectedErr error
|
||||
}
|
||||
|
||||
func (r mockResult) LastInsertId() (int64, error) {
|
||||
return r.lastInsertID, r.lastInsertErr
|
||||
}
|
||||
|
||||
func (r mockResult) RowsAffected() (int64, error) {
|
||||
return r.rowsAffected, r.rowsAffectedErr
|
||||
}
|
||||
|
||||
type row struct {
|
||||
ID int
|
||||
}
|
||||
|
||||
var _ Statement = mockStatement{}
|
||||
Reference in New Issue
Block a user