orm: fix unique fields (#11045)
parent
490dec222f
commit
a4358a6801
|
@ -870,7 +870,7 @@ jobs:
|
|||
git clone --depth 1 https://github.com/vlang/gitly
|
||||
cd gitly
|
||||
../v .
|
||||
# ./gitly -ci_run #TODO
|
||||
./gitly -ci_run
|
||||
../v -autofree .
|
||||
cd ..
|
||||
|
||||
|
|
|
@ -355,7 +355,7 @@ pub fn orm_table_gen(table string, para string, defaults bool, def_unique_len in
|
|||
stmt += ' NOT NULL'
|
||||
}
|
||||
if is_unique {
|
||||
mut f := 'UNIQUE KEY($para$field.name$para'
|
||||
mut f := 'UNIQUE($para$field.name$para'
|
||||
if ctyp == 'TEXT' && def_unique_len > 0 {
|
||||
if unique_len > 0 {
|
||||
f += '($unique_len)'
|
||||
|
|
|
@ -174,6 +174,85 @@ fn test_orm_table_gen() {
|
|||
},
|
||||
], sql_type_from_v, true) or { panic(err) }
|
||||
assert alt_query == "IF NOT EXISTS (SELECT * FROM sysobjects WHERE name='test_table' and xtype='U') CREATE TABLE 'test_table' ('id' SERIAL DEFAULT 10, 'test' TEXT, 'abc' INT64 DEFAULT 6754, PRIMARY KEY('id'));"
|
||||
|
||||
unique_query := orm.orm_table_gen('test_table', "'", true, 0, [
|
||||
orm.TableField{
|
||||
name: 'id'
|
||||
typ: 7
|
||||
default_val: '10'
|
||||
attrs: [
|
||||
StructAttribute{
|
||||
name: 'primary'
|
||||
},
|
||||
StructAttribute{
|
||||
name: 'sql'
|
||||
has_arg: true
|
||||
arg: 'serial'
|
||||
kind: .plain
|
||||
},
|
||||
]
|
||||
},
|
||||
orm.TableField{
|
||||
name: 'test'
|
||||
typ: 18
|
||||
attrs: [
|
||||
StructAttribute{
|
||||
name: 'unique'
|
||||
},
|
||||
]
|
||||
},
|
||||
orm.TableField{
|
||||
name: 'abc'
|
||||
typ: 8
|
||||
default_val: '6754'
|
||||
},
|
||||
], sql_type_from_v, false) or { panic(err) }
|
||||
assert unique_query == "CREATE TABLE IF NOT EXISTS 'test_table' ('id' SERIAL DEFAULT 10, 'test' TEXT, 'abc' INT64 DEFAULT 6754, PRIMARY KEY('id'), UNIQUE('test'));"
|
||||
|
||||
mult_unique_query := orm.orm_table_gen('test_table', "'", true, 0, [
|
||||
orm.TableField{
|
||||
name: 'id'
|
||||
typ: 7
|
||||
default_val: '10'
|
||||
attrs: [
|
||||
StructAttribute{
|
||||
name: 'primary'
|
||||
},
|
||||
StructAttribute{
|
||||
name: 'sql'
|
||||
has_arg: true
|
||||
arg: 'serial'
|
||||
kind: .plain
|
||||
},
|
||||
]
|
||||
},
|
||||
orm.TableField{
|
||||
name: 'test'
|
||||
typ: 18
|
||||
attrs: [
|
||||
StructAttribute{
|
||||
name: 'unique'
|
||||
has_arg: true
|
||||
arg: 'test'
|
||||
kind: .string
|
||||
},
|
||||
]
|
||||
},
|
||||
orm.TableField{
|
||||
name: 'abc'
|
||||
typ: 8
|
||||
default_val: '6754'
|
||||
attrs: [
|
||||
StructAttribute{
|
||||
name: 'unique'
|
||||
has_arg: true
|
||||
arg: 'test'
|
||||
kind: .string
|
||||
},
|
||||
]
|
||||
},
|
||||
], sql_type_from_v, false) or { panic(err) }
|
||||
assert mult_unique_query == "CREATE TABLE IF NOT EXISTS 'test_table' ('id' SERIAL DEFAULT 10, 'test' TEXT, 'abc' INT64 DEFAULT 6754, /* test */UNIQUE('test', 'abc'), PRIMARY KEY('id'));"
|
||||
}
|
||||
|
||||
fn sql_type_from_v(typ int) ?string {
|
||||
|
|
Loading…
Reference in New Issue