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