mirror of
https://github.com/vlang/v.git
synced 2025-08-03 17:57:59 -04:00
94 lines
1.4 KiB
V
94 lines
1.4 KiB
V
import db.sqlite
|
|
|
|
struct Child {
|
|
id int @[primary; serial]
|
|
parent_id int
|
|
}
|
|
|
|
struct PlainNoArg {
|
|
id int @[primary; serial; sql: 'custom_id']
|
|
name string
|
|
children []Child @[fkey: 'parent_id']
|
|
}
|
|
|
|
fn test_plain_no_arg() {
|
|
mut db := sqlite.connect(':memory:')!
|
|
defer { db.close() or {} }
|
|
|
|
sql db {
|
|
create table PlainNoArg
|
|
}!
|
|
|
|
first := PlainNoArg{
|
|
name: 'first'
|
|
}
|
|
second := PlainNoArg{
|
|
name: 'second'
|
|
}
|
|
|
|
sql db {
|
|
insert first into PlainNoArg
|
|
insert second into PlainNoArg
|
|
}!
|
|
|
|
rows := sql db {
|
|
select from PlainNoArg order by id desc
|
|
}!
|
|
|
|
assert rows[0].id == 2
|
|
assert rows[0].name == 'second'
|
|
}
|
|
|
|
fn test_plain_no_arg_with_children() {
|
|
mut db := sqlite.connect(':memory:')!
|
|
|
|
parent := PlainNoArg{
|
|
children: [Child{}, Child{}]
|
|
}
|
|
|
|
sql db {
|
|
create table Child
|
|
create table PlainNoArg
|
|
insert parent into PlainNoArg
|
|
}!
|
|
|
|
parents := sql db {
|
|
select from PlainNoArg limit 1
|
|
}!
|
|
|
|
assert parent.children.len == parents[0].children.len
|
|
}
|
|
|
|
struct SqlSerial {
|
|
id int @[primary; sql: serial]
|
|
name string
|
|
}
|
|
|
|
fn test_sql_serial() {
|
|
mut db := sqlite.connect(':memory:')!
|
|
defer { db.close() or {} }
|
|
|
|
sql db {
|
|
create table SqlSerial
|
|
}!
|
|
|
|
first := SqlSerial{
|
|
name: 'first'
|
|
}
|
|
second := SqlSerial{
|
|
name: 'second'
|
|
}
|
|
|
|
sql db {
|
|
insert first into SqlSerial
|
|
insert second into SqlSerial
|
|
}!
|
|
|
|
rows := sql db {
|
|
select from SqlSerial order by id desc
|
|
}!
|
|
|
|
assert rows[0].id == 2
|
|
assert rows[0].name == 'second'
|
|
}
|