v/vlib/orm/orm_serial_attribute_test.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'
}