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) 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