package schema type ColumnDefinition struct { Type string // kind of column, string / int Name string // name of column ColumnOptions } type ColumnOptions struct { Length int // 字段长度 Allowed []string // enum 选项 Precision int // 日期时间精度 Total int // 小数位数 Places int // 小数精度 rename string // 重命名 useCurrent bool // CURRENT TIMESTAMP after string // Place the column "after" another column (MySQL) always bool // Used as a modifier for generatedAs() (PostgreSQL) autoIncrement bool // Set INTEGER columns as auto-increment (primary key) change bool // Change the column charset string // Specify a character set for the column (MySQL) collation string // Specify a collation for the column (MySQL/PostgreSQL/SQL Server) comment string // Add a comment to the column (MySQL) def any // Specify a "default" value for the column first bool // Place the column "first" in the table (MySQL) nullable bool // Allow NULL values to be inserted into the column storedAs string // Create a stored generated column (MySQL) unsigned bool // Set the INTEGER column as UNSIGNED (MySQL) virtualAs string // Create a virtual generated column (MySQL) unique bool // Add a unique index primary bool // Add a primary index index bool // Add an index spatialIndex bool // Add a spatial index } // VirtualAs Create a virtual generated column (MySQL) func (c *ColumnDefinition) VirtualAs(as string) *ColumnDefinition { c.virtualAs = as return c } // StoredAs Create a stored generated column (MySQL) func (c *ColumnDefinition) StoredAs(as string) *ColumnDefinition { c.storedAs = as return c } // Unsigned Set INTEGER columns as UNSIGNED (MySQL) func (c *ColumnDefinition) Unsigned() *ColumnDefinition { c.unsigned = true return c } // First Place the column "first" in the table (MySQL) func (c *ColumnDefinition) First() *ColumnDefinition { c.first = true return c } // Default Specify a "default" value for the column func (c *ColumnDefinition) Default(def any) *ColumnDefinition { c.def = def return c } // Comment Add a comment to a column (MySQL/PostgreSQL) func (c *ColumnDefinition) Comment(comm string) *ColumnDefinition { c.comment = comm return c } // Collaction Specify a collation for the column (MySQL/PostgreSQL/SQL Server) func (c *ColumnDefinition) Collaction(coll string) *ColumnDefinition { c.collation = coll return c } // Charset Specify a character set for the column (MySQL) func (c *ColumnDefinition) Charset(chars string) *ColumnDefinition { c.charset = chars return c } // AutoIncrement set INTEGER columns as auto-increment (primary key) func (c *ColumnDefinition) AutoIncrement() *ColumnDefinition { c.autoIncrement = true return c } // After place the column "after" another column (MySQL) func (c *ColumnDefinition) After(column string) *ColumnDefinition { c.after = column return c } // Nullable makes a column nullable func (c *ColumnDefinition) Nullable() *ColumnDefinition { c.nullable = true return c } // 修改字段, 默认新增 func (c *ColumnDefinition) Change(param ...string) *ColumnDefinition { if len(param) > 0 && param[0] != "" { c.rename = param[0] } c.change = true return c } // 时间戳 func (c *ColumnDefinition) UseCurrent() *ColumnDefinition { c.useCurrent = true return c }