v / examples / orm / orm_func.v
67 lines · 53 sloc · 1.32 KB · b180a03253d44538d5277b70007d7cd6546d1171
Raw
1module main
2
3import db.sqlite
4import time
5import orm
6
7@[table: 'sys_users']
8struct User {
9pub:
10 id string @[immutable; primary; sql: 'id'; sql_type: 'VARCHAR(255)'; unique]
11 name ?string @[immutable; sql: 'nick_name'; sql_type: 'VARCHAR(255)'; unique]
12 created_at ?time.Time @[omitempty; sql_type: 'TIMESTAMP']
13 updated_at time.Time @[default: new; omitempty; sql_type: 'TIMESTAMP']
14}
15
16fn main() {
17 mut db := sqlite.connect(':memory:')!
18 defer { db.close() or {} }
19
20 user1 := User{
21 id: '001'
22 name: 'Jengro'
23 created_at: time.now()
24 updated_at: time.now()
25 }
26
27 user2 := User{
28 id: '002'
29 name: 'Dev'
30 created_at: time.now()
31 updated_at: time.now()
32 }
33
34 mut qb := orm.new_query[User](db)
35
36 // create table
37 qb.create()!
38
39 // insert into table
40 qb.insert(user1)!
41 qb.insert(user2)!
42
43 // query all fields
44 all_users := qb.query()!
45 dump(all_users)
46
47 // query all users' nick_name
48 all_user_names := qb.select('nick_name')!.query()!
49 dump(all_user_names)
50
51 // where
52 selected_users := qb.where('id = ?', '001')!.query()!
53 dump(selected_users)
54
55 // update
56 qb.set('nick_name = ?', 'Tom')!.where('id = ?', '001')!.update()!
57 updated_user := qb.query()!
58 dump(updated_user)
59
60 // delete
61 qb.where('id = ?', '001')!.delete()!
62 remain_users := qb.query()!
63 dump(remain_users)
64
65 // drop table
66 qb.drop()!
67}
68