Add migrator
This commit is contained in:
		
							parent
							
								
									f0d514e330
								
							
						
					
					
						commit
						8eae7e4ab9
					
				
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @ -1,3 +1,4 @@ | ||||
| TODO | ||||
| documents | ||||
| coverage.txt | ||||
| _book | ||||
|  | ||||
							
								
								
									
										46
									
								
								gorm.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								gorm.go
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,46 @@ | ||||
| package gorm | ||||
| 
 | ||||
| import ( | ||||
| 	"time" | ||||
| 
 | ||||
| 	"github.com/jinzhu/gorm/logger" | ||||
| ) | ||||
| 
 | ||||
| // Config GORM config
 | ||||
| type Config struct { | ||||
| 	// Set true to use singular table name, by default, GORM will pluralize your struct's name as table name
 | ||||
| 	// Refer https://github.com/jinzhu/inflection for inflection rules
 | ||||
| 	SingularTable bool | ||||
| 
 | ||||
| 	// GORM perform single create, update, delete operations in transactions by default to ensure database data integrity
 | ||||
| 	// You can cancel it by setting `SkipDefaultTransaction` to true
 | ||||
| 	SkipDefaultTransaction bool | ||||
| 
 | ||||
| 	// Logger
 | ||||
| 	Logger logger.Interface | ||||
| 
 | ||||
| 	// NowFunc the function to be used when creating a new timestamp
 | ||||
| 	NowFunc func() time.Time | ||||
| } | ||||
| 
 | ||||
| // Model a basic GoLang struct which includes the following fields: ID, CreatedAt, UpdatedAt, DeletedAt
 | ||||
| // It may be embeded into your model or you may build your own model without it
 | ||||
| //    type User struct {
 | ||||
| //      gorm.Model
 | ||||
| //    }
 | ||||
| type Model struct { | ||||
| 	ID        uint `gorm:"primary_key"` | ||||
| 	CreatedAt time.Time | ||||
| 	UpdatedAt time.Time | ||||
| 	DeletedAt *time.Time `gorm:"index"` | ||||
| } | ||||
| 
 | ||||
| // Dialector GORM database dialector
 | ||||
| type Dialector interface { | ||||
| 	Migrator() Migrator | ||||
| } | ||||
| 
 | ||||
| // DB GORM DB definition
 | ||||
| type DB struct { | ||||
| 	*Config | ||||
| } | ||||
							
								
								
									
										5
									
								
								logger/logger.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								logger/logger.go
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,5 @@ | ||||
| package logger | ||||
| 
 | ||||
| // Interface logger interface
 | ||||
| type Interface interface { | ||||
| } | ||||
							
								
								
									
										44
									
								
								migrator.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								migrator.go
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,44 @@ | ||||
| package gorm | ||||
| 
 | ||||
| import ( | ||||
| 	"database/sql" | ||||
| ) | ||||
| 
 | ||||
| // ViewOption view option
 | ||||
| type ViewOption struct { | ||||
| 	Replace     bool | ||||
| 	CheckOption string | ||||
| 	Query       *DB | ||||
| } | ||||
| 
 | ||||
| type Migrator interface { | ||||
| 	// AutoMigrate
 | ||||
| 	AutoMigrate(dst ...interface{}) error | ||||
| 
 | ||||
| 	// Tables
 | ||||
| 	CreateTable(dst ...interface{}) error | ||||
| 	DropTable(dst ...interface{}) error | ||||
| 	HasTable(dst ...interface{}) error | ||||
| 	RenameTable(oldName, newName string) error | ||||
| 
 | ||||
| 	// Columns
 | ||||
| 	AddColumn(dst interface{}, field string) error | ||||
| 	DropColumn(dst interface{}, field string) error | ||||
| 	AlterColumn(dst interface{}, field string) error | ||||
| 	RenameColumn(dst interface{}, oldName, field string) error | ||||
| 	ColumnTypes(dst interface{}) ([]*sql.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 | ||||
| 
 | ||||
| 	// Indexes
 | ||||
| 	CreateIndex(dst interface{}, name string) error | ||||
| 	DropIndex(dst interface{}, name string) error | ||||
| 	HasIndex(dst interface{}, name string) error | ||||
| 	RenameIndex(dst interface{}, oldName, newName string) error | ||||
| } | ||||
							
								
								
									
										14
									
								
								migrator/migrator.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								migrator/migrator.go
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,14 @@ | ||||
| package migrator | ||||
| 
 | ||||
| import "github.com/jinzhu/gorm" | ||||
| 
 | ||||
| // Migrator migrator struct
 | ||||
| type Migrator struct { | ||||
| 	*Config | ||||
| } | ||||
| 
 | ||||
| // Config schema config
 | ||||
| type Config struct { | ||||
| 	CheckExistsBeforeDropping bool | ||||
| 	DB                        *gorm.DB | ||||
| } | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Jinzhu
						Jinzhu