123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- package gorm
- import (
- "gorm.io/gorm/clause"
- "gorm.io/gorm/schema"
- )
- // Migrator returns migrator
- func (db *DB) Migrator() Migrator {
- tx := db.getInstance()
- // apply scopes to migrator
- for len(tx.Statement.scopes) > 0 {
- scopes := tx.Statement.scopes
- tx.Statement.scopes = nil
- for _, scope := range scopes {
- tx = scope(tx)
- }
- }
- return tx.Dialector.Migrator(tx.Session(&Session{}))
- }
- // AutoMigrate run auto migration for given models
- func (db *DB) AutoMigrate(dst ...interface{}) error {
- return db.Migrator().AutoMigrate(dst...)
- }
- // ViewOption view option
- type ViewOption struct {
- Replace bool
- CheckOption string
- Query *DB
- }
- type ColumnType interface {
- Name() string
- DatabaseTypeName() string
- Length() (length int64, ok bool)
- DecimalSize() (precision int64, scale int64, ok bool)
- Nullable() (nullable bool, ok bool)
- }
- type Migrator interface {
- // AutoMigrate
- AutoMigrate(dst ...interface{}) error
- // Database
- CurrentDatabase() string
- FullDataTypeOf(*schema.Field) clause.Expr
- // Tables
- CreateTable(dst ...interface{}) error
- DropTable(dst ...interface{}) error
- HasTable(dst interface{}) bool
- RenameTable(oldName, newName interface{}) error
- // Columns
- AddColumn(dst interface{}, field string) error
- DropColumn(dst interface{}, field string) error
- AlterColumn(dst interface{}, field string) error
- MigrateColumn(dst interface{}, field *schema.Field, columnType ColumnType) error
- HasColumn(dst interface{}, field string) bool
- RenameColumn(dst interface{}, oldName, field string) error
- ColumnTypes(dst interface{}) ([]ColumnType, error)
- // Views
- CreateView(name string, option ViewOption) error
- DropView(name string) error
- // Constraints
- CreateConstraint(dst interface{}, name string) error
- DropConstraint(dst interface{}, name string) error
- HasConstraint(dst interface{}, name string) bool
- // Indexes
- CreateIndex(dst interface{}, name string) error
- DropIndex(dst interface{}, name string) error
- HasIndex(dst interface{}, name string) bool
- RenameIndex(dst interface{}, oldName, newName string) error
- }
|