217 lines
9.4 KiB
Go
217 lines
9.4 KiB
Go
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)
|
||
}
|
||
}
|