1
0
mirror of https://github.com/vlang/v.git synced 2023-08-10 21:13:21 +03:00
v/examples/vweb_orm_jwt/src/user_services.v
2023-01-15 02:39:51 +01:00

95 lines
1.5 KiB
V

module main
import crypto.bcrypt
import databases
fn (mut app App) service_add_user(username string, password string) ?User {
mut db := databases.create_db_connection() or {
eprintln(err)
return err
}
defer {
db.close() or { panic(err) }
}
hashed_password := bcrypt.generate_from_password(password.bytes(), bcrypt.min_cost) or {
eprintln(err)
return err
}
user_model := User{
username: username
password: hashed_password
active: true
}
sql db {
insert user_model into User
} or {
eprintln(err)
return err
}
result := sql db {
select from User where username == username limit 1
}
return result
}
fn (mut app App) service_get_user_by_id(user_id int) ?User {
mut db := databases.create_db_connection() or {
println(err)
return err
}
defer {
db.close() or { panic(err) }
}
results := sql db {
select from User where id == user_id
}
return results
}
fn (mut app App) service_get_all_user() ?[]User {
mut db := databases.create_db_connection() or {
println(err)
return err
}
defer {
db.close() or { panic(err) }
}
results := sql db {
select from User
}
return results
}
fn (mut app App) service_get_by_username(username string) ?User {
mut db := databases.create_db_connection() or {
println(err)
return err
}
defer {
db.close() or { panic(err) }
}
results := sql db {
select from User where username == username
}
if results.len == 0 {
return error('User not found')
}
return results[0]
}