v / vlib / orm / orm_option_time_test.v
56 lines · 50 sloc · 938 bytes · 99be39cbd15d4bbb5ab14d2f870199908c00bc8d
Raw
1// vtest retry: 3
2import db.sqlite
3import time
4
5@[table: 'foos']
6struct Foo {
7 id int @[primary; sql: serial]
8 name string
9 created_at time.Time @[default: 'CURRENT_TIME']
10 updated_at ?string @[sql_type: 'TIMESTAMP']
11 deleted_at ?time.Time
12 children []Child @[fkey: 'parent_id']
13}
14
15struct Child {
16 id int @[primary; sql: serial]
17 parent_id int
18 name string
19}
20
21fn test_main() {
22 mut db := sqlite.connect(':memory:') or { panic(err) }
23 defer {
24 db.close() or { panic(err) }
25 }
26
27 sql db {
28 create table Foo
29 create table Child
30 }!
31 foo := Foo{
32 name: 'abc'
33 created_at: time.now()
34 // updated_at defaults to none
35 // deleted_at defaults to none
36 children: [
37 Child{
38 name: 'abc'
39 },
40 Child{
41 name: 'def'
42 },
43 ]
44 }
45
46 sql db {
47 insert foo into Foo
48 }!
49
50 data := sql db {
51 select from Foo
52 }![0]
53 assert data.id == 1
54 assert data.updated_at == none
55 assert data.deleted_at == none
56}
57