package schema import ( "git.fsdpf.net/go/db" "testing" ) // func TestMysqlToSql(t *testing.T) { // bp := NewBlueprint("users") // // bp.BigIncrements("id") // 等同于自增 UNSIGNED BIGINT(主键)列 // // bp.BigInteger("votes").Default("0") // 等同于 BIGINT 类型列 // // bp.Binary("data") // 等同于 BLOB 类型列 // // bp.Boolean("confirmed") // 等同于 BOOLEAN 类型列 // // bp.Char("name", 4) // 等同于 CHAR 类型列 // // bp.Date("created_at") // 等同于 DATE 类型列 // // bp.DateTime("created_at") // 等同于 DATETIME 类型列 // // bp.Decimal("amount", 5, 2) // 等同于 DECIMAL 类型列,带精度和范围 // // bp.Enum("level", []string{"easy", "hard"}) // 等同于 ENUM 类型列 // bp.Increments("id").Change("pid") // 等同于自增 UNSIGNED INTEGER (主键)类型列 // // bp.Integer("votes").AutoIncrement() // 等同于 INTEGER 类型列 // bp.Json("options").Charset("uft8").Change() // 等同于 JSON 类型列 // // bp.SmallInteger("votes").Comment("等同于 SMALLINT 类型列") // 等同于 SMALLINT 类型列 // // bp.String("name", 100).Nullable() // 等同于 VARCHAR 类型列,带一个可选长度参数 // // bp.Text("description").After("column") // 等同于 TEXT 类型列 // // bp.Time("sunrise").First() // 等同于 TIME 类型列 // bp.Timestamp("added_on").UseCurrent().Default(db.Raw("ON UPDATE CURRENT_TIMESTAMP")) // 等同于 TIMESTAMP 类型列 // // bp.TinyInteger("numbers") // 等同于 TINYINT 类型列 // // bp.UnsignedBigInteger("votes") // 等同于无符号的 BIGINT 类型列 // // bp.UnsignedDecimal("amount", 8, 2) // 等同于 UNSIGNED DECIMAL 类型列,带有总位数和精度 // // bp.UnsignedInteger("votes") // 等同于无符号的 INTEGER 类型列 // // bp.UnsignedSmallInteger("votes") // 等同于无符号的 SMALLINT 类型列 // // bp.UnsignedTinyInteger("votes") // 等同于无符号的 TINYINT 类型列 // // bp.Uuid("id").Default("00000000-0000-0000-0000-000000000000") // 等同于 UUID 类型列 // // bp.Year("birth_year") // bp.DropColumn("name", "name_a") // 等同于 YEAR 类型列 // t.Log(bp.ToSql(mysql.Connection, &MysqlGrammar{})) // } // func TestSqliteToSql(t *testing.T) { // bp := NewBlueprint("users") // bp.charset = "utf8mb4" // bp.collation = "utf8mb4_general_ci" // // bp.BigIncrements("id").Comment("ID") // // bp.Boolean("enabled").Default("1").Comment("是否有效") // bp.Char("created_user", 36).Default("22000000-0000-0000-0000-000000000001").Comment("创建者").Change() // bp.Char("owned_user", 36).Default("11000000-0000-0000-0000-000000000000").Comment("拥有者").Change() // // bp.Timestamp("created_at").UseCurrent().Comment("创建时间") // // bp.Timestamp("updated_at").Default(db.Raw("CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP")).Comment("更新时间") // bp.DateTime("deleted_at").Nullable().Comment("删除时间") // bp.String("name_a", 50).Default("").Comment("姓名").Change("c_name") // bp.DropColumn("name", "name_a") // t.Log(bp.ToSql(sqlite3.Connection, &Sqlite3Grammar{})) // } // Mysql 创建表 func TestMysqlCreateTableToSql(t *testing.T) { table := NewBlueprint("users") table.Create() table.Charset("utf8mb4") table.BigIncrements("id").Comment("ID") table.Boolean("enabled").Default("1").Comment("是否有效") table.Char("created_user", 36).Default("00000000-0000-0000-0000-000000000000").Comment("创建者") table.Char("owned_user", 36).Default("00000000-0000-0000-0000-000000000000").Comment("拥有者") table.Timestamp("created_at").UseCurrent().Comment("创建时间") table.Timestamp("updated_at").UseCurrent().Default(db.Raw("ON UPDATE CURRENT_TIMESTAMP")).Comment("更新时间") table.DateTime("deleted_at").Nullable().Comment("删除时间") for _, sql := range table.ToSql(mysql.Connection, &MysqlGrammar{}) { t.Logf("-- %s -- %s \n", "mysql", sql) } } // SQLite 创建表 func TestSqliteCreateTableToSql(t *testing.T) { table := NewBlueprint("users") table.Create() table.Charset("utf8mb4") table.BigIncrements("id").Comment("ID") table.Boolean("enabled").Default("1").Comment("是否有效") table.Char("created_user", 36).Default("00000000-0000-0000-0000-000000000000").Comment("创建者") table.Char("owned_user", 36).Default("00000000-0000-0000-0000-000000000000").Comment("拥有者") table.Timestamp("created_at").UseCurrent().Comment("创建时间") table.Timestamp("updated_at").UseCurrent().Default(db.Raw("ON UPDATE CURRENT_TIMESTAMP")).Comment("更新时间") table.DateTime("deleted_at").Nullable().Comment("删除时间") for _, sql := range table.ToSql(sqlite3.Connection, &Sqlite3Grammar{}) { t.Logf("-- %s -- %s \n", "sqlite", sql) } } //Mysql 修改表, 添加字段 func TestMysqlAddColumnToSql(t *testing.T) { table := NewBlueprint(test_table) table.String("name", 50).Nullable().Comment("用户名") table.TinyInteger("age").Nullable().Comment("年龄") for _, sql := range table.ToSql(mysql.Connection, &MysqlGrammar{}) { t.Logf("-- %s -- %s \n", "mysql", sql) } } // Sqlite 修改表, 添加字段 func TestSqliteAddColumnToSql(t *testing.T) { table := NewBlueprint(test_table) table.String("name", 50).Nullable().Comment("用户名") table.TinyInteger("age").Nullable().Comment("年龄") for _, sql := range table.ToSql(sqlite3.Connection, &Sqlite3Grammar{}) { t.Logf("-- %s -- %s \n", "sqlite", sql) } } // Mysql 修改表, 添加/编辑字段 func TestMysqlChangeColumnToSql(t *testing.T) { table := NewBlueprint(test_table) table.String("name", 100).Nullable().Comment("用户名").Change() table.SmallInteger("age").Nullable().Comment("年龄").Change() table.String("nickname", 100).Nullable().Comment("昵称") for _, sql := range table.ToSql(mysql.Connection, &MysqlGrammar{}) { t.Logf("-- %s -- %s \n", "mysql", sql) } } // Sqlite 修改表, 添加/编辑字段 func TestSqliteChangeColumnToSql(t *testing.T) { table := NewBlueprint(test_table) table.String("name", 100).Nullable().Comment("用户名").Change() table.SmallInteger("age").Nullable().Comment("年龄").Change() table.String("nickname", 100).Nullable().Comment("昵称") for _, sql := range table.ToSql(sqlite3.Connection, &Sqlite3Grammar{}) { t.Logf("-- %s -- %s \n", "sqlite", sql) } } // Mysql 修改表, 添加/编辑/删除字段 func TestMysqlDropColumnToSql(t *testing.T) { table := NewBlueprint(test_table) table.String("username", 100).Default("").Comment("--用户名--").Change("name") table.Boolean("is_vip").Default(1).Comment("是否VIP") table.DropColumn("age") for _, sql := range table.ToSql(mysql.Connection, &MysqlGrammar{}) { t.Logf("-- %s -- %s \n", "mysql", sql) } } // Sqlite 修改表, 添加/编辑/删除字段 func TestSqliteDropColumnToSql(t *testing.T) { table := NewBlueprint(test_table) table.String("username", 100).Default("").Comment("--用户名--").Change("name") table.Boolean("is_vip").Default(1).Comment("是否VIP") table.DropColumn("age") for _, sql := range table.ToSql(sqlite3.Connection, &Sqlite3Grammar{}) { t.Logf("-- %s -- %s \n", "sqlite", sql) } } // Mysql 重命名表 func TestMysqlRenameToSql(t *testing.T) { table := NewBlueprint(test_table) table.Rename(test_table + "_alias") for _, sql := range table.ToSql(mysql.Connection, &MysqlGrammar{}) { t.Logf("-- %s -- %s \n", "mysql", sql) } } // Sqlite 重命名表 func TestSqliteRenameToSql(t *testing.T) { table := NewBlueprint(test_table) table.Rename(test_table + "_alias") for _, sql := range table.ToSql(sqlite3.Connection, &Sqlite3Grammar{}) { t.Logf("-- %s -- %s \n", "sqlite", sql) } } // Mysql 删除表 func TestMysqlDropTableToSql(t *testing.T) { table := NewBlueprint(test_table + "_alias") table.Drop() for _, sql := range table.ToSql(mysql.Connection, &MysqlGrammar{}) { t.Logf("-- %s -- %s \n", "mysql", sql) } } // Sqlite 删除表 func TestSqliteDropTableToSql(t *testing.T) { table := NewBlueprint(test_table + "_alias") table.Drop() for _, sql := range table.ToSql(sqlite3.Connection, &Sqlite3Grammar{}) { t.Logf("-- %s -- %s \n", "sqlite", sql) } }