Documentation ¶
Index ¶
- Variables
- func IsNotExistError(err error) bool
- func ReplaceOrAppend(attrs *[]Attr, v Attr)
- type AddAttr
- type AddCheck
- type AddColumn
- type AddForeignKey
- type AddIndex
- type AddSchema
- type AddTable
- type Attr
- type BinaryOption
- type BinaryType
- type BoolType
- type Change
- type ChangeKind
- type Changes
- func (c Changes) IndexAddColumn(name string) int
- func (c Changes) IndexAddIndex(name string) int
- func (c Changes) IndexAddTable(name string) int
- func (c Changes) IndexDropColumn(name string) int
- func (c Changes) IndexDropIndex(name string) int
- func (c Changes) IndexDropTable(name string) int
- func (c *Changes) RemoveIndex(indexes ...int)
- type Charset
- type Check
- type Clause
- type Collation
- type Column
- func NewBinaryColumn(name, typ string, opts ...BinaryOption) *Column
- func NewBoolColumn(name, typ string) *Column
- func NewColumn(name string) *Column
- func NewDecimalColumn(name, typ string, opts ...DecimalOption) *Column
- func NewEnumColumn(name string, opts ...EnumOption) *Column
- func NewFloatColumn(name, typ string, opts ...FloatOption) *Column
- func NewIntColumn(name, typ string) *Column
- func NewJSONColumn(name, typ string) *Column
- func NewNullBinaryColumn(name, typ string, opts ...BinaryOption) *Column
- func NewNullBoolColumn(name, typ string) *Column
- func NewNullColumn(name string) *Column
- func NewNullDecimalColumn(name, typ string, opts ...DecimalOption) *Column
- func NewNullEnumColumn(name string, opts ...EnumOption) *Column
- func NewNullFloatColumn(name, typ string, opts ...FloatOption) *Column
- func NewNullIntColumn(name, typ string) *Column
- func NewNullJSONColumn(name, typ string) *Column
- func NewNullSpatialColumn(name, typ string) *Column
- func NewNullStringColumn(name, typ string, opts ...StringOption) *Column
- func NewNullTimeColumn(name, typ string) *Column
- func NewNullUintColumn(name, typ string) *Column
- func NewSpatialColumn(name, typ string) *Column
- func NewStringColumn(name, typ string, opts ...StringOption) *Column
- func NewTimeColumn(name, typ string, opts ...TimeOption) *Column
- func NewUintColumn(name, typ string) *Column
- func (c *Column) AddAttrs(attrs ...Attr) *Column
- func (c *Column) SetCharset(v string) *Column
- func (c *Column) SetCollation(v string) *Column
- func (c *Column) SetComment(v string) *Column
- func (c *Column) SetDefault(x Expr) *Column
- func (c *Column) SetGeneratedExpr(x *GeneratedExpr) *Column
- func (c *Column) SetNull(b bool) *Column
- func (c *Column) SetType(t Type) *Column
- func (c *Column) UnsetCharset() *Column
- func (c *Column) UnsetCollation() *Column
- type ColumnType
- type Comment
- type DecimalOption
- type DecimalType
- type Differ
- type DropAttr
- type DropCheck
- type DropColumn
- type DropForeignKey
- type DropIndex
- type DropSchema
- type DropTable
- type EnumOption
- type EnumType
- type ExecQuerier
- type Expr
- type FloatOption
- type FloatType
- type ForeignKey
- func (f *ForeignKey) AddColumns(columns ...*Column) *ForeignKey
- func (f *ForeignKey) AddRefColumns(columns ...*Column) *ForeignKey
- func (f *ForeignKey) Column(name string) (*Column, bool)
- func (f *ForeignKey) RefColumn(name string) (*Column, bool)
- func (f *ForeignKey) SetOnDelete(o ReferenceOption) *ForeignKey
- func (f *ForeignKey) SetOnUpdate(o ReferenceOption) *ForeignKey
- func (f *ForeignKey) SetRefTable(t *Table) *ForeignKey
- func (f *ForeignKey) SetTable(t *Table) *ForeignKey
- type GeneratedExpr
- type IfExists
- type IfNotExists
- type Index
- func (i *Index) AddAttrs(attrs ...Attr) *Index
- func (i *Index) AddColumns(columns ...*Column) *Index
- func (i *Index) AddExprs(exprs ...Expr) *Index
- func (i *Index) AddParts(parts ...*IndexPart) *Index
- func (i *Index) SetComment(v string) *Index
- func (i *Index) SetName(name string) *Index
- func (i *Index) SetTable(t *Table) *Index
- func (i *Index) SetUnique(b bool) *Index
- type IndexPart
- type InspectMode
- type InspectOptions
- type InspectRealmOption
- type Inspector
- type IntegerType
- type JSONType
- type Literal
- type Locker
- type ModifyAttr
- type ModifyCheck
- type ModifyColumn
- type ModifyForeignKey
- type ModifyIndex
- type ModifySchema
- type ModifyTable
- type Normalizer
- type NotExistError
- type RawExpr
- type Realm
- type ReferenceOption
- type RenameColumn
- type RenameIndex
- type RenameTable
- type Schema
- func (s *Schema) AddAttrs(attrs ...Attr) *Schema
- func (s *Schema) AddTables(tables ...*Table) *Schema
- func (s *Schema) SetCharset(v string) *Schema
- func (s *Schema) SetCollation(v string) *Schema
- func (s *Schema) SetComment(v string) *Schema
- func (s *Schema) SetRealm(r *Realm) *Schema
- func (s *Schema) Table(name string) (*Table, bool)
- func (s *Schema) UnsetCharset() *Schema
- func (s *Schema) UnsetCollation() *Schema
- type SpatialType
- type StringOption
- type StringType
- type Table
- func (t *Table) AddAttrs(attrs ...Attr) *Table
- func (t *Table) AddChecks(checks ...*Check) *Table
- func (t *Table) AddColumns(columns ...*Column) *Table
- func (t *Table) AddForeignKeys(fks ...*ForeignKey) *Table
- func (t *Table) AddIndexes(indexes ...*Index) *Table
- func (t *Table) Column(name string) (*Column, bool)
- func (t *Table) ForeignKey(symbol string) (*ForeignKey, bool)
- func (t *Table) Index(name string) (*Index, bool)
- func (t *Table) SetCharset(v string) *Table
- func (t *Table) SetCollation(v string) *Table
- func (t *Table) SetComment(v string) *Table
- func (t *Table) SetPrimaryKey(pk *Index) *Table
- func (t *Table) SetSchema(s *Schema) *Table
- func (t *Table) UnsetCharset() *Table
- func (t *Table) UnsetCollation() *Table
- type TimeOption
- type TimeType
- type Type
- type UnlockFunc
- type UnsupportedType
Constants ¶
This section is empty.
Variables ¶
var ErrLocked = errors.New("sql/schema: lock is held by other session")
ErrLocked is returned on Lock calls which have failed to obtain the lock.
Functions ¶
func IsNotExistError ¶
IsNotExistError reports if an error is a NotExistError.
func ReplaceOrAppend ¶ added in v0.3.8
ReplaceOrAppend searches an attribute of the same type as v in the list and replaces it. Otherwise, v is appended to the list.
Types ¶
type AddCheck ¶ added in v0.2.0
type AddCheck struct {
C *Check
}
AddCheck describes a CHECK constraint creation change.
type AddForeignKey ¶
type AddForeignKey struct {
F *ForeignKey
}
AddForeignKey describes a foreign-key creation change.
type AddSchema ¶ added in v0.2.0
AddSchema describes a schema (named database) creation change. Unlike table creation, schemas and their elements are described with separate changes. For example, "AddSchema" and "AddTable"
type Attr ¶
type Attr interface {
// contains filtered or unexported methods
}
Attr represents the interface that all attributes implement.
type BinaryOption ¶ added in v0.2.0
type BinaryOption func(*BinaryType)
BinaryOption allows configuring BinaryType using functional options.
func BinarySize ¶ added in v0.2.0
func BinarySize(size int) BinaryOption
BinarySize configures the size of the binary type.
type BinaryType ¶
BinaryType represents a type that stores a binary data.
type Change ¶
type Change interface {
// contains filtered or unexported methods
}
A Change represents a schema change. The types below implement this interface and can be used for describing schema changes.
The Change interface can also be implemented outside this package as follows:
type RenameType struct { schema.Change From, To string } var t schema.Change = &RenameType{From: "old", To: "new"}
type ChangeKind ¶
type ChangeKind uint
A ChangeKind describes a change kind that can be combined using a set of flags. The zero kind is no change.
const ( // NoChange holds the zero value of a change kind. NoChange ChangeKind = 0 // ChangeAttr describes attributes change of an element. // For example, a table CHECK was added or changed. ChangeAttr ChangeKind = 1 << (iota - 1) // ChangeCharset describes character-set change. ChangeCharset // ChangeCollate describes collation/encoding change. ChangeCollate // ChangeComment describes comment chang (of any element). ChangeComment // ChangeNull describe a change to the NULL constraint. ChangeNull // ChangeType describe a column type change. ChangeType // ChangeDefault describe a column default change. ChangeDefault // ChangeGenerated describe a change to the generated expression. ChangeGenerated // ChangeUnique describes a change to the uniqueness constraint. // For example, an index was changed from non-unique to unique. ChangeUnique // ChangeParts describes a change to one or more of the index parts. // For example, index keeps its previous name, but the columns order // was changed. ChangeParts // ChangeColumn describes a change to the foreign-key (child) columns. ChangeColumn // ChangeRefColumn describes a change to the foreign-key (parent) columns. ChangeRefColumn // ChangeRefTable describes a change to the foreign-key (parent) table. ChangeRefTable // ChangeUpdateAction describes a change to the foreign-key update action. ChangeUpdateAction // ChangeDeleteAction describes a change to the foreign-key delete action. ChangeDeleteAction )
func (ChangeKind) Is ¶
func (k ChangeKind) Is(c ChangeKind) bool
Is reports whether c is match the given change kind.
type Changes ¶ added in v0.3.8
type Changes []Change
Changes is a list of changes allow for searching and mutating changes.
func (Changes) IndexAddColumn ¶ added in v0.3.8
IndexAddColumn returns the index of the first AddColumn in the changes with the given name, or -1 if there is no such change in the Changes.
func (Changes) IndexAddIndex ¶ added in v0.3.8
IndexAddIndex returns the index of the first AddIndex in the changes with the given name, or -1 if there is no such change in the Changes.
func (Changes) IndexAddTable ¶ added in v0.3.8
IndexAddTable returns the index of the first AddTable in the changes with the given name, or -1 if there is no such change in the Changes.
func (Changes) IndexDropColumn ¶ added in v0.3.8
IndexDropColumn returns the index of the first DropColumn in the changes with the given name, or -1 if there is no such change in the Changes.
func (Changes) IndexDropIndex ¶ added in v0.3.8
IndexDropIndex returns the index of the first DropIndex in the changes with the given name, or -1 if there is no such change in the Changes.
func (Changes) IndexDropTable ¶ added in v0.3.8
IndexDropTable returns the index of the first DropTable in the changes with the given name, or -1 if there is no such change in the Changes.
func (*Changes) RemoveIndex ¶ added in v0.3.8
RemoveIndex removes elements in the given indexes from the Changes.
type Charset ¶
type Charset struct {
V string
}
Charset describes a column or a table character-set setting.
type Check ¶ added in v0.2.0
type Check struct { Name string // Optional constraint name. Expr string // Actual CHECK. Attrs []Attr // Additional attributes (e.g. ENFORCED). }
Check describes a CHECK constraint.
func (*Check) AddAttrs ¶ added in v0.3.0
AddAttrs adds additional attributes to the check constraint.
type Clause ¶ added in v0.2.0
type Clause interface {
// contains filtered or unexported methods
}
Clause carries additional information that can be added to schema changes. The Clause interface can be implemented outside this package as follows:
type Authorization struct { schema.Clause UserName string } var c schema.Clause = &Authorization{UserName: "a8m"}
type Collation ¶
type Collation struct {
V string
}
Collation describes a column or a table collation setting.
type Column ¶
type Column struct { Name string Type *ColumnType Default Expr Attrs []Attr Indexes []*Index // Foreign keys that this column is // part of their child columns. ForeignKeys []*ForeignKey }
A Column represents a column definition.
func NewBinaryColumn ¶ added in v0.2.0
func NewBinaryColumn(name, typ string, opts ...BinaryOption) *Column
NewBinaryColumn creates a new BinaryType column.
func NewBoolColumn ¶ added in v0.2.0
NewBoolColumn creates a new BoolType column.
func NewDecimalColumn ¶ added in v0.2.0
func NewDecimalColumn(name, typ string, opts ...DecimalOption) *Column
NewDecimalColumn creates a new DecimalType column.
func NewEnumColumn ¶ added in v0.2.0
func NewEnumColumn(name string, opts ...EnumOption) *Column
NewEnumColumn creates a new EnumType column.
func NewFloatColumn ¶ added in v0.2.0
func NewFloatColumn(name, typ string, opts ...FloatOption) *Column
NewFloatColumn creates a new FloatType column.
func NewIntColumn ¶ added in v0.2.0
NewIntColumn creates a new IntegerType column.
func NewJSONColumn ¶ added in v0.2.0
NewJSONColumn creates a new JSONType column.
func NewNullBinaryColumn ¶ added in v0.2.0
func NewNullBinaryColumn(name, typ string, opts ...BinaryOption) *Column
NewNullBinaryColumn creates a new nullable BinaryType column.
func NewNullBoolColumn ¶ added in v0.2.0
NewNullBoolColumn creates a new nullable BoolType column.
func NewNullColumn ¶ added in v0.2.0
NewNullColumn creates a new nullable column with the given name.
func NewNullDecimalColumn ¶ added in v0.2.0
func NewNullDecimalColumn(name, typ string, opts ...DecimalOption) *Column
NewNullDecimalColumn creates a new nullable DecimalType column.
func NewNullEnumColumn ¶ added in v0.2.0
func NewNullEnumColumn(name string, opts ...EnumOption) *Column
NewNullEnumColumn creates a new nullable EnumType column.
func NewNullFloatColumn ¶ added in v0.2.0
func NewNullFloatColumn(name, typ string, opts ...FloatOption) *Column
NewNullFloatColumn creates a new nullable FloatType column.
func NewNullIntColumn ¶ added in v0.2.0
NewNullIntColumn creates a new nullable IntegerType column.
func NewNullJSONColumn ¶ added in v0.2.0
NewNullJSONColumn creates a new nullable JSONType column.
func NewNullSpatialColumn ¶ added in v0.2.0
NewNullSpatialColumn creates a new nullable SpatialType column.
func NewNullStringColumn ¶ added in v0.2.0
func NewNullStringColumn(name, typ string, opts ...StringOption) *Column
NewNullStringColumn creates a new nullable StringType column.
func NewNullTimeColumn ¶ added in v0.2.0
NewNullTimeColumn creates a new nullable TimeType column.
func NewNullUintColumn ¶ added in v0.2.0
NewNullUintColumn creates a new nullable unsigned IntegerType column.
func NewSpatialColumn ¶ added in v0.2.0
NewSpatialColumn creates a new SpatialType column.
func NewStringColumn ¶ added in v0.2.0
func NewStringColumn(name, typ string, opts ...StringOption) *Column
NewStringColumn creates a new StringType column.
func NewTimeColumn ¶ added in v0.2.0
func NewTimeColumn(name, typ string, opts ...TimeOption) *Column
NewTimeColumn creates a new TimeType column.
func NewUintColumn ¶ added in v0.2.0
NewUintColumn creates a new unsigned IntegerType column.
func (*Column) SetCharset ¶ added in v0.2.0
SetCharset sets or appends the Charset attribute to the column with the given value.
func (*Column) SetCollation ¶ added in v0.2.0
SetCollation sets or appends the Collation attribute to the column with the given value.
func (*Column) SetComment ¶ added in v0.2.0
SetComment sets or appends the Comment attribute to the column with the given value.
func (*Column) SetDefault ¶ added in v0.2.0
SetDefault configures the default of the column
func (*Column) SetGeneratedExpr ¶ added in v0.3.8
func (c *Column) SetGeneratedExpr(x *GeneratedExpr) *Column
SetGeneratedExpr sets or appends the GeneratedExpr attribute.
func (*Column) UnsetCharset ¶ added in v0.3.0
UnsetCharset unsets the Charset attribute.
func (*Column) UnsetCollation ¶ added in v0.3.0
UnsetCollation the Collation attribute.
type ColumnType ¶
ColumnType represents a column type that is implemented by the dialect.
type DecimalOption ¶ added in v0.2.0
type DecimalOption func(*DecimalType)
DecimalOption allows configuring DecimalType using functional options.
func DecimalPrecision ¶ added in v0.2.0
func DecimalPrecision(precision int) DecimalOption
DecimalPrecision configures the precision of the decimal type.
func DecimalScale ¶ added in v0.2.0
func DecimalScale(scale int) DecimalOption
DecimalScale configures the scale of the decimal type.
func DecimalUnsigned ¶ added in v0.3.4
func DecimalUnsigned(unsigned bool) DecimalOption
DecimalUnsigned configures the unsigned of the float type.
type DecimalType ¶
DecimalType represents a fixed-point type that stores exact numeric values.
type Differ ¶
type Differ interface { // RealmDiff returns a diff report for migrating a realm // (or a database) from state "from" to state "to". An error // is returned if such step is not possible. RealmDiff(from, to *Realm) ([]Change, error) // SchemaDiff returns a diff report for migrating a schema // from state "from" to state "to". An error is returned // if such step is not possible. SchemaDiff(from, to *Schema) ([]Change, error) // TableDiff returns a diff report for migrating a table // from state "from" to state "to". An error is returned // if such step is not possible. TableDiff(from, to *Table) ([]Change, error) }
Differ is the interface implemented by the different drivers for comparing and diffing schema top elements.
type DropCheck ¶ added in v0.2.0
type DropCheck struct {
C *Check
}
DropCheck describes a CHECK constraint removal change.
type DropColumn ¶
type DropColumn struct {
C *Column
}
DropColumn describes a column removal change.
type DropForeignKey ¶
type DropForeignKey struct {
F *ForeignKey
}
DropForeignKey describes a foreign-key removal change.
type DropSchema ¶ added in v0.2.0
DropSchema describes a schema (named database) removal change.
type EnumOption ¶ added in v0.2.0
type EnumOption func(*EnumType)
EnumOption allows configuring EnumType using functional options.
func EnumName ¶ added in v0.2.0
func EnumName(name string) EnumOption
EnumName configures the name of the name. This option is useful for databases like PostgreSQL that supports user-defined types for enums.
func EnumSchema ¶ added in v0.6.0
func EnumSchema(s *Schema) EnumOption
EnumSchema configures the schema of the enum.
func EnumValues ¶ added in v0.2.0
func EnumValues(values ...string) EnumOption
EnumValues configures the values of the enum.
type EnumType ¶
type EnumType struct { T string // Optional type. Values []string // Enum values. Schema *Schema // Optional schema. }
EnumType represents an enum type.
type ExecQuerier ¶
type ExecQuerier interface { QueryContext(ctx context.Context, query string, args ...any) (*sql.Rows, error) ExecContext(ctx context.Context, query string, args ...any) (sql.Result, error) }
ExecQuerier wraps the two standard sql.DB methods.
type Expr ¶
type Expr interface {
// contains filtered or unexported methods
}
Expr defines an SQL expression in schema DDL.
type FloatOption ¶ added in v0.2.0
type FloatOption func(*FloatType)
FloatOption allows configuring FloatType using functional options.
func FloatPrecision ¶ added in v0.2.0
func FloatPrecision(precision int) FloatOption
FloatPrecision configures the precision of the float type.
func FloatUnsigned ¶ added in v0.3.4
func FloatUnsigned(unsigned bool) FloatOption
FloatUnsigned configures the unsigned of the float type.
type ForeignKey ¶
type ForeignKey struct { Symbol string Table *Table Columns []*Column RefTable *Table RefColumns []*Column OnUpdate ReferenceOption OnDelete ReferenceOption }
A ForeignKey represents an index definition.
func NewForeignKey ¶ added in v0.2.0
func NewForeignKey(symbol string) *ForeignKey
NewForeignKey creates a new foreign-key with the given constraints/symbol name.
func (*ForeignKey) AddColumns ¶ added in v0.2.0
func (f *ForeignKey) AddColumns(columns ...*Column) *ForeignKey
AddColumns appends columns to the child-table columns.
func (*ForeignKey) AddRefColumns ¶ added in v0.2.0
func (f *ForeignKey) AddRefColumns(columns ...*Column) *ForeignKey
AddRefColumns appends columns to the parent-table columns.
func (*ForeignKey) Column ¶
func (f *ForeignKey) Column(name string) (*Column, bool)
Column returns the first column that matches the given name.
func (*ForeignKey) RefColumn ¶
func (f *ForeignKey) RefColumn(name string) (*Column, bool)
RefColumn returns the first referenced column that matches the given name.
func (*ForeignKey) SetOnDelete ¶ added in v0.2.0
func (f *ForeignKey) SetOnDelete(o ReferenceOption) *ForeignKey
SetOnDelete sets the ON DELETE constraint action.
func (*ForeignKey) SetOnUpdate ¶ added in v0.2.0
func (f *ForeignKey) SetOnUpdate(o ReferenceOption) *ForeignKey
SetOnUpdate sets the ON UPDATE constraint action.
func (*ForeignKey) SetRefTable ¶ added in v0.2.0
func (f *ForeignKey) SetRefTable(t *Table) *ForeignKey
SetRefTable configures the referenced/parent table.
func (*ForeignKey) SetTable ¶ added in v0.2.0
func (f *ForeignKey) SetTable(t *Table) *ForeignKey
SetTable configures the table that holds the foreign-key (child table).
type GeneratedExpr ¶ added in v0.3.8
GeneratedExpr describes the expression used for generating the value of a generated/virtual column.
type IfExists ¶ added in v0.2.0
type IfExists struct{}
IfExists represents a clause in a schema change that is commonly supported by multiple statements (e.g. DROP TABLE or DROP SCHEMA).
type IfNotExists ¶ added in v0.2.0
type IfNotExists struct{}
IfNotExists represents a clause in a schema change that is commonly supported by multiple statements (e.g. CREATE TABLE or CREATE SCHEMA).
type Index ¶
An Index represents an index definition.
func NewPrimaryKey ¶ added in v0.2.0
NewPrimaryKey creates a new primary-key index for the given columns.
func NewUniqueIndex ¶ added in v0.2.0
NewUniqueIndex creates a new unique index with the given name.
func (*Index) AddColumns ¶ added in v0.2.0
AddColumns adds the columns to index parts.
func (*Index) SetComment ¶ added in v0.3.0
SetComment sets or appends the Comment attribute to the index with the given value.
type IndexPart ¶
type IndexPart struct { // SeqNo represents the sequence number of the key part // in the index. SeqNo int // Desc indicates if the key part is stored in descending // order. All databases use ascending order as default. Desc bool X Expr C *Column Attrs []Attr }
An IndexPart represents an index part that can be either an expression or a column.
func NewColumnPart ¶ added in v0.3.2
NewColumnPart creates a new index part with the given column.
func NewExprPart ¶ added in v0.3.2
NewExprPart creates a new index part with the given expression.
func NewIndexPart ¶ added in v0.2.0
func NewIndexPart() *IndexPart
NewIndexPart creates a new index part.
func (*IndexPart) AddAttrs ¶ added in v0.2.0
AddAttrs adds and additional attributes to the index-part.
type InspectMode ¶ added in v0.3.8
type InspectMode uint
An InspectMode controls the amount and depth of information returned on inspection.
const ( // InspectSchemas enables schema inspection. InspectSchemas InspectMode = 1 << iota // InspectTables enables schema tables inspection including // all its child resources (e.g. columns or indexes). InspectTables )
func (InspectMode) Is ¶ added in v0.3.8
func (m InspectMode) Is(i InspectMode) bool
Is reports whether the given mode is enabled.
type InspectOptions ¶
type InspectOptions struct { // Mode defines the amount of information returned by InspectSchema. // If zero, InspectSchema inspects whole resources in the schema. Mode InspectMode // Tables to inspect. Empty means all tables in the schema. Tables []string // Exclude defines a list of glob patterns used to filter resources from inspection. // The syntax used by the different drivers is implemented as follows: // // t // exclude table 't'. // * // exclude all tables. // t.c // exclude column, index and foreign-key named 'c' in table 't'. // t.* // the last item defines the filtering; all resources under 't' are excluded. // *.c // the last item defines the filtering; all resourced named 'c' are excluded in all tables. // *.* // the last item defines the filtering; all resourced under all tables are excluded. // Exclude []string }
InspectOptions describes options for Inspector.
type InspectRealmOption ¶
type InspectRealmOption struct { // Mode defines the amount of information returned by InspectRealm. // If zero, InspectRealm inspects all schemas and their child resources. Mode InspectMode // Schemas to inspect. Empty means all schemas in the realm. Schemas []string // Exclude defines a list of glob patterns used to filter resources from inspection. // The syntax used by the different drivers is implemented as follows: // // s // exclude schema 't'. // * // exclude all schemas. // s.t // exclude table 't' under schema 's'. // s.* // the last item defines the filtering; all tables under 's' are excluded. // *.t // the last item defines the filtering; all tables named 't' are excluded in all schemas. // *.* // the last item defines the filtering; all tables under all schemas are excluded. // *.*.c // the last item defines the filtering; all resourced named 'c' are excluded in all tables. // *.*.* // the last item defines the filtering; all resources are excluded in all tables. // Exclude []string }
InspectRealmOption describes options for RealmInspector.
type Inspector ¶
type Inspector interface { // InspectSchema returns the schema description by its name. An empty name means the // "attached schema" (e.g. SCHEMA() in MySQL or CURRENT_SCHEMA() in PostgreSQL). // A NotExistError error is returned if the schema does not exist in the database. InspectSchema(ctx context.Context, name string, opts *InspectOptions) (*Schema, error) // InspectRealm returns the description of the connected database. InspectRealm(ctx context.Context, opts *InspectRealmOption) (*Realm, error) }
Inspector is the interface implemented by the different database drivers for inspecting schema or databases.
type IntegerType ¶
IntegerType represents an int type.
type Literal ¶
type Literal struct {
V string
}
Literal represents a basic literal expression like 1, or '1'. String literals are usually quoted with single or double quotes.
type Locker ¶ added in v0.3.8
type Locker interface { // Lock acquires a named "advisory lock", using the given timeout. Negative value means no timeout, // and the zero value means a "try lock" mode. i.e. return immediately if the lock is already taken. // The returned unlock function is used to release the advisory lock acquired by the session. // // An ErrLocked is returned if the operation failed to obtain the lock in all different timeout modes. Lock(ctx context.Context, name string, timeout time.Duration) (UnlockFunc, error) }
Locker is an interface that is optionally implemented by the different drivers for obtaining an "advisory lock" with the given name.
type ModifyAttr ¶
type ModifyAttr struct {
From, To Attr
}
ModifyAttr describes a change that modifies an element attribute.
type ModifyCheck ¶ added in v0.2.0
type ModifyCheck struct {
From, To *Check
Change ChangeKind
}
ModifyCheck describes a change that modifies a check.
type ModifyColumn ¶
type ModifyColumn struct {
From, To *Column
Change ChangeKind
}
ModifyColumn describes a change that modifies a column.
type ModifyForeignKey ¶
type ModifyForeignKey struct {
From, To *ForeignKey
Change ChangeKind
}
ModifyForeignKey describes a change that modifies a foreign-key.
type ModifyIndex ¶
type ModifyIndex struct {
From, To *Index
Change ChangeKind
}
ModifyIndex describes an index modification.
type ModifySchema ¶ added in v0.2.0
ModifySchema describes a modification change for schema attributes.
type ModifyTable ¶
ModifyTable describes a table modification change.
type Normalizer ¶ added in v0.3.6
type Normalizer interface { // NormalizeSchema returns the normal representation of a schema. NormalizeSchema(context.Context, *Schema) (*Schema, error) // NormalizeRealm returns the normal representation of a database. NormalizeRealm(context.Context, *Realm) (*Realm, error) }
Normalizer is the interface implemented by the different database drivers for "normalizing" schema objects. i.e. converting schema objects defined in natural form to their representation in the database. Thus, two schema objects are equal if their normal forms are equal.
type NotExistError ¶
type NotExistError struct {
Err error
}
A NotExistError wraps another error to retain its original text but makes it possible to the migrator to catch it.
func (NotExistError) Error ¶
func (e NotExistError) Error() string
type RawExpr ¶
type RawExpr struct {
X string
}
RawExpr represents a raw expression like "uuid()" or "current_timestamp()". Unlike literals, raw expression are usually inlined as is on migration.
type Realm ¶
A Realm or a database describes a domain of schema resources that are logically connected and can be accessed and queried in the same connection (e.g. a physical database instance).
func (*Realm) AddSchemas ¶ added in v0.6.0
AddSchemas adds and links the given schemas to the realm.
func (*Realm) SetCharset ¶ added in v0.3.4
SetCharset sets or appends the Charset attribute to the realm with the given value.
func (*Realm) SetCollation ¶ added in v0.3.4
SetCollation sets or appends the Collation attribute to the realm with the given value.
func (*Realm) UnsetCharset ¶ added in v0.3.4
UnsetCharset unsets the Charset attribute.
func (*Realm) UnsetCollation ¶ added in v0.3.4
UnsetCollation the Collation attribute.
type ReferenceOption ¶
type ReferenceOption string
ReferenceOption for constraint actions.
const ( NoAction ReferenceOption = "NO ACTION" Restrict ReferenceOption = "RESTRICT" Cascade ReferenceOption = "CASCADE" SetNull ReferenceOption = "SET NULL" SetDefault ReferenceOption = "SET DEFAULT" )
Reference options (actions) specified by ON UPDATE and ON DELETE subclauses of the FOREIGN KEY clause.
type RenameColumn ¶ added in v0.3.8
type RenameColumn struct {
From, To *Column
}
RenameColumn describes a column rename change.
type RenameIndex ¶ added in v0.3.8
type RenameIndex struct {
From, To *Index
}
RenameIndex describes an index rename change.
type RenameTable ¶ added in v0.3.8
type RenameTable struct {
From, To *Table
}
RenameTable describes a table rename change.
type Schema ¶
A Schema describes a database schema (i.e. named database).
func (*Schema) SetCharset ¶ added in v0.2.0
SetCharset sets or appends the Charset attribute to the schema with the given value.
func (*Schema) SetCollation ¶ added in v0.2.0
SetCollation sets or appends the Collation attribute to the schema with the given value.
func (*Schema) SetComment ¶ added in v0.2.0
SetComment sets or appends the Comment attribute to the schema with the given value.
func (*Schema) UnsetCharset ¶ added in v0.3.0
UnsetCharset unsets the Charset attribute.
func (*Schema) UnsetCollation ¶ added in v0.3.0
UnsetCollation the Collation attribute.
type SpatialType ¶
type SpatialType struct {
T string
}
SpatialType represents a spatial/geometric type.
type StringOption ¶ added in v0.2.0
type StringOption func(*StringType)
StringOption allows configuring StringType using functional options.
func StringSize ¶ added in v0.2.0
func StringSize(size int) StringOption
StringSize configures the size of the string type.
type Table ¶
type Table struct { Name string Schema *Schema Columns []*Column Indexes []*Index PrimaryKey *Index ForeignKeys []*ForeignKey Attrs []Attr // Attrs, constraints and options. }
A Table represents a table definition.
func (*Table) AddColumns ¶ added in v0.2.0
AddColumns appends the given columns to the table column list.
func (*Table) AddForeignKeys ¶ added in v0.2.0
func (t *Table) AddForeignKeys(fks ...*ForeignKey) *Table
AddForeignKeys appends the given foreign-keys to the table foreign-key list.
func (*Table) AddIndexes ¶ added in v0.2.0
AddIndexes appends the given indexes to the table index list.
func (*Table) ForeignKey ¶
func (t *Table) ForeignKey(symbol string) (*ForeignKey, bool)
ForeignKey returns the first foreign-key that matched the given symbol (constraint name).
func (*Table) SetCharset ¶ added in v0.2.0
SetCharset sets or appends the Charset attribute to the table with the given value.
func (*Table) SetCollation ¶ added in v0.2.0
SetCollation sets or appends the Collation attribute to the table with the given value.
func (*Table) SetComment ¶ added in v0.2.0
SetComment sets or appends the Comment attribute to the table with the given value.
func (*Table) SetPrimaryKey ¶ added in v0.2.0
SetPrimaryKey sets the primary-key of the table.
func (*Table) UnsetCharset ¶ added in v0.3.0
UnsetCharset unsets the Charset attribute.
func (*Table) UnsetCollation ¶ added in v0.3.0
UnsetCollation the Collation attribute.
type TimeOption ¶ added in v0.3.2
type TimeOption func(*TimeType)
TimeOption allows configuring TimeType using functional options.
func TimePrecision ¶ added in v0.3.2
func TimePrecision(precision int) TimeOption
TimePrecision configures the precision of the time type.
type Type ¶
type Type interface {
// contains filtered or unexported methods
}
A Type represents a database type. The types below implements this interface and can be used for describing schemas.
The Type interface can also be implemented outside this package as follows:
type SpatialType struct { schema.Type T string } var t schema.Type = &SpatialType{T: "point"}
type UnlockFunc ¶ added in v0.3.8
type UnlockFunc func() error
UnlockFunc is returned by the Locker to explicitly release the named "advisory lock".
type UnsupportedType ¶
type UnsupportedType struct {
T string
}
UnsupportedType represents a type that is not supported by the drivers.