v / examples / veb_fullstack / user_services.v
65 lines · 51 sloc · 1.06 KB · b474aa0faf8d055aaced80ed0687ac354d0864a0
Raw
1module main
2
3import crypto.bcrypt
4import databases
5
6fn (mut app App) service_add_user(username string, password string) ! {
7 mut db := databases.create_db_connection()!
8
9 defer {
10 db.close() or { panic(err) }
11 }
12
13 hashed_password := bcrypt.generate_from_password(password.bytes(), bcrypt.min_cost) or {
14 eprintln(err)
15 return err
16 }
17
18 user_model := User{
19 username: username
20 password: hashed_password
21 active: true
22 }
23
24 mut insert_error := ''
25 sql db {
26 insert user_model into User
27 } or { insert_error = err.msg() }
28 if insert_error != '' {
29 return error(insert_error)
30 }
31}
32
33fn (mut app App) service_get_all_user() ![]User {
34 mut db := databases.create_db_connection() or {
35 println(err)
36 return err
37 }
38
39 defer {
40 db.close() or { panic(err) }
41 }
42
43 results := sql db {
44 select from User
45 }!
46
47 return results
48}
49
50fn (mut app App) service_get_user(id int) !User {
51 mut db := databases.create_db_connection() or {
52 println(err)
53 return err
54 }
55
56 defer {
57 db.close() or { panic(err) }
58 }
59
60 results := sql db {
61 select from User where id == id
62 }!
63
64 return results.first()
65}
66