1
0
mirror of https://github.com/vlang/v.git synced 2023-08-10 21:13:21 +03:00

orm: support arrays (#9936)

This commit is contained in:
Louis Schmieder
2021-04-30 08:13:26 +02:00
committed by GitHub
parent b15156d465
commit fb685eee18
4 changed files with 434 additions and 15 deletions

View File

@ -18,12 +18,145 @@ struct User {
skipped_string string [skip]
}
struct Parent {
id int [primary; sql: serial]
name string
chields []Chield [fkey: 'parent_id']
}
struct Chield {
id int [primary; sql: serial]
parent_id int
name string
}
fn main() {
sqlite3_array()
mysql_array()
psql_array()
sqlite3()
mysql()
psql()
}
fn sqlite3_array() {
mut db := sqlite.connect(':memory:') or { panic(err) }
sql db {
create table Parent
}
par := Parent{
name: 'test'
chields: [
Chield{
name: 'abc'
},
Chield{
name: 'def'
},
]
}
sql db {
insert par into Parent
}
parent := sql db {
select from Parent where id == 1
}
sql db {
drop table Chield
drop table Parent
}
eprintln(parent)
}
fn mysql_array() {
mut db := mysql.Connection{
host: 'localhost'
port: 3306
username: 'root'
password: 'abc'
dbname: 'test'
}
db.connect() or { panic(err) }
sql db {
create table Parent
}
par := Parent{
name: 'test'
chields: [
Chield{
name: 'abc'
},
Chield{
name: 'def'
},
]
}
sql db {
insert par into Parent
}
parent := sql db {
select from Parent where id == 1
}
eprintln(parent)
sql db {
drop table Chield
drop table Parent
}
db.close()
}
fn psql_array() {
mut db := pg.connect(host: 'localhost', user: 'test', password: 'abc', dbname: 'test') or {
panic(err)
}
sql db {
create table Parent
}
par := Parent{
name: 'test'
chields: [
Chield{
name: 'abc'
},
Chield{
name: 'def'
},
]
}
sql db {
insert par into Parent
}
parent := sql db {
select from Parent where id == 1
}
eprintln(parent)
sql db {
drop table Chield
drop table Parent
}
db.close()
}
fn sqlite3() {
mut db := sqlite.connect(':memory:') or { panic(err) }
sql db {