v / examples / veb_orm_jwt / user_services.v
94 lines · 73 sloc · 1.47 KB · b474aa0faf8d055aaced80ed0687ac354d0864a0
Raw
1module main
2
3import crypto.bcrypt
4import databases
5
6fn (mut app App) service_add_user(username string, password string) !User {
7 mut db := databases.create_db_connection() or {
8 eprintln(err)
9 return err
10 }
11
12 defer {
13 db.close() or { panic(err) }
14 }
15
16 hashed_password := bcrypt.generate_from_password(password.bytes(), bcrypt.min_cost) or {
17 eprintln(err)
18 return err
19 }
20
21 user_model := User{
22 username: username
23 password: hashed_password
24 active: true
25 }
26
27 sql db {
28 insert user_model into User
29 } or {
30 eprintln(err)
31 return err
32 }
33
34 users := sql db {
35 select from User where username == username limit 1
36 }!
37
38 return users.first()
39}
40
41fn (mut app App) service_get_user_by_id(user_id int) !User {
42 mut db := databases.create_db_connection() or {
43 println(err)
44 return err
45 }
46
47 defer {
48 db.close() or { panic(err) }
49 }
50
51 users := sql db {
52 select from User where id == user_id
53 }!
54
55 return users.first()
56}
57
58fn (mut app App) service_get_all_user() ![]User {
59 mut db := databases.create_db_connection() or {
60 println(err)
61 return err
62 }
63
64 defer {
65 db.close() or { panic(err) }
66 }
67
68 results := sql db {
69 select from User
70 }!
71
72 return results
73}
74
75fn (mut app App) service_get_by_username(username string) !User {
76 mut db := databases.create_db_connection() or {
77 println(err)
78 return err
79 }
80
81 defer {
82 db.close() or { panic(err) }
83 }
84
85 results := sql db {
86 select from User where username == username
87 }!
88
89 if results.len == 0 {
90 return error('User not found')
91 }
92
93 return results[0]
94}
95