Documentation
¶
Index ¶
- func Down(steps int) error
- func Register(migration *Migration)
- func Up() error
- type Column
- type ColumnBuilder
- func (c *ColumnBuilder) BigInteger() *ColumnBuilder
- func (c *ColumnBuilder) Boolean() *ColumnBuilder
- func (c *ColumnBuilder) Date() *ColumnBuilder
- func (c *ColumnBuilder) Default(v interface{}) *ColumnBuilder
- func (c *ColumnBuilder) Integer() *ColumnBuilder
- func (c *ColumnBuilder) JSON() *ColumnBuilder
- func (c *ColumnBuilder) JSONB() *ColumnBuilder
- func (c *ColumnBuilder) Nullable() *ColumnBuilder
- func (c *ColumnBuilder) String(length ...int) *ColumnBuilder
- func (c *ColumnBuilder) Text() *ColumnBuilder
- func (c *ColumnBuilder) Timestamp() *ColumnBuilder
- func (c *ColumnBuilder) ToSQL() string
- func (c *ColumnBuilder) Type(t string) *ColumnBuilder
- func (c *ColumnBuilder) UUID() *ColumnBuilder
- func (c *ColumnBuilder) Unique() *ColumnBuilder
- type IndexBuilder
- func (b *IndexBuilder) Columns(cols ...string) *IndexBuilder
- func (b *IndexBuilder) IfNotExists() *IndexBuilder
- func (b *IndexBuilder) Include(cols ...string) *IndexBuilder
- func (b *IndexBuilder) ToSQL() string
- func (b *IndexBuilder) Unique() *IndexBuilder
- func (b *IndexBuilder) Using(indexType string) *IndexBuilder
- func (b *IndexBuilder) Where(condition string) *IndexBuilder
- type Migration
- type MigrationRegistry
- type MigrationStatus
- type Migrator
- func (m *Migrator) AddColumn(table, column string, fn func(*ColumnBuilder)) error
- func (m *Migrator) CreateIndex(name, table string, fn func(*IndexBuilder)) error
- func (m *Migrator) CreateTable(name string, fn func(*TableBuilder)) error
- func (m *Migrator) Down(steps int) error
- func (m *Migrator) DropColumn(table, column string) error
- func (m *Migrator) DropIndex(name string, table ...string) error
- func (m *Migrator) DropTable(name string) error
- func (m *Migrator) Fresh() error
- func (m *Migrator) Index(table string, columns ...string) error
- func (m *Migrator) Raw(sql string) error
- func (m *Migrator) SetMigrationsPath(path string)
- func (m *Migrator) Status() ([]MigrationStatus, error)
- func (m *Migrator) UniqueIndex(table string, columns ...string) error
- func (m *Migrator) Up() error
- type TableBuilder
- func (t *TableBuilder) BigInteger(name string) *TableBuilder
- func (t *TableBuilder) Boolean(name string) *TableBuilder
- func (t *TableBuilder) Date(name string) *TableBuilder
- func (t *TableBuilder) Decimal(name string, precision, scale int) *TableBuilder
- func (t *TableBuilder) Default(value interface{}) *TableBuilder
- func (t *TableBuilder) ID() *TableBuilder
- func (t *TableBuilder) IP(name string) *TableBuilder
- func (t *TableBuilder) Integer(name string) *TableBuilder
- func (t *TableBuilder) JSON(name string) *TableBuilder
- func (t *TableBuilder) JSONB(name string) *TableBuilder
- func (t *TableBuilder) Nullable() *TableBuilder
- func (t *TableBuilder) Primary() *TableBuilder
- func (t *TableBuilder) PrimaryKey(columns ...string) *TableBuilder
- func (t *TableBuilder) SoftDeletes() *TableBuilder
- func (t *TableBuilder) String(name string, length ...int) *TableBuilder
- func (t *TableBuilder) Text(name string) *TableBuilder
- func (t *TableBuilder) Timestamp(name string) *TableBuilder
- func (t *TableBuilder) Timestamps() *TableBuilder
- func (t *TableBuilder) ToSQL() string
- func (t *TableBuilder) UUID(name string) *TableBuilder
- func (t *TableBuilder) UUIDPrimary() *TableBuilder
- func (t *TableBuilder) Unique() *TableBuilder
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type Column ¶
type Column struct {
Name string
Type string
Length int
Precision int // For decimal types
Scale int // For decimal types
Nullable bool
Default interface{}
Unique bool
PrimaryKey bool
AutoIncrement bool
}
Column represents a table column definition
type ColumnBuilder ¶ added in v0.8.0
type ColumnBuilder struct {
// contains filtered or unexported fields
}
ColumnBuilder provides a fluent API for defining a single column
func NewColumnBuilder ¶ added in v0.8.0
func NewColumnBuilder(name, driver string) *ColumnBuilder
NewColumnBuilder creates a new ColumnBuilder for the given column name and driver
func (*ColumnBuilder) BigInteger ¶ added in v0.8.0
func (c *ColumnBuilder) BigInteger() *ColumnBuilder
BigInteger sets the column type to BIGINT
func (*ColumnBuilder) Boolean ¶ added in v0.8.0
func (c *ColumnBuilder) Boolean() *ColumnBuilder
Boolean sets the column type to BOOLEAN
func (*ColumnBuilder) Date ¶ added in v0.8.0
func (c *ColumnBuilder) Date() *ColumnBuilder
Date sets the column type to DATE
func (*ColumnBuilder) Default ¶ added in v0.8.0
func (c *ColumnBuilder) Default(v interface{}) *ColumnBuilder
Default sets a default value for the column
func (*ColumnBuilder) Integer ¶ added in v0.8.0
func (c *ColumnBuilder) Integer() *ColumnBuilder
Integer sets the column type to INTEGER
func (*ColumnBuilder) JSON ¶ added in v0.8.0
func (c *ColumnBuilder) JSON() *ColumnBuilder
JSON sets the column type to JSON
func (*ColumnBuilder) JSONB ¶ added in v0.8.0
func (c *ColumnBuilder) JSONB() *ColumnBuilder
JSONB sets the column type to JSONB (binary JSON)
func (*ColumnBuilder) Nullable ¶ added in v0.8.0
func (c *ColumnBuilder) Nullable() *ColumnBuilder
Nullable marks the column as allowing NULL values
func (*ColumnBuilder) String ¶ added in v0.8.0
func (c *ColumnBuilder) String(length ...int) *ColumnBuilder
String sets the column type to VARCHAR with optional length (default 255)
func (*ColumnBuilder) Text ¶ added in v0.8.0
func (c *ColumnBuilder) Text() *ColumnBuilder
Text sets the column type to TEXT
func (*ColumnBuilder) Timestamp ¶ added in v0.8.0
func (c *ColumnBuilder) Timestamp() *ColumnBuilder
Timestamp sets the column type to TIMESTAMP
func (*ColumnBuilder) ToSQL ¶ added in v0.8.0
func (c *ColumnBuilder) ToSQL() string
ToSQL generates the column definition SQL fragment
func (*ColumnBuilder) Type ¶ added in v0.8.0
func (c *ColumnBuilder) Type(t string) *ColumnBuilder
Type sets the column type (string, integer, text, boolean, timestamp, date, biginteger, uuid)
func (*ColumnBuilder) UUID ¶ added in v0.8.0
func (c *ColumnBuilder) UUID() *ColumnBuilder
UUID sets the column type to UUID
func (*ColumnBuilder) Unique ¶ added in v0.8.0
func (c *ColumnBuilder) Unique() *ColumnBuilder
Unique marks the column as having a unique constraint
type IndexBuilder ¶ added in v0.8.0
type IndexBuilder struct {
// contains filtered or unexported fields
}
IndexBuilder provides a fluent API for creating database indexes
func (*IndexBuilder) Columns ¶ added in v0.8.0
func (b *IndexBuilder) Columns(cols ...string) *IndexBuilder
Columns sets the columns to index
func (*IndexBuilder) IfNotExists ¶ added in v0.8.0
func (b *IndexBuilder) IfNotExists() *IndexBuilder
IfNotExists adds IF NOT EXISTS clause
func (*IndexBuilder) Include ¶ added in v0.8.0
func (b *IndexBuilder) Include(cols ...string) *IndexBuilder
Include adds covering index columns (PostgreSQL 11+ only) These columns are stored in the index but not used for searching Example: Include("name", "email") for index-only scans
func (*IndexBuilder) ToSQL ¶ added in v0.8.0
func (b *IndexBuilder) ToSQL() string
ToSQL generates driver-specific CREATE INDEX SQL
func (*IndexBuilder) Unique ¶ added in v0.8.0
func (b *IndexBuilder) Unique() *IndexBuilder
Unique marks the index as unique
func (*IndexBuilder) Using ¶ added in v0.8.0
func (b *IndexBuilder) Using(indexType string) *IndexBuilder
Using sets the index type (PostgreSQL only) Supported: btree (default), hash, gin, gist, brin
func (*IndexBuilder) Where ¶ added in v0.8.0
func (b *IndexBuilder) Where(condition string) *IndexBuilder
Where adds a partial index condition (PostgreSQL, SQLite) Example: Where("deleted_at IS NULL")
type Migration ¶
type Migration struct {
Version string
Description string
Up func(*Migrator) error
Down func(*Migrator) error
}
Migration represents a database schema change
type MigrationRegistry ¶
type MigrationRegistry struct {
// contains filtered or unexported fields
}
MigrationRegistry is a global registry for all migrations
func (*MigrationRegistry) All ¶
func (r *MigrationRegistry) All() []Migration
All returns all registered migrations sorted by version
type MigrationStatus ¶
type MigrationStatus struct {
Version string
State string // "Applied", "Pending", "Failed"
Batch int
ExecutedAt *string
}
MigrationStatus represents the status of a single migration
func Status ¶
func Status() ([]MigrationStatus, error)
Status returns migration status using the default ORM connection
type Migrator ¶
type Migrator struct {
// contains filtered or unexported fields
}
Migrator handles migration execution for a specific database connection
func NewMigrator ¶
NewMigrator creates a new Migrator instance
func (*Migrator) AddColumn ¶ added in v0.8.0
func (m *Migrator) AddColumn(table, column string, fn func(*ColumnBuilder)) error
AddColumn adds a column to an existing table
func (*Migrator) CreateIndex ¶ added in v0.8.0
func (m *Migrator) CreateIndex(name, table string, fn func(*IndexBuilder)) error
CreateIndex creates a new index using the fluent IndexBuilder API
func (*Migrator) CreateTable ¶
func (m *Migrator) CreateTable(name string, fn func(*TableBuilder)) error
CreateTable creates a new database table using the fluent TableBuilder API
func (*Migrator) DropColumn ¶ added in v0.8.0
DropColumn removes a column from a table Note: SQLite does not support DROP COLUMN prior to version 3.35.0
func (*Migrator) Index ¶ added in v0.8.0
Index is a shorthand for creating a simple index For more options, use CreateIndex with IndexBuilder
func (*Migrator) Raw ¶
Raw executes arbitrary SQL.
WARNING: This method executes raw SQL directly. The caller is responsible for preventing SQL injection by using parameterized queries with placeholder arguments. Never concatenate user input directly into the sql string.
func (*Migrator) SetMigrationsPath ¶
SetMigrationsPath sets the path to migration files
func (*Migrator) Status ¶
func (m *Migrator) Status() ([]MigrationStatus, error)
Status returns the status of all migrations
func (*Migrator) UniqueIndex ¶ added in v0.8.0
UniqueIndex is a shorthand for creating a unique index
type TableBuilder ¶
type TableBuilder struct {
// contains filtered or unexported fields
}
TableBuilder provides a fluent API for defining database tables
func (*TableBuilder) BigInteger ¶ added in v0.6.0
func (t *TableBuilder) BigInteger(name string) *TableBuilder
BigInteger adds a BIGINT column
func (*TableBuilder) Boolean ¶
func (t *TableBuilder) Boolean(name string) *TableBuilder
Boolean adds a BOOLEAN column
func (*TableBuilder) Date ¶ added in v0.6.0
func (t *TableBuilder) Date(name string) *TableBuilder
Date adds a DATE column
func (*TableBuilder) Decimal ¶ added in v0.8.0
func (t *TableBuilder) Decimal(name string, precision, scale int) *TableBuilder
Decimal creates a numeric column with precision and scale e.g., Decimal("price", 10, 2) = numeric(10,2)
func (*TableBuilder) Default ¶
func (t *TableBuilder) Default(value interface{}) *TableBuilder
Default sets a default value for the previous column
func (*TableBuilder) ID ¶
func (t *TableBuilder) ID() *TableBuilder
ID adds an auto-increment primary key column named 'id'
func (*TableBuilder) IP ¶ added in v0.8.0
func (t *TableBuilder) IP(name string) *TableBuilder
IP creates a column for IP addresses (varchar 45, supports IPv4 and IPv6)
func (*TableBuilder) Integer ¶
func (t *TableBuilder) Integer(name string) *TableBuilder
Integer adds an INTEGER column
func (*TableBuilder) JSON ¶ added in v0.8.0
func (t *TableBuilder) JSON(name string) *TableBuilder
JSON adds a JSON column For PostgreSQL: JSON type (text-based, validates JSON on insert) For MySQL: JSON type (binary storage) For SQLite: TEXT (no native JSON type)
func (*TableBuilder) JSONB ¶ added in v0.8.0
func (t *TableBuilder) JSONB(name string) *TableBuilder
JSONB adds a JSONB column (binary JSON) For PostgreSQL: JSONB type (binary storage, indexable, faster queries) For MySQL: JSON type (MySQL has no separate JSONB) For SQLite: TEXT (no native JSON type)
func (*TableBuilder) Nullable ¶
func (t *TableBuilder) Nullable() *TableBuilder
Nullable allows NULL values for the previous column
func (*TableBuilder) Primary ¶ added in v0.8.0
func (t *TableBuilder) Primary() *TableBuilder
Primary makes the current column a primary key (for 1:1 relations where FK is the PK)
func (*TableBuilder) PrimaryKey ¶ added in v0.8.0
func (t *TableBuilder) PrimaryKey(columns ...string) *TableBuilder
PrimaryKey sets a composite primary key (for junction tables without auto-increment ID)
func (*TableBuilder) SoftDeletes ¶ added in v0.5.0
func (t *TableBuilder) SoftDeletes() *TableBuilder
SoftDeletes adds a deleted_at column for soft delete support
func (*TableBuilder) String ¶
func (t *TableBuilder) String(name string, length ...int) *TableBuilder
String adds a VARCHAR column
func (*TableBuilder) Text ¶ added in v0.6.0
func (t *TableBuilder) Text(name string) *TableBuilder
Text adds a TEXT column (unlimited length)
func (*TableBuilder) Timestamp ¶ added in v0.6.0
func (t *TableBuilder) Timestamp(name string) *TableBuilder
Timestamp adds a single TIMESTAMP column
func (*TableBuilder) Timestamps ¶
func (t *TableBuilder) Timestamps() *TableBuilder
Timestamps adds created_at and updated_at columns
func (*TableBuilder) ToSQL ¶
func (t *TableBuilder) ToSQL() string
ToSQL generates driver-specific CREATE TABLE SQL
func (*TableBuilder) UUID ¶ added in v0.8.0
func (t *TableBuilder) UUID(name string) *TableBuilder
UUID adds a UUID column
func (*TableBuilder) UUIDPrimary ¶ added in v0.8.0
func (t *TableBuilder) UUIDPrimary() *TableBuilder
UUIDPrimary adds a UUID primary key column named 'id' with auto-generation For PostgreSQL: Uses gen_random_uuid() (built-in since v13) or uuid_generate_v4() (requires pgcrypto) For MySQL: Uses UUID() function For SQLite: Requires application-level UUID generation
func (*TableBuilder) Unique ¶
func (t *TableBuilder) Unique() *TableBuilder
Unique marks the previous column as unique