v / vlib / orm / orm_serial_attribute_test.v
93 lines · 73 sloc · 1.43 KB · dd063faf6592df9479b6609c3d7b471f40357eb1
Raw
1import db.sqlite
2
3struct Child {
4 id int @[primary; serial]
5 parent_id int
6}
7
8struct PlainNoArg {
9 id int @[primary; serial; sql: 'custom_id']
10 name string
11 children []Child @[fkey: 'parent_id']
12}
13
14fn test_plain_no_arg() {
15 mut db := sqlite.connect(':memory:')!
16 defer { db.close() or {} }
17
18 sql db {
19 create table PlainNoArg
20 }!
21
22 first := PlainNoArg{
23 name: 'first'
24 }
25 second := PlainNoArg{
26 name: 'second'
27 }
28
29 sql db {
30 insert first into PlainNoArg
31 insert second into PlainNoArg
32 }!
33
34 rows := sql db {
35 select from PlainNoArg order by id desc
36 }!
37
38 assert rows[0].id == 2
39 assert rows[0].name == 'second'
40}
41
42fn test_plain_no_arg_with_children() {
43 mut db := sqlite.connect(':memory:')!
44
45 parent := PlainNoArg{
46 children: [Child{}, Child{}]
47 }
48
49 sql db {
50 create table Child
51 create table PlainNoArg
52 insert parent into PlainNoArg
53 }!
54
55 parents := sql db {
56 select from PlainNoArg limit 1
57 }!
58
59 assert parent.children.len == parents[0].children.len
60}
61
62struct SqlSerial {
63 id int @[primary; sql: serial]
64 name string
65}
66
67fn test_sql_serial() {
68 mut db := sqlite.connect(':memory:')!
69 defer { db.close() or {} }
70
71 sql db {
72 create table SqlSerial
73 }!
74
75 first := SqlSerial{
76 name: 'first'
77 }
78 second := SqlSerial{
79 name: 'second'
80 }
81
82 sql db {
83 insert first into SqlSerial
84 insert second into SqlSerial
85 }!
86
87 rows := sql db {
88 select from SqlSerial order by id desc
89 }!
90
91 assert rows[0].id == 2
92 assert rows[0].name == 'second'
93}
94