orm

package
v0.5.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 25, 2026 License: MIT Imports: 16 Imported by: 1

Documentation

Index

Constants

View Source
const (
	ManifestVersion           = manifest.Version
	WarningManifestStale      = manifest.WarningStale
	WarningManifestUnreadable = manifest.WarningUnreadable
)
View Source
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
)
View Source
const (
	OperationSpecSelect                = operation.OperationSelect
	WarningOperationSpecPIISelected    = operation.WarningOperationPIISelected
	WarningOperationSpecRequiredFilter = operation.WarningOperationRequiredFilter
	WarningOperationSpecMissingLimit   = operation.WarningOperationMissingLimit
	WarningOperationSpecStaleManifest  = operation.WarningOperationStaleManifest
)
View Source
const (
	MySQL    = "mysql"
	Postgres = "postgres"
)

Database driver names.

View Source
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

View Source
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
)
View Source
var (
	ErrApprovalRequired       = query.ErrApprovalRequired
	ErrApprovalReasonRequired = query.ErrApprovalReasonRequired
	ErrAccessReasonRequired   = query.ErrAccessReasonRequired
	ErrBlockedOperation       = query.ErrBlockedOperation
	DefaultRiskEngine         = query.DefaultRiskEngine
)

Functions

func ApplyScopes added in v0.4.0

func ApplyScopes(q *query.Query, scopes ...Scope) *query.Query

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

func DeleteBy(ctx context.Context, base *query.Query, scopes ...Scope) (sql.Result, error)

DeleteBy applies scopes to base and executes a DELETE using the resulting query.

func GetDriver added in v0.2.0

func GetDriver(name string) (sqldriver.Driver, bool)

GetDriver retrieves a registered driver.

func Insert added in v0.3.0

func Insert[T any](ctx context.Context, db *DB, v T, opts ...WriteOpt) (sql.Result, error)

Insert inserts v into its table.

func ManifestJSONSchema added in v0.5.0

func ManifestJSONSchema() ([]byte, error)

func OperationSpecJSONSchema added in v0.5.0

func OperationSpecJSONSchema() ([]byte, error)

func RegisterDialect added in v0.2.0

func RegisterDialect(name string, d driver.Dialect)

RegisterDialect registers a SQL dialect for a driver name.

func RegisterDriver added in v0.2.0

func RegisterDriver(name string, d sqldriver.Driver)

RegisterDriver registers a database driver.

func RegisterDriverWithDialect added in v0.2.0

func RegisterDriverWithDialect(name string, d sqldriver.Driver, dialect driver.Dialect)

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 SelectAll added in v0.3.0

func SelectAll[T any](ctx context.Context, db *DB, q string, args ...any) ([]T, error)

SelectAll runs the query and scans all rows into []T.

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 SelectOne added in v0.3.0

func SelectOne[T any](ctx context.Context, db *DB, q string, args ...any) (T, error)

SelectOne runs the query and scans the first row into T.

func SelectOneBy added in v0.4.0

func SelectOneBy[T any](ctx context.Context, db *DB, base *query.Query, scopes ...Scope) (T, error)

SelectOneBy builds a scoped query and scans the first row into T.

func SelectStruct deprecated added in v0.3.0

func SelectStruct[T any](ctx context.Context, db *DB, q string, args ...any) (T, error)

Deprecated: Use SelectOne instead.

func SelectStructs deprecated added in v0.3.0

func SelectStructs[T any](ctx context.Context, db *DB, q string, args ...any) ([]T, error)

Deprecated: Use SelectAll instead.

func Update added in v0.3.0

func Update[T any](ctx context.Context, db *DB, v T, opts ...WriteOpt) (sql.Result, error)

Update updates record v.

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 Upsert added in v0.3.0

func Upsert[T any](ctx context.Context, db *DB, v T, opts ...WriteOpt) (sql.Result, error)

Upsert inserts or updates v using primary keys.

func ValidateManifest added in v0.5.0

func ValidateManifest(m *Manifest) error

Types

type AnalysisPrecision added in v0.5.0

type AnalysisPrecision = query.AnalysisPrecision

type Approval added in v0.5.0

type Approval = query.Approval

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 ColumnRef added in v0.5.0

type ColumnRef = query.ColumnRef

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 NewDB added in v0.3.1

func NewDB(sqlDB *sql.DB, dialect driver.Dialect, opts ...Option) *DB

NewDB wraps an existing sql.DB with a dialect into DB.

func Open

func Open(dsn string) (*DB, error)

Open opens a MySQL database with default pooling. Deprecated: use OpenWithDriver to specify a driver explicitly.

func OpenWithDriver added in v0.1.0

func OpenWithDriver(driverName, dsn string) (*DB, error)

OpenWithDriver opens a database with default pooling for the given driver.

func OpenWithDriverOptions added in v0.3.1

func OpenWithDriverOptions(driverName, dsn string, opts ...Option) (*DB, error)

OpenWithDriverOptions opens a database with options for the given driver.

func (*DB) Begin added in v0.0.4

func (db *DB) Begin() (Tx, error)

Begin starts a transaction for manual control.

func (*DB) BeginTx added in v0.1.2

func (db *DB) BeginTx(ctx context.Context, opts *sql.TxOptions) (Tx, error)

BeginTx starts a transaction using ctx and returns the Tx.

func (*DB) Close

func (db *DB) Close() error

Close closes underlying DB.

func (*DB) Exec added in v0.0.3

func (db *DB) Exec(q string, args ...any) (sql.Result, error)

Exec executes a raw SQL statement.

func (*DB) ExecContext added in v0.0.3

func (db *DB) ExecContext(ctx context.Context, q string, args ...any) (sql.Result, error)

ExecContext executes a raw SQL statement with a context.

func (*DB) Model

func (db *DB) Model(v any) *query.Query

Model creates a query for the struct table.

func (*DB) Query added in v0.0.3

func (db *DB) Query(q string, args ...any) (*sql.Rows, error)

Query runs a raw SQL query returning multiple rows.

func (*DB) QueryContext added in v0.0.3

func (db *DB) QueryContext(ctx context.Context, q string, args ...any) (*sql.Rows, error)

QueryContext runs Query with a context.

func (*DB) QueryRow deprecated added in v0.0.3

func (db *DB) QueryRow(q string, args ...any) *sql.Row

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

func (db *DB) QueryRowContext(ctx context.Context, q string, args ...any) *sql.Row

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

func (db *DB) QueryRowE(ctx context.Context, q string, args ...any) (*sql.Row, error)

QueryRowE validates raw SQL policy and executes a context-aware single-row query.

func (*DB) RawPlan added in v0.5.0

func (db *DB) RawPlan(ctx context.Context, q string, args ...any) (*QueryPlan, error)

RawPlan creates a plan for caller-supplied SQL without executing it.

func (*DB) RequireRawApproval added in v0.5.0

func (db *DB) RequireRawApproval(reason string) *DB

RequireRawApproval returns a shallow DB copy that can execute risky raw SQL with an explicit approval reason.

func (*DB) SQLDB added in v0.0.5

func (db *DB) SQLDB() *sql.DB

SQLDB returns the underlying *sql.DB.

func (*DB) SelectMap deprecated added in v0.3.0

func (db *DB) SelectMap(ctx context.Context, q string, args ...any) (map[string]any, error)

Deprecated: Use SelectOne with map type instead.

func (*DB) SelectMaps deprecated added in v0.3.0

func (db *DB) SelectMaps(ctx context.Context, q string, args ...any) ([]map[string]any, error)

Deprecated: Use SelectAll with map type instead.

func (*DB) Table

func (db *DB) Table(name string) *query.Query

Table creates a query for table name.

func (*DB) Transaction

func (db *DB) Transaction(fn func(tx Tx) error) error

Transaction executes fn in a transaction.

func (*DB) TransactionContext added in v0.1.2

func (db *DB) TransactionContext(ctx context.Context, fn func(tx Tx) error) error

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 Evidence added in v0.5.0

type Evidence = query.Evidence

type FilterSpec added in v0.5.0

type FilterSpec = operation.FilterSpec

type IndexSchema added in v0.5.0

type IndexSchema = migration.IndexSchema

type JoinRef added in v0.5.0

type JoinRef = query.JoinRef

type Manifest added in v0.5.0

type Manifest = manifest.Manifest

func GenerateManifest added in v0.5.0

func GenerateManifest(opts ManifestOptions) (*Manifest, error)

func LoadManifest added in v0.5.0

func LoadManifest(path string) (*Manifest, error)

type ManifestColumn added in v0.5.0

type ManifestColumn = manifest.Column

type ManifestFreshnessCheck added in v0.5.0

type ManifestFreshnessCheck = manifest.FreshnessCheck

type ManifestIndex added in v0.5.0

type ManifestIndex = manifest.Index

type ManifestOptions added in v0.5.0

type ManifestOptions = manifest.Options

type ManifestPolicy added in v0.5.0

type ManifestPolicy = manifest.Policy

type ManifestQueryExample added in v0.5.0

type ManifestQueryExample = manifest.QueryExample

type ManifestRelation added in v0.5.0

type ManifestRelation = manifest.Relation

type ManifestTable added in v0.5.0

type ManifestTable = manifest.Table

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

type Migrator = migration.Migrator

func NewMigrator added in v0.5.0

func NewMigrator(sqlText string) *Migrator

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

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 OperationOptions = operation.Options

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 OrderSpec added in v0.5.0

type OrderSpec = operation.OrderSpec

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

type QueryPlan = query.QueryPlan

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 RiskLevel added in v0.5.0

type RiskLevel = query.RiskLevel

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 Schema added in v0.5.0

type Schema = migration.Schema

type Scope added in v0.4.0

type Scope func(*query.Query) *query.Query

Scope applies reusable query mutations for advanced read and write flows.

func ComposeScopes added in v0.4.0

func ComposeScopes(scopes ...Scope) Scope

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 TableRef added in v0.5.0

type TableRef = query.TableRef

type TableSchema added in v0.5.0

type TableSchema = migration.TableSchema

type Tx

type Tx struct {
	*DB
	driver.Tx
}

Tx represents a transaction-scoped DB wrapper.

type Warning added in v0.5.0

type Warning = query.Warning

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 Columns added in v0.3.0

func Columns(cols ...string) WriteOpt

Columns limits write to specified columns.

func Omit added in v0.3.0

func Omit(cols ...string) WriteOpt

Omit excludes specified columns.

func PK added in v0.3.0

func PK(cols ...string) WriteOpt

PK specifies primary key columns for map writes.

func Returning added in v0.3.0

func Returning(cols ...string) WriteOpt

Returning specifies columns to return (Postgres only).

func Table added in v0.3.0

func Table(name string) WriteOpt

Table sets table name (required for map writes).

func WherePK added in v0.3.0

func WherePK() WriteOpt

WherePK uses primary key columns in WHERE clause.

Directories

Path Synopsis
internal

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL