12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- package mysql
- import (
- "gorm.io/driver/mysql"
- "gorm.io/gorm"
- "gorm.io/gorm/clause"
- "gorm.io/gorm/schema"
- )
- type myDialector struct {
- *mysql.Dialector
- }
- func (dialector myDialector) Migrator(db *gorm.DB) gorm.Migrator {
- return myMigrator{dialector.Dialector.Migrator(db).(mysql.Migrator)}
- }
- func (dialector myDialector) DataTypeOf(field *schema.Field) string {
- dataType := dialector.Dialector.DataTypeOf(field)
- switch dataType {
- case "uuid":
- return "char(36)"
- case "text":
- return "longtext"
- default:
- return dataType
- }
- }
- type myMigrator struct {
- mysql.Migrator
- }
- func (migrator myMigrator) FullDataTypeOf(field *schema.Field) clause.Expr {
- if field.DataType == "uuid" {
- field.DataType = "char(36)"
- if field.HasDefaultValue && field.DefaultValue == "uuid_generate_v4()" {
- field.HasDefaultValue = false
- field.DefaultValue = ""
- }
- } else if field.DataType == "text" {
- field.DataType = "longtext"
- }
- return migrator.Migrator.FullDataTypeOf(field)
- }
|