Documentation
¶
Index ¶
- Constants
- Variables
- func ApplyScopes(q *query.Query, scopes ...Scope) *query.Query
- func DeleteBy(ctx context.Context, base *query.Query, scopes ...Scope) (sql.Result, 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 ManifestJSONSchema() ([]byte, error)
- 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 Upsert[T any](ctx context.Context, db *DB, v T, opts ...WriteOpt) (sql.Result, error)
- func ValidateManifest(m *Manifest) error
- type AnalysisPrecision
- type Approval
- type BoolScanPolicy
- type ColumnRef
- type ColumnSchema
- type DB
- 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) Transaction(fn func(tx Tx) error) error
- func (db *DB) TransactionContext(ctx context.Context, fn func(tx Tx) error) error
- type ErrBoolParse
- type Evidence
- type FilterSpec
- type IndexSchema
- 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 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
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 )
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 DeleteBy ¶ added in v0.4.0
DeleteBy applies scopes to base and executes a DELETE using the resulting query.
func ManifestJSONSchema ¶ added in v0.5.0
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 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 DB ¶
type DB struct {
// contains filtered or unexported fields
}
DB provides main ORM interface.
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) 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) Transaction ¶
Transaction executes fn in a transaction.
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 FilterSpec ¶ added in v0.5.0
type FilterSpec = operation.FilterSpec
type IndexSchema ¶ added in v0.5.0
type IndexSchema = migration.IndexSchema
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 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.
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.