Documentation
¶
Overview ¶
Package schema is a Knex-style DDL builder compiled per dialect.
Index ¶
- func AlterSQL(d dialect.Dialect, name string, fn func(*Table)) ([]string, error)
- func CreateSQL(d dialect.Dialect, name string, fn func(*Table)) ([]string, error)
- type Builder
- func (b *Builder) AlterTable(ctx context.Context, name string, fn func(*Table)) error
- func (b *Builder) CreateTable(ctx context.Context, name string, fn func(*Table)) error
- func (b *Builder) CreateTableIfNotExists(ctx context.Context, name string, fn func(*Table)) error
- func (b *Builder) DB() *migro.DB
- func (b *Builder) DropTable(ctx context.Context, name string) error
- func (b *Builder) DropTableIfExists(ctx context.Context, name string) error
- func (b *Builder) HasColumn(ctx context.Context, table, column string) (bool, error)
- func (b *Builder) HasTable(ctx context.Context, name string) (bool, error)
- func (b *Builder) Raw(ctx context.Context, sql string, args ...any) error
- func (b *Builder) RenameTable(ctx context.Context, from, to string) error
- type Column
- func (c *Column) Constrained(table ...string) *Foreign
- func (c *Column) Default(v any) *Column
- func (c *Column) DefaultNow() *Column
- func (c *Column) DefaultRaw(expr string) *Column
- func (c *Column) Index() *Column
- func (c *Column) NotNull() *Column
- func (c *Column) Nullable() *Column
- func (c *Column) Primary() *Column
- func (c *Column) References(table, column string) *Foreign
- func (c *Column) Unique() *Column
- func (c *Column) Unsigned() *Column
- type Foreign
- type Index
- type Table
- func (t *Table) BigIncrements(name string) *Column
- func (t *Table) BigInteger(name string) *Column
- func (t *Table) Binary(name string) *Column
- func (t *Table) Boolean(name string) *Column
- func (t *Table) Date(name string) *Column
- func (t *Table) DateTime(name string) *Column
- func (t *Table) Decimal(name string, precision, scale int) *Column
- func (t *Table) Double(name string) *Column
- func (t *Table) DropColumn(names ...string)
- func (t *Table) DropForeign(name string)
- func (t *Table) DropIndex(name string)
- func (t *Table) DropUnique(name string)
- func (t *Table) Enum(name string, values ...string) *Column
- func (t *Table) Float(name string) *Column
- func (t *Table) Foreign(cols ...string) *Foreign
- func (t *Table) ForeignID(name string) *Column
- func (t *Table) FullText(cols ...string) *Index
- func (t *Table) Increments(name string) *Column
- func (t *Table) Index(cols ...string) *Index
- func (t *Table) Integer(name string) *Column
- func (t *Table) JSON(name string) *Column
- func (t *Table) Morphs(name string)
- func (t *Table) NullableMorphs(name string)
- func (t *Table) Primary(cols ...string)
- func (t *Table) RenameColumn(from, to string)
- func (t *Table) SmallInteger(name string) *Column
- func (t *Table) SoftDeletes()
- func (t *Table) String(name string, length ...int) *Column
- func (t *Table) Text(name string) *Column
- func (t *Table) Time(name string) *Column
- func (t *Table) Timestamp(name string) *Column
- func (t *Table) Timestamps()
- func (t *Table) UUID(name string) *Column
- func (t *Table) Unique(cols ...string) *Index
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type Builder ¶
type Builder struct {
// contains filtered or unexported fields
}
Builder executes DDL against a migro.DB (or a transaction-bound one).
func (*Builder) AlterTable ¶
func (*Builder) CreateTable ¶
func (*Builder) CreateTableIfNotExists ¶
CreateTableIfNotExists skips creation when the table exists.
func (*Builder) DropTableIfExists ¶
DropTableIfExists checks first because Oracle and SQL Server lack portable IF EXISTS.
type Column ¶
type Column struct {
// contains filtered or unexported fields
}
Column is a single column definition. Chain modifiers on it.
func (*Column) Constrained ¶
Constrained adds a foreign key to table(id). With no argument the table is inferred from the column name (user_id -> users), like Laravel. It returns the Foreign for .OnDelete()/.OnUpdate().
func (*Column) DefaultNow ¶
DefaultNow defaults to CURRENT_TIMESTAMP.
func (*Column) DefaultRaw ¶
DefaultRaw sets a raw SQL default expression. The caller must trust it.
func (*Column) References ¶
References adds a foreign key from this column to table(column) and returns it for chaining: t.Integer("user_id").Unsigned().References("users", "id").OnDelete("CASCADE").
type Foreign ¶
type Foreign struct {
// contains filtered or unexported fields
}
Foreign is a foreign key definition.
type Index ¶
type Index struct {
// contains filtered or unexported fields
}
Index is a (possibly unique) index definition.
type Table ¶
type Table struct {
// contains filtered or unexported fields
}
Table collects column and constraint definitions for CreateTable / AlterTable.
func (*Table) BigIncrements ¶
func (*Table) BigInteger ¶
func (*Table) DropForeign ¶
func (*Table) DropUnique ¶
func (*Table) ForeignID ¶
ForeignID adds an unsigned, NOT NULL bigint meant to reference a BigIncrements key (Laravel's foreignId). Chain .Constrained() to add the foreign key or .Nullable() to allow NULL.
func (*Table) FullText ¶
FullText adds a full-text index over cols, for Query.WhereFullText. MySQL gets a FULLTEXT index and PostgreSQL a GIN index on to_tsvector. SQLite, SQL Server and Oracle fail with UNSUPPORTED_FEATURE: they need a virtual table or a catalog that a column list cannot describe.
func (*Table) Increments ¶
func (*Table) Morphs ¶
Morphs adds <name>_type and <name>_id (NOT NULL) plus a composite index, for polymorphic relations.
func (*Table) NullableMorphs ¶
NullableMorphs is Morphs with nullable columns.
func (*Table) RenameColumn ¶
func (*Table) SmallInteger ¶
func (*Table) SoftDeletes ¶
func (t *Table) SoftDeletes()
SoftDeletes adds an indexed, nullable deleted_at (matches gorm.DeletedAt).
func (*Table) Timestamps ¶
func (t *Table) Timestamps()
Timestamps adds nullable created_at and updated_at.