db/schema/blueprint_test.go

217 lines
9.4 KiB
Go
Raw Permalink Normal View History

2023-04-12 15:58:25 +08:00
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)
}
}