mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
orm: sql type in struct by attribute (#14919)
This commit is contained in:

committed by
GitHub

parent
4238e5f6b9
commit
3f3742122f
@ -1,6 +1,24 @@
|
||||
import orm
|
||||
import mysql
|
||||
|
||||
struct TestCustomSqlType {
|
||||
id int [primary; sql: serial]
|
||||
custom string [sql_type: 'TEXT']
|
||||
custom1 string [sql_type: 'VARCHAR(191)']
|
||||
custom2 string [sql_type: 'datetime(3)']
|
||||
custom3 string [sql_type: 'MEDIUMINT']
|
||||
custom4 string [sql_type: 'DATETIME']
|
||||
custom5 string [sql_type: 'datetime']
|
||||
}
|
||||
|
||||
struct TestCustomWrongSqlType {
|
||||
id int [primary; sql: serial]
|
||||
custom string
|
||||
custom1 string [sql_type: 'VARCHAR']
|
||||
custom2 string [sql_type: 'money']
|
||||
custom3 string [sql_type: 'xml']
|
||||
}
|
||||
|
||||
fn test_mysql_orm() {
|
||||
mut mdb := mysql.Connection{
|
||||
host: 'localhost'
|
||||
@ -29,7 +47,7 @@ fn test_mysql_orm() {
|
||||
},
|
||||
orm.TableField{
|
||||
name: 'name'
|
||||
typ: 18
|
||||
typ: 20
|
||||
attrs: []
|
||||
},
|
||||
orm.TableField{
|
||||
@ -47,11 +65,11 @@ fn test_mysql_orm() {
|
||||
table: 'Test'
|
||||
has_where: true
|
||||
fields: ['id', 'name', 'age']
|
||||
types: [7, 18, 8]
|
||||
types: [7, 20, 8]
|
||||
}, orm.QueryData{}, orm.QueryData{
|
||||
fields: ['name', 'age']
|
||||
data: [orm.Primitive('Louis'), i64(101)]
|
||||
types: [18, 8]
|
||||
types: [20, 8]
|
||||
is_and: [true, true]
|
||||
kinds: [.eq, .eq]
|
||||
}) or { panic(err) }
|
||||
@ -75,3 +93,69 @@ fn test_mysql_orm() {
|
||||
assert age == 101
|
||||
}
|
||||
}
|
||||
|
||||
fn test_orm() {
|
||||
mut db := mysql.Connection{
|
||||
host: 'localhost'
|
||||
port: 3306
|
||||
username: 'root'
|
||||
password: ''
|
||||
dbname: 'mysql'
|
||||
}
|
||||
|
||||
db.connect() or {
|
||||
println(err)
|
||||
panic(err)
|
||||
}
|
||||
|
||||
sql db {
|
||||
create table TestCustomSqlType
|
||||
}
|
||||
|
||||
mut result_custom_sql := db.query("
|
||||
SELECT DATA_TYPE, COLUMN_TYPE
|
||||
FROM INFORMATION_SCHEMA.COLUMNS
|
||||
WHERE TABLE_NAME = 'TestCustomSqlType'
|
||||
ORDER BY ORDINAL_POSITION
|
||||
") or {
|
||||
println(err)
|
||||
panic(err)
|
||||
}
|
||||
|
||||
information_schema_custom_sql := [
|
||||
{
|
||||
'DATA_TYPE': 'bigint'
|
||||
'COLUMN_TYPE': 'bigint unsigned'
|
||||
},
|
||||
{
|
||||
'DATA_TYPE': 'text'
|
||||
'COLUMN_TYPE': 'text'
|
||||
},
|
||||
{
|
||||
'DATA_TYPE': 'varchar'
|
||||
'COLUMN_TYPE': 'varchar(191)'
|
||||
},
|
||||
{
|
||||
'DATA_TYPE': 'datetime'
|
||||
'COLUMN_TYPE': 'datetime(3)'
|
||||
},
|
||||
{
|
||||
'DATA_TYPE': 'mediumint'
|
||||
'COLUMN_TYPE': 'mediumint'
|
||||
},
|
||||
{
|
||||
'DATA_TYPE': 'datetime'
|
||||
'COLUMN_TYPE': 'datetime'
|
||||
},
|
||||
{
|
||||
'DATA_TYPE': 'datetime'
|
||||
'COLUMN_TYPE': 'datetime'
|
||||
},
|
||||
]
|
||||
|
||||
assert result_custom_sql.maps() == information_schema_custom_sql
|
||||
|
||||
sql db {
|
||||
drop table TestCustomSqlType
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user