8d697eda5b
Add Delete/DeleteAffected, context-aware CRUD helpers, WithTx, ContainsCol, and queryReturning deduplication for returning statements. Co-authored-by: Cursor <cursoragent@cursor.com>
73 lines
1.6 KiB
Go
73 lines
1.6 KiB
Go
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{}
|