ggdgsdbsdbbb / token.v
44 lines · 36 sloc · 834 bytes · a449238961bbd5f9081831ef9db1ac936909a3e8
Raw
1// Copyright (c) 2019-2021 Alexander Medvednikov. All rights reserved.
2// Use of this source code is governed by a GPL license that can be found in the LICENSE file.
3module main
4
5import rand
6
7struct Token {
8 id int @[primary; sql: serial]
9 user_id int
10 value string
11 ip string
12}
13
14fn (mut app App) add_token(user_id int, ip string) !string {
15 mut uuid := rand.uuid_v4()
16
17 token := Token{
18 user_id: user_id
19 value: uuid
20 ip: ip
21 }
22
23 sql app.db {
24 insert token into Token
25 }!
26
27 return uuid
28}
29
30fn (mut app App) get_token(value string) ?Token {
31 tokens := sql app.db {
32 select from Token where value == value limit 1
33 } or { []Token{} }
34 if tokens.len == 0 {
35 return none
36 }
37 return tokens.first()
38}
39
40fn (mut app App) delete_tokens(user_id int) ! {
41 sql app.db {
42 delete from Token where user_id == user_id
43 }!
44}
45