Documentation
¶
Index ¶
- Constants
- Variables
- func ApplyScopes(q *query.Query, scopes ...Scope) *query.Query
- func DecodeJSON[T any](src any, fallback T) (T, error)
- func DeleteBy(ctx context.Context, base *query.Query, scopes ...Scope) (sql.Result, error)
- func EncodeJSON(v any) (string, error)
- func GetDriver(name string) (sqldriver.Driver, bool)
- func Insert[T any](ctx context.Context, db *DB, v T, opts ...WriteOpt) (sql.Result, error)
- func InsertMany[T any](ctx context.Context, db *DB, values []T, opts ...WriteOpt) (sql.Result, error)
- func InsertManyReturning[R any, T any](ctx context.Context, db *DB, values []T, opts ...WriteOpt) ([]R, error)
- func InsertOnceReturning[T any, V any](ctx context.Context, db *DB, v V, opts ...WriteOpt) (T, bool, error)
- func InsertReturning[T any, V any](ctx context.Context, db *DB, v V, opts ...WriteOpt) (T, error)
- func IsConflict(err error) bool
- func IsNotFound(err error) bool
- func ManifestJSONSchema() ([]byte, error)
- func NullString(value string) sql.NullString
- func NullStringEmpty(value string) sql.NullString
- func NullStringPtr(value *string) sql.NullString
- func OperationSpecJSONSchema() ([]byte, error)
- func RegisterDialect(name string, d driver.Dialect)
- func RegisterDriver(name string, d sqldriver.Driver)
- func RegisterDriverWithDialect(name string, d sqldriver.Driver, dialect driver.Dialect)
- func RegisterTablePolicy(policy TablePolicy) error
- func ResetMetaCache()
- func ResetModelPolicies()
- func SelectAll[T any](ctx context.Context, db *DB, q string, args ...any) ([]T, error)
- func SelectAllBy[T any](ctx context.Context, db *DB, base *query.Query, scopes ...Scope) ([]T, error)
- func SelectOne[T any](ctx context.Context, db *DB, q string, args ...any) (T, error)
- func SelectOneBy[T any](ctx context.Context, db *DB, base *query.Query, scopes ...Scope) (T, error)
- func SelectStruct[T any](ctx context.Context, db *DB, q string, args ...any) (T, error)deprecated
- func SelectStructs[T any](ctx context.Context, db *DB, q string, args ...any) ([]T, error)deprecated
- func Update[T any](ctx context.Context, db *DB, v T, opts ...WriteOpt) (sql.Result, error)
- func UpdateBy(ctx context.Context, base *query.Query, data any, scopes ...Scope) (sql.Result, error)
- func UpdateByReturning[T any](ctx context.Context, db *DB, base *query.Query, data any, scopes ...Scope) (T, error)
- func UpdateByReturningWithOptions[T any](ctx context.Context, db *DB, base *query.Query, data any, opts []WriteOpt, ...) (T, error)
- func UpdateReturning[T any, V any](ctx context.Context, db *DB, v V, opts ...WriteOpt) (T, error)
- func Upsert[T any](ctx context.Context, db *DB, v T, opts ...WriteOpt) (sql.Result, error)
- func UpsertReturning[T any, V any](ctx context.Context, db *DB, v V, opts ...WriteOpt) (T, error)
- func ValidateManifest(m *Manifest) error
- type AnalysisPrecision
- type Approval
- type BoolScanPolicy
- type ColumnRef
- type ColumnSchema
- type CursorColumn
- type DB
- func NewDB(sqlDB *sql.DB, dialect driver.Dialect, opts ...Option) *DB
- func NewDBWithExecutor(exec Executor, dialect driver.Dialect, opts ...Option) *DB
- func NewTxDB(tx *sql.Tx, dialect driver.Dialect, opts ...Option) *DB
- func Open(dsn string) (*DB, error)
- func OpenWithDriver(driverName, dsn string) (*DB, error)
- func OpenWithDriverOptions(driverName, dsn string, opts ...Option) (*DB, error)
- func (db *DB) Begin() (Tx, error)
- func (db *DB) BeginTx(ctx context.Context, opts *sql.TxOptions) (Tx, error)
- func (db *DB) Close() error
- func (db *DB) Exec(q string, args ...any) (sql.Result, error)
- func (db *DB) ExecContext(ctx context.Context, q string, args ...any) (sql.Result, error)
- func (db *DB) Model(v any) *query.Query
- func (db *DB) Query(q string, args ...any) (*sql.Rows, error)
- func (db *DB) QueryContext(ctx context.Context, q string, args ...any) (*sql.Rows, error)
- func (db *DB) QueryRow(q string, args ...any) *sql.Rowdeprecated
- func (db *DB) QueryRowContext(ctx context.Context, q string, args ...any) *sql.Rowdeprecated
- func (db *DB) QueryRowE(ctx context.Context, q string, args ...any) (*sql.Row, error)
- func (db *DB) RawPlan(ctx context.Context, q string, args ...any) (*QueryPlan, error)
- func (db *DB) RequireRawApproval(reason string) *DB
- func (db *DB) SQLDB() *sql.DB
- func (db *DB) SelectMap(ctx context.Context, q string, args ...any) (map[string]any, error)deprecated
- func (db *DB) SelectMaps(ctx context.Context, q string, args ...any) ([]map[string]any, error)deprecated
- func (db *DB) Table(name string) *query.Query
- func (db *DB) TablePath(parts ...string) *query.Query
- func (db *DB) TouchedTables(tables ...string) *DB
- func (db *DB) Transaction(fn func(tx Tx) error) error
- func (db *DB) TransactionContext(ctx context.Context, fn func(tx Tx) error) error
- func (db *DB) WrapTx(tx *sql.Tx, opts ...Option) *DB
- type ErrBoolParse
- type Evidence
- type Executor
- type FilterSpec
- type IndexSchema
- type JSONField
- type JoinRef
- type Manifest
- type ManifestColumn
- type ManifestFreshnessCheck
- type ManifestIndex
- type ManifestOptions
- type ManifestPolicy
- type ManifestQueryExample
- type ManifestRelation
- type ManifestTable
- type ManifestVerification
- type MigrationPlan
- type MigrationStatement
- type MigrationStep
- type MigrationStepType
- type Migrator
- type ModelPolicyBuilder
- func (b *ModelPolicyBuilder) Err() error
- func (b *ModelPolicyBuilder) PII(columns ...string) *ModelPolicyBuilder
- func (b *ModelPolicyBuilder) PolicyMode(mode PolicyMode) *ModelPolicyBuilder
- func (b *ModelPolicyBuilder) Register() error
- func (b *ModelPolicyBuilder) RequiredFilter(columns ...string) *ModelPolicyBuilder
- func (b *ModelPolicyBuilder) SoftDelete(column string, mode ...PolicyMode) *ModelPolicyBuilder
- func (b *ModelPolicyBuilder) Table(name string) *ModelPolicyBuilder
- func (b *ModelPolicyBuilder) TenantScoped(column string, mode ...PolicyMode) *ModelPolicyBuilder
- type OperationOptions
- type OperationSpec
- type OperationType
- type Option
- type OrderSpec
- type PolicyMode
- type PredicateRef
- type QueryPlan
- type RiskConfig
- type RiskEngine
- type RiskLevel
- type RiskResult
- type RiskRuleConfig
- type RowsAffectedError
- type ScanOptions
- type Schema
- type Scope
- type SourceLocation
- type Suppression
- type SuppressionOption
- type SuppressionScope
- type TablePolicy
- type TableRef
- type TableSchema
- type Tx
- type Warning
- type WriteOpt
- func Columns(cols ...string) WriteOpt
- func ConflictColumns(cols ...string) WriteOpt
- func ConflictConstraint(name string) WriteOpt
- func ConflictDoNothing() WriteOpt
- func ConflictTargetRaw(target string) WriteOpt
- func ConflictWhere(predicate string) WriteOpt
- func ExpectAffected(n int64) WriteOpt
- func Increment(column string, delta any) WriteOpt
- func NoRowsAs(err error) WriteOpt
- func Omit(cols ...string) WriteOpt
- func PK(cols ...string) WriteOpt
- func Returning(cols ...string) WriteOpt
- func SchemaName(name string) WriteOpt
- func SetColumn(column, sourceColumn string) WriteOpt
- func SetExpr(column, expression string, args ...any) WriteOpt
- func SetRaw(column, expression string) WriteOpt
- func Table(name string) WriteOpt
- func TablePath(parts ...string) WriteOpt
- func UpdateColumns(cols ...string) WriteOpt
- func WherePK() WriteOpt
Constants ¶
const ( ManifestVersion = manifest.Version WarningManifestStale = manifest.WarningStale WarningManifestUnreadable = manifest.WarningUnreadable )
const ( AddTable = migration.AddTable DropTable = migration.DropTable AddColumn = migration.AddColumn DropColumn = migration.DropColumn RenameColumn = migration.RenameColumn AlterColumnType = migration.AlterColumnType AlterNullability = migration.AlterNullability AddIndex = migration.AddIndex DropIndex = migration.DropIndex UnsupportedStep = migration.UnsupportedStep WarningMigrationUnsupported = migration.WarningMigrationUnsupported WarningMigrationDropTable = migration.WarningMigrationDropTable WarningMigrationDropColumn = migration.WarningMigrationDropColumn WarningMigrationAddNotNullColumn = migration.WarningMigrationAddNotNullColumn WarningMigrationRenameColumn = migration.WarningMigrationRenameColumn WarningMigrationAlterColumnType = migration.WarningMigrationAlterColumnType WarningMigrationTypeNarrowing = migration.WarningMigrationTypeNarrowing WarningMigrationSetNotNull = migration.WarningMigrationSetNotNull WarningMigrationAddIndexNonConcurrent = migration.WarningMigrationAddIndexNonConcurrent WarningMigrationDropIndex = migration.WarningMigrationDropIndex )
const ( OperationSpecSelect = operation.OperationSelect WarningOperationSpecPIISelected = operation.WarningOperationPIISelected WarningOperationSpecRequiredFilter = operation.WarningOperationRequiredFilter WarningOperationSpecMissingLimit = operation.WarningOperationMissingLimit WarningOperationSpecStaleManifest = operation.WarningOperationStaleManifest )
const ( MySQL = "mysql" Postgres = "postgres" )
Database driver names.
const ( OperationSelect = query.OperationSelect OperationInsert = query.OperationInsert OperationUpdate = query.OperationUpdate OperationDelete = query.OperationDelete OperationRaw = query.OperationRaw RiskLow = query.RiskLow RiskMedium = query.RiskMedium RiskHigh = query.RiskHigh RiskDestructive = query.RiskDestructive RiskBlocked = query.RiskBlocked AnalysisPrecise = query.AnalysisPrecise AnalysisPartial = query.AnalysisPartial AnalysisUnsupported = query.AnalysisUnsupported WarningRawSQLUsed = query.WarningRawSQLUsed WarningUpdateWithoutWhere = query.WarningUpdateWithoutWhere WarningDeleteWithoutWhere = query.WarningDeleteWithoutWhere WarningSelectStarUsed = query.WarningSelectStarUsed WarningLimitMissing = query.WarningLimitMissing WarningBulkUpdateDetected = query.WarningBulkUpdateDetected WarningBulkDeleteDetected = query.WarningBulkDeleteDetected WarningDestructiveSQL = query.WarningDestructiveSQL WarningWeakPredicate = query.WarningWeakPredicate WarningSuppressionExpired = query.WarningSuppressionExpired WarningSuppressionNotAllowed = query.WarningSuppressionNotAllowed WarningStaticReviewPartial = query.WarningStaticReviewPartial WarningStaticReviewUnsupported = query.WarningStaticReviewUnsupported WarningTenantFilterMissing = query.WarningTenantFilterMissing WarningSoftDeleteFilterMissing = query.WarningSoftDeleteFilterMissing WarningPIIColumnSelected = query.WarningPIIColumnSelected WarningRequiredFilterMissing = query.WarningRequiredFilterMissing SuppressionScopeQuery = query.SuppressionScopeQuery SuppressionScopeInline = query.SuppressionScopeInline SuppressionScopeConfig = query.SuppressionScopeConfig PolicyModeWarn = query.PolicyModeWarn PolicyModeEnforce = query.PolicyModeEnforce PolicyModeBlock = query.PolicyModeBlock )
Variables ¶
var ( ErrOperationManifestRequired = operation.ErrManifestRequired ErrOperationUnsupportedOperation = operation.ErrUnsupportedOperation ErrOperationModelRequired = operation.ErrModelRequired ErrOperationUnknownModel = operation.ErrUnknownModel ErrOperationSelectRequired = operation.ErrSelectRequired ErrOperationUnknownField = operation.ErrUnknownField ErrOperationForbiddenField = operation.ErrForbiddenField ErrOperationInvalidFilter = operation.ErrInvalidFilter ErrOperationInvalidOrder = operation.ErrInvalidOrder ErrOperationRequiredFilterMissing = operation.ErrRequiredFilterMissing ErrOperationPIIAccessReasonRequired = operation.ErrPIIAccessReasonRequired ErrOperationStaleManifest = operation.ErrStaleManifest )
var ( ErrApprovalRequired = query.ErrApprovalRequired ErrApprovalReasonRequired = query.ErrApprovalReasonRequired ErrAccessReasonRequired = query.ErrAccessReasonRequired ErrBlockedOperation = query.ErrBlockedOperation DefaultRiskEngine = query.DefaultRiskEngine )
var ErrConflict = errors.New("goquent: conflict")
ErrConflict represents an explicit optimistic-concurrency or stale-write conflict chosen by the caller.
var ErrNotFound = sql.ErrNoRows
ErrNotFound is returned by one-row read helpers when no row is available.
It aliases sql.ErrNoRows for compatibility with existing callers.
var ErrRowsAffected = errors.New("goquent: unexpected rows affected")
ErrRowsAffected reports that a write did not affect the requested number of rows.
Functions ¶
func ApplyScopes ¶ added in v0.4.0
ApplyScopes applies scopes to q in order. Nil scopes are ignored. If a scope returns nil, the current query is kept.
func DecodeJSON ¶ added in v0.6.0
DecodeJSON decodes a JSON/JSONB or text-JSON database value. NULL returns fallback without error.
func DeleteBy ¶ added in v0.4.0
DeleteBy applies scopes to base and executes a DELETE using the resulting query.
func EncodeJSON ¶ added in v0.6.0
EncodeJSON marshals v for JSON/JSONB or text-JSON columns.
func InsertMany ¶ added in v0.6.0
func InsertMany[T any](ctx context.Context, db *DB, values []T, opts ...WriteOpt) (sql.Result, error)
InsertMany inserts all values in one INSERT statement.
Empty slices return an error instead of a no-op result. Map writes require Table, and every row must provide the selected column set.
func InsertManyReturning ¶ added in v0.6.0
func InsertManyReturning[R any, T any](ctx context.Context, db *DB, values []T, opts ...WriteOpt) ([]R, error)
InsertManyReturning inserts all values and scans PostgreSQL RETURNING rows.
func InsertOnceReturning ¶ added in v0.5.3
func InsertOnceReturning[T any, V any](ctx context.Context, db *DB, v V, opts ...WriteOpt) (T, bool, error)
InsertOnceReturning inserts v once and scans the inserted or existing row.
It uses ON CONFLICT DO NOTHING RETURNING for the insert attempt. If the conflict path returns no row, it looks up the existing row by ConflictColumns or WherePK primary-key columns. Expression-only raw conflict targets need ConflictColumns or WherePK as a lookup key.
func InsertReturning ¶ added in v0.5.1
InsertReturning inserts v and scans the Postgres RETURNING row into T.
func IsConflict ¶ added in v0.6.0
IsConflict reports whether err represents an explicit write conflict.
func IsNotFound ¶ added in v0.6.0
IsNotFound reports whether err represents a no-row result.
func ManifestJSONSchema ¶ added in v0.5.0
func NullString ¶ added in v0.5.3
func NullString(value string) sql.NullString
NullString returns a valid sql.NullString.
func NullStringEmpty ¶ added in v0.5.3
func NullStringEmpty(value string) sql.NullString
NullStringEmpty returns NULL when value is empty and a valid sql.NullString otherwise.
func NullStringPtr ¶ added in v0.5.3
func NullStringPtr(value *string) sql.NullString
NullStringPtr returns NULL when value is nil and a valid sql.NullString otherwise.
func OperationSpecJSONSchema ¶ added in v0.5.0
func RegisterDialect ¶ added in v0.2.0
RegisterDialect registers a SQL dialect for a driver name.
func RegisterDriver ¶ added in v0.2.0
RegisterDriver registers a database driver.
func RegisterDriverWithDialect ¶ added in v0.2.0
RegisterDriverWithDialect registers a database driver along with its dialect.
func RegisterTablePolicy ¶ added in v0.5.0
func RegisterTablePolicy(policy TablePolicy) error
RegisterTablePolicy registers a table policy directly.
func ResetMetaCache ¶ added in v0.3.0
func ResetMetaCache()
ResetMetaCache clears cached reflection metadata. Intended for tests.
func ResetModelPolicies ¶ added in v0.5.0
func ResetModelPolicies()
ResetModelPolicies clears registered model policies. Intended for tests.
func SelectAllBy ¶ added in v0.4.0
func SelectAllBy[T any](ctx context.Context, db *DB, base *query.Query, scopes ...Scope) ([]T, error)
SelectAllBy builds a scoped query and scans all rows into []T.
func SelectOneBy ¶ added in v0.4.0
SelectOneBy builds a scoped query and scans the first row into T.
func UpdateBy ¶ added in v0.4.0
func UpdateBy(ctx context.Context, base *query.Query, data any, scopes ...Scope) (sql.Result, error)
UpdateBy applies scopes to base and executes an UPDATE using the resulting query.
func UpdateByReturning ¶ added in v0.5.1
func UpdateByReturning[T any](ctx context.Context, db *DB, base *query.Query, data any, scopes ...Scope) (T, error)
UpdateByReturning applies scopes, executes an UPDATE, and scans the Postgres RETURNING row into T.
func UpdateByReturningWithOptions ¶ added in v0.6.0
func UpdateByReturningWithOptions[T any](ctx context.Context, db *DB, base *query.Query, data any, opts []WriteOpt, scopes ...Scope) (T, error)
UpdateByReturningWithOptions applies scopes, executes an UPDATE with RETURNING, and applies write options such as NoRowsAs for guarded updates.
func UpdateReturning ¶ added in v0.5.1
UpdateReturning updates v and scans the Postgres RETURNING row into T.
func UpsertReturning ¶ added in v0.5.1
UpsertReturning upserts v and scans the Postgres RETURNING row into T.
func ValidateManifest ¶ added in v0.5.0
Types ¶
type AnalysisPrecision ¶ added in v0.5.0
type AnalysisPrecision = query.AnalysisPrecision
type BoolScanPolicy ¶ added in v0.3.1
type BoolScanPolicy int
const ( BoolStrict BoolScanPolicy = iota BoolCompat BoolLenient )
func (BoolScanPolicy) String ¶ added in v0.3.1
func (p BoolScanPolicy) String() string
type ColumnSchema ¶ added in v0.5.0
type ColumnSchema = migration.ColumnSchema
type CursorColumn ¶ added in v0.5.3
type CursorColumn = query.CursorColumn
CursorColumn describes an ordered column used by keyset cursor scopes.
func CursorAsc ¶ added in v0.5.3
func CursorAsc(name string) CursorColumn
CursorAsc returns an ascending keyset cursor column.
func CursorAscAlias ¶ added in v0.6.0
func CursorAscAlias(alias string) CursorColumn
CursorAscAlias returns an ascending selected alias cursor column.
func CursorAscExpr ¶ added in v0.6.0
func CursorAscExpr(expr string) CursorColumn
CursorAscExpr returns an ascending trusted SQL expression cursor column.
func CursorDesc ¶ added in v0.5.3
func CursorDesc(name string) CursorColumn
CursorDesc returns a descending keyset cursor column.
func CursorDescAlias ¶ added in v0.6.0
func CursorDescAlias(alias string) CursorColumn
CursorDescAlias returns a descending selected alias cursor column.
func CursorDescExpr ¶ added in v0.6.0
func CursorDescExpr(expr string) CursorColumn
CursorDescExpr returns a descending trusted SQL expression cursor column.
type DB ¶
type DB struct {
// contains filtered or unexported fields
}
DB provides main ORM interface.
func NewDBWithExecutor ¶ added in v0.6.0
NewDBWithExecutor wraps an existing sql.DB/sql.Tx-compatible executor with a dialect into DB. The returned DB does not own the executor; Close is a no-op unless the executor was created by Open/OpenWithDriver/NewDB with *sql.DB.
func Open ¶
Open opens a MySQL database with default pooling. Deprecated: use OpenWithDriver to specify a driver explicitly.
func OpenWithDriver ¶ added in v0.1.0
OpenWithDriver opens a database with default pooling for the given driver.
func OpenWithDriverOptions ¶ added in v0.3.1
OpenWithDriverOptions opens a database with options for the given driver.
func (*DB) Close ¶
Close closes the owned underlying DB. DB values created around an external executor or transaction do not own a sql.DB, so Close is a no-op for them.
func (*DB) ExecContext ¶ added in v0.0.3
ExecContext executes a raw SQL statement with a context.
func (*DB) QueryContext ¶ added in v0.0.3
QueryContext runs Query with a context.
func (*DB) QueryRow
deprecated
added in
v0.0.3
QueryRow executes a query that is expected to return at most one row.
Deprecated: use QueryRowE so raw SQL safety errors can be returned before Scan. QueryRow cannot surface pre-execution approval errors because *sql.Row has no public error constructor. When raw SQL approval checks fail, QueryRow does not execute the caller-supplied SQL.
func (*DB) QueryRowContext
deprecated
added in
v0.0.3
QueryRowContext executes a query with context returning at most one row.
Deprecated: use QueryRowE so raw SQL safety errors can be returned before Scan. QueryRowContext cannot surface pre-execution approval errors because *sql.Row has no public error constructor. When raw SQL approval checks fail, QueryRowContext does not execute the caller-supplied SQL.
func (*DB) QueryRowE ¶ added in v0.5.0
QueryRowE validates raw SQL policy and executes a context-aware single-row query.
func (*DB) RawPlan ¶ added in v0.5.0
RawPlan creates a plan for caller-supplied SQL without executing it.
func (*DB) RequireRawApproval ¶ added in v0.5.0
RequireRawApproval returns a shallow DB copy that can execute risky raw SQL with an explicit approval reason.
func (*DB) TablePath ¶ added in v0.6.0
TablePath creates a query for a schema-qualified or otherwise path-qualified table name.
func (*DB) TouchedTables ¶ added in v0.6.0
TouchedTables returns a shallow DB copy that annotates raw SQL QueryPlans with the tables the caller reviewed.
func (*DB) Transaction ¶
Transaction executes fn in a transaction.
func (*DB) TransactionContext ¶ added in v0.1.2
TransactionContext executes fn in a transaction using ctx.
type ErrBoolParse ¶ added in v0.3.1
type ErrBoolParse struct {
Column string
Src any
Policy BoolScanPolicy
}
func (ErrBoolParse) Error ¶ added in v0.3.1
func (e ErrBoolParse) Error() string
type Executor ¶ added in v0.6.0
type Executor interface {
// Query runs a SQL statement returning multiple rows.
Query(query string, args ...any) (*sql.Rows, error)
// QueryContext is the context-aware version of Query.
QueryContext(ctx context.Context, query string, args ...any) (*sql.Rows, error)
// QueryRow executes a query expected to return at most one row.
QueryRow(query string, args ...any) *sql.Row
// QueryRowContext executes a single-row query with context.
QueryRowContext(ctx context.Context, query string, args ...any) *sql.Row
// Exec runs a SQL statement that doesn't return rows.
Exec(query string, args ...any) (sql.Result, error)
// ExecContext runs Exec with a context.
ExecContext(ctx context.Context, query string, args ...any) (sql.Result, error)
}
Executor abstracts sql.DB, sql.Tx, and compatible transaction wrappers.
type FilterSpec ¶ added in v0.5.0
type FilterSpec = operation.FilterSpec
type IndexSchema ¶ added in v0.5.0
type IndexSchema = migration.IndexSchema
type JSONField ¶ added in v0.5.3
JSONField maps a JSON/JSONB column to a typed Go value.
A NULL database value scans to Valid=false and leaves Data as the zero value. Use OrDefault when repository code wants a stable default for nullable JSON.
func (JSONField[T]) OrDefault ¶ added in v0.5.3
func (j JSONField[T]) OrDefault(def T) T
OrDefault returns Data when valid, otherwise def.
type Manifest ¶ added in v0.5.0
func GenerateManifest ¶ added in v0.5.0
func GenerateManifest(opts ManifestOptions) (*Manifest, error)
func LoadManifest ¶ added in v0.5.0
type ManifestColumn ¶ added in v0.5.0
type ManifestFreshnessCheck ¶ added in v0.5.0
type ManifestFreshnessCheck = manifest.FreshnessCheck
type ManifestIndex ¶ added in v0.5.0
type ManifestOptions ¶ added in v0.5.0
type ManifestPolicy ¶ added in v0.5.0
type ManifestQueryExample ¶ added in v0.5.0
type ManifestQueryExample = manifest.QueryExample
type ManifestRelation ¶ added in v0.5.0
type ManifestTable ¶ added in v0.5.0
type ManifestVerification ¶ added in v0.5.0
type ManifestVerification = manifest.Verification
func VerifyManifest ¶ added in v0.5.0
func VerifyManifest(stored, current *Manifest) ManifestVerification
type MigrationPlan ¶ added in v0.5.0
type MigrationPlan = migration.MigrationPlan
func DiffSchemas ¶ added in v0.5.0
func DiffSchemas(current, desired Schema) *MigrationPlan
func PlanMigrationSQL ¶ added in v0.5.0
func PlanMigrationSQL(ctx context.Context, sqlText string) (*MigrationPlan, error)
func PlanMigrationSteps ¶ added in v0.5.0
func PlanMigrationSteps(steps []MigrationStep) *MigrationPlan
type MigrationStatement ¶ added in v0.5.0
type MigrationStatement = migration.MigrationStatement
type MigrationStep ¶ added in v0.5.0
type MigrationStep = migration.MigrationStep
type MigrationStepType ¶ added in v0.5.0
type MigrationStepType = migration.MigrationStepType
type Migrator ¶ added in v0.5.0
func NewMigrator ¶ added in v0.5.0
type ModelPolicyBuilder ¶ added in v0.5.0
type ModelPolicyBuilder struct {
// contains filtered or unexported fields
}
ModelPolicyBuilder registers table policy metadata for a model/table.
func Model ¶ added in v0.5.0
func Model(v any) *ModelPolicyBuilder
Model starts a policy declaration for v's table.
func (*ModelPolicyBuilder) Err ¶ added in v0.5.0
func (b *ModelPolicyBuilder) Err() error
Err returns the last registration error.
func (*ModelPolicyBuilder) PII ¶ added in v0.5.0
func (b *ModelPolicyBuilder) PII(columns ...string) *ModelPolicyBuilder
PII marks columns as personally identifiable information.
func (*ModelPolicyBuilder) PolicyMode ¶ added in v0.5.0
func (b *ModelPolicyBuilder) PolicyMode(mode PolicyMode) *ModelPolicyBuilder
PolicyMode sets all policy modes for this model declaration.
func (*ModelPolicyBuilder) Register ¶ added in v0.5.0
func (b *ModelPolicyBuilder) Register() error
Register explicitly registers the current policy.
func (*ModelPolicyBuilder) RequiredFilter ¶ added in v0.5.0
func (b *ModelPolicyBuilder) RequiredFilter(columns ...string) *ModelPolicyBuilder
RequiredFilter requires filters on the provided columns.
func (*ModelPolicyBuilder) SoftDelete ¶ added in v0.5.0
func (b *ModelPolicyBuilder) SoftDelete(column string, mode ...PolicyMode) *ModelPolicyBuilder
SoftDelete marks column as the soft delete column.
func (*ModelPolicyBuilder) Table ¶ added in v0.5.0
func (b *ModelPolicyBuilder) Table(name string) *ModelPolicyBuilder
Table overrides the table name for this policy declaration.
func (*ModelPolicyBuilder) TenantScoped ¶ added in v0.5.0
func (b *ModelPolicyBuilder) TenantScoped(column string, mode ...PolicyMode) *ModelPolicyBuilder
TenantScoped marks column as the tenant scope column.
type OperationOptions ¶ added in v0.5.0
type OperationSpec ¶ added in v0.5.0
type OperationSpec = operation.OperationSpec
type OperationType ¶ added in v0.5.0
type OperationType = query.OperationType
type Option ¶ added in v0.3.1
type Option func(*DB)
Option configures DB at creation.
func WithBoolScanPolicy ¶ added in v0.3.1
func WithBoolScanPolicy(p BoolScanPolicy) Option
WithBoolScanPolicy sets the bool scanning policy.
type PolicyMode ¶ added in v0.5.0
type PolicyMode = query.PolicyMode
type PredicateRef ¶ added in v0.5.0
type PredicateRef = query.PredicateRef
type QueryPlan ¶ added in v0.5.0
func CompileOperationSpec ¶ added in v0.5.0
func CompileOperationSpec(ctx context.Context, spec OperationSpec, opts OperationOptions) (*QueryPlan, error)
type RiskConfig ¶ added in v0.5.0
type RiskConfig = query.RiskConfig
type RiskEngine ¶ added in v0.5.0
type RiskEngine = query.RiskEngine
func NewRiskEngine ¶ added in v0.5.0
func NewRiskEngine(config RiskConfig) RiskEngine
type RiskResult ¶ added in v0.5.0
type RiskResult = query.RiskResult
type RiskRuleConfig ¶ added in v0.5.0
type RiskRuleConfig = query.RiskRuleConfig
type RowsAffectedError ¶ added in v0.6.0
RowsAffectedError describes a failed rows-affected expectation.
func (RowsAffectedError) Error ¶ added in v0.6.0
func (e RowsAffectedError) Error() string
func (RowsAffectedError) Is ¶ added in v0.6.0
func (e RowsAffectedError) Is(target error) bool
func (RowsAffectedError) Unwrap ¶ added in v0.6.0
func (e RowsAffectedError) Unwrap() error
type ScanOptions ¶ added in v0.3.1
type ScanOptions struct {
BoolPolicy BoolScanPolicy
}
type Scope ¶ added in v0.4.0
Scope applies reusable query mutations for advanced read and write flows.
func ComposeScopes ¶ added in v0.4.0
ComposeScopes bundles scopes into a single reusable scope.
func CursorAfter ¶ added in v0.5.3
func CursorAfter(columns []CursorColumn, values ...any) Scope
CursorAfter adds a keyset pagination predicate after the given cursor.
func CursorBefore ¶ added in v0.5.3
func CursorBefore(columns []CursorColumn, values ...any) Scope
CursorBefore adds a keyset pagination predicate before the given cursor.
func TenantScope ¶ added in v0.5.2
TenantScope adds a tenant filter scope. The default column is tenant_id.
type SourceLocation ¶ added in v0.5.0
type SourceLocation = query.SourceLocation
type Suppression ¶ added in v0.5.0
type Suppression = query.Suppression
func NewSuppression ¶ added in v0.5.0
func NewSuppression(code, reason string, opts ...SuppressionOption) (Suppression, error)
func ParseInlineSuppression ¶ added in v0.5.0
func ParseInlineSuppression(comment string) (Suppression, bool, error)
type SuppressionOption ¶ added in v0.5.0
type SuppressionOption = query.SuppressionOption
func SuppressionExpiresAt ¶ added in v0.5.0
func SuppressionExpiresAt(t time.Time) SuppressionOption
func SuppressionOwner ¶ added in v0.5.0
func SuppressionOwner(owner string) SuppressionOption
type SuppressionScope ¶ added in v0.5.0
type SuppressionScope = query.SuppressionScope
type TablePolicy ¶ added in v0.5.0
type TablePolicy = query.TablePolicy
func RegisteredTablePolicies ¶ added in v0.5.0
func RegisteredTablePolicies() []TablePolicy
RegisteredTablePolicies returns all registered table policies in stable order.
type TableSchema ¶ added in v0.5.0
type TableSchema = migration.TableSchema
type Warning ¶ added in v0.5.0
func ValidateOperationSpec ¶ added in v0.5.0
func ValidateOperationSpec(spec OperationSpec, opts OperationOptions) ([]Warning, error)
type WriteOpt ¶ added in v0.3.0
type WriteOpt func(*writeOptions)
WriteOpt configures write behavior.
func ConflictColumns ¶ added in v0.5.1
ConflictColumns sets the conflict target columns for Upsert.
func ConflictConstraint ¶ added in v0.5.1
ConflictConstraint sets a Postgres named constraint as the conflict target.
func ConflictDoNothing ¶ added in v0.5.2
func ConflictDoNothing() WriteOpt
ConflictDoNothing makes Upsert/UpsertReturning use a no-op conflict action.
func ConflictTargetRaw ¶ added in v0.5.3
ConflictTargetRaw sets a raw Postgres ON CONFLICT target.
Use this for expression indexes such as:
ConflictTargetRaw(`("tenant_id", COALESCE("target_node_id", '')) WHERE "active"`)
Prefer ConflictColumns, ConflictWhere, or ConflictConstraint when they can express the target.
func ConflictWhere ¶ added in v0.5.1
ConflictWhere adds a Postgres partial-index predicate to the conflict target.
func ExpectAffected ¶ added in v0.6.0
ExpectAffected requires the write to affect exactly n rows.
func Increment ¶ added in v0.6.0
Increment adds delta to column on Update or the conflict-update side of Upsert.
func NoRowsAs ¶ added in v0.6.0
NoRowsAs maps a zero-row write result to err. Use ErrConflict for explicit optimistic-concurrency guards such as content_hash or version predicates.
func SchemaName ¶ added in v0.6.0
SchemaName sets the schema for the write table. It can be combined with Table("users") or an inferred struct table name.
func SetExpr ¶ added in v0.6.0
SetExpr adds a database-side assignment with positional ? placeholders. Placeholders are rewritten for the active dialect.
func SetRaw ¶ added in v0.6.0
SetRaw adds a database-side assignment to Update or the conflict-update side of Upsert. The expression is a trusted SQL fragment and must not contain placeholders.
func TablePath ¶ added in v0.6.0
TablePath sets a schema-qualified or otherwise path-qualified table name.
For example, TablePath("app", "users") renders "app"."users" on PostgreSQL and `app`.`users` on MySQL.
func UpdateColumns ¶ added in v0.5.2
UpdateColumns limits the conflict UPDATE side of Upsert/UpsertReturning. The insert side still uses Columns/Omit plus required conflict or primary-key columns.