mirror of
https://github.com/zhufuyi/sponge.git
synced 2025-10-06 01:07:08 +08:00
feat: get table info
This commit is contained in:
@@ -11,10 +11,8 @@ import (
|
||||
)
|
||||
|
||||
func TestParseSQL(t *testing.T) {
|
||||
sqls := []string{`create table user
|
||||
(
|
||||
id bigint unsigned auto_increment
|
||||
primary key,
|
||||
sqls := []string{`create table user (
|
||||
id bigint unsigned auto_increment,
|
||||
created_at datetime null,
|
||||
updated_at datetime null,
|
||||
deleted_at datetime null,
|
||||
@@ -26,34 +24,32 @@ func TestParseSQL(t *testing.T) {
|
||||
gender tinyint not null comment '性别,1:男,2:女,3:未知',
|
||||
status tinyint not null comment '账号状态,1:未激活,2:已激活,3:封禁',
|
||||
login_state tinyint not null comment '登录状态,1:未登录,2:已登录',
|
||||
primary key (id),
|
||||
constraint user_email_uindex
|
||||
unique (email)
|
||||
);`,
|
||||
|
||||
`create table user_order
|
||||
(
|
||||
id varchar(36) not null comment '订单id'
|
||||
primary key,
|
||||
`create table user_order (
|
||||
id varchar(36) not null comment '订单id',
|
||||
product_id varchar(36) not null comment '商品id',
|
||||
user_id bigint unsigned not null comment '用户id',
|
||||
status smallint null comment '0:未支付, 1:已支付, 2:已取消',
|
||||
created_at timestamp null comment '创建时间',
|
||||
updated_at timestamp null comment '更新时间'
|
||||
updated_at timestamp null comment '更新时间',
|
||||
primary key (id)
|
||||
);`,
|
||||
|
||||
`create table user_str
|
||||
(
|
||||
user_id varchar(36) not null comment '用户id'
|
||||
primary key,
|
||||
`create table user_str (
|
||||
user_id varchar(36) not null comment '用户id',
|
||||
username varchar(50) not null comment '用户名',
|
||||
email varchar(100) not null comment '邮箱',
|
||||
created_at datetime null comment '创建时间',
|
||||
primary key (user_id),
|
||||
constraint email
|
||||
unique (email)
|
||||
);`,
|
||||
|
||||
`create table user_no_primary
|
||||
(
|
||||
`create table user_no_primary (
|
||||
username varchar(50) not null comment '用户名',
|
||||
email varchar(100) not null comment '邮箱',
|
||||
user_id varchar(36) not null comment '用户id',
|
||||
@@ -66,6 +62,9 @@ func TestParseSQL(t *testing.T) {
|
||||
codes, err := ParseSQL(sql, WithJSONTag(0), WithEmbed())
|
||||
assert.Nil(t, err)
|
||||
for k, v := range codes {
|
||||
if k == CodeTypeTableInfo {
|
||||
continue
|
||||
}
|
||||
assert.NotEmpty(t, k)
|
||||
assert.NotEmpty(t, v)
|
||||
}
|
||||
@@ -74,6 +73,9 @@ func TestParseSQL(t *testing.T) {
|
||||
codes, err = ParseSQL(sql, WithJSONTag(1), WithWebProto(), WithDBDriver(DBDriverMysql))
|
||||
assert.Nil(t, err)
|
||||
for k, v := range codes {
|
||||
if k == CodeTypeTableInfo {
|
||||
continue
|
||||
}
|
||||
assert.NotEmpty(t, k)
|
||||
assert.NotEmpty(t, v)
|
||||
}
|
||||
@@ -82,6 +84,9 @@ func TestParseSQL(t *testing.T) {
|
||||
codes, err = ParseSQL(sql, WithJSONTag(0), WithDBDriver(DBDriverPostgresql))
|
||||
assert.Nil(t, err)
|
||||
for k, v := range codes {
|
||||
if k == CodeTypeTableInfo {
|
||||
continue
|
||||
}
|
||||
assert.NotEmpty(t, k)
|
||||
assert.NotEmpty(t, v)
|
||||
}
|
||||
@@ -90,38 +95,70 @@ func TestParseSQL(t *testing.T) {
|
||||
codes, err = ParseSQL(sql, WithJSONTag(0), WithDBDriver(DBDriverSqlite))
|
||||
assert.Nil(t, err)
|
||||
for k, v := range codes {
|
||||
if k == CodeTypeTableInfo {
|
||||
continue
|
||||
}
|
||||
assert.NotEmpty(t, k)
|
||||
assert.NotEmpty(t, v)
|
||||
}
|
||||
//printCode(codes)
|
||||
|
||||
codes, err = ParseSQL(sql, WithDBDriver(DBDriverSqlite), WithCustomTemplate())
|
||||
assert.Nil(t, err)
|
||||
for k, v := range codes {
|
||||
if k == CodeTypeTableInfo {
|
||||
assert.NotEmpty(t, k)
|
||||
assert.NotEmpty(t, v)
|
||||
break
|
||||
}
|
||||
}
|
||||
//printCode(codes)
|
||||
}
|
||||
}
|
||||
|
||||
func TestParseSqlWithTablePrefix(t *testing.T) {
|
||||
sql := `CREATE TABLE t_person_info (
|
||||
id BIGINT(11) PRIMARY KEY AUTO_INCREMENT NOT NULL COMMENT 'id',
|
||||
id BIGINT(11) AUTO_INCREMENT NOT NULL COMMENT 'id',
|
||||
age INT(11) unsigned NULL,
|
||||
name VARCHAR(30) NOT NULL DEFAULT 'default_name' COMMENT 'name',
|
||||
created_at datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
login_at datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
gender INT(8) NULL,
|
||||
num INT(11) DEFAULT 3 NULL,
|
||||
comment TEXT
|
||||
comment TEXT,
|
||||
PRIMARY KEY (id)
|
||||
) COMMENT="person info";`
|
||||
|
||||
codes, err := ParseSQL(sql, WithTablePrefix("t_"), WithJSONTag(0), WithNullStyle(NullDisable))
|
||||
assert.Nil(t, err)
|
||||
for k, v := range codes {
|
||||
if k == CodeTypeTableInfo {
|
||||
continue
|
||||
}
|
||||
assert.NotEmpty(t, k)
|
||||
assert.NotEmpty(t, v)
|
||||
}
|
||||
t.Log(codes[CodeTypeJSON])
|
||||
|
||||
//printCode(codes)
|
||||
|
||||
codes, err = ParseSQL(sql, WithTablePrefix("t_"), WithJSONTag(0), WithCustomTemplate())
|
||||
assert.Nil(t, err)
|
||||
for k, v := range codes {
|
||||
if k != CodeTypeTableInfo {
|
||||
continue
|
||||
}
|
||||
assert.NotEmpty(t, k)
|
||||
assert.NotEmpty(t, v)
|
||||
}
|
||||
jsonData := codes[CodeTypeTableInfo]
|
||||
t.Log(jsonData)
|
||||
t.Log(UnMarshalTableInfo(jsonData))
|
||||
|
||||
codes, err = ParseSQL(sql, WithTablePrefix("t_"), WithJSONTag(0), WithEmbed())
|
||||
assert.Nil(t, err)
|
||||
for k, v := range codes {
|
||||
if k == CodeTypeTableInfo {
|
||||
continue
|
||||
}
|
||||
assert.NotEmpty(t, k)
|
||||
assert.NotEmpty(t, v)
|
||||
}
|
||||
@@ -130,6 +167,9 @@ func TestParseSqlWithTablePrefix(t *testing.T) {
|
||||
codes, err = ParseSQL(sql, WithTablePrefix("t_"), WithJSONTag(0), WithWebProto())
|
||||
assert.Nil(t, err)
|
||||
for k, v := range codes {
|
||||
if k == CodeTypeTableInfo {
|
||||
continue
|
||||
}
|
||||
assert.NotEmpty(t, k)
|
||||
assert.NotEmpty(t, v)
|
||||
}
|
||||
@@ -138,6 +178,9 @@ func TestParseSqlWithTablePrefix(t *testing.T) {
|
||||
codes, err = ParseSQL(sql, WithTablePrefix("t_"), WithJSONTag(0), WithDBDriver(DBDriverPostgresql))
|
||||
assert.Nil(t, err)
|
||||
for k, v := range codes {
|
||||
if k == CodeTypeTableInfo {
|
||||
continue
|
||||
}
|
||||
assert.NotEmpty(t, k)
|
||||
assert.NotEmpty(t, v)
|
||||
}
|
||||
|
Reference in New Issue
Block a user