v / examples / veb_orm_jwt / user_controllers.v
72 lines · 59 sloc · 1.72 KB · b474aa0faf8d055aaced80ed0687ac354d0864a0
Raw
1module main
2
3import veb
4import json
5import databases
6
7@['/user/:id/get'; get]
8pub fn (mut app App) controller_get_user_by_id(mut ctx Context, id string) veb.Result {
9 response := app.service_get_user_by_id(id.int()) or {
10 ctx.res.set_status(.bad_request)
11 return ctx.text('${err}')
12 }
13 return ctx.json(response)
14}
15
16@['/user/create'; post]
17pub fn (mut app App) controller_create_user(mut ctx Context) veb.Result {
18 body := json.decode(User, ctx.req.data) or {
19 ctx.res.set_status(.bad_request)
20 return ctx.text('Failed to decode json, error: ${err}')
21 }
22
23 response := app.service_add_user(body.username, body.password) or {
24 ctx.res.set_status(.bad_request)
25 return ctx.text('error: ${err}')
26 }
27
28 return ctx.json(response)
29}
30
31@['/user/get_all'; get]
32pub fn (mut app App) controller_get_all_user(mut ctx Context) veb.Result {
33 token := ctx.req.header.get_custom('token') or { '' }
34
35 if !auth_verify(token) {
36 ctx.res.set_status(.unauthorized)
37 return ctx.text('Not valid token')
38 }
39
40 response := app.service_get_all_user() or {
41 ctx.res.set_status(.bad_request)
42 return ctx.text('${err}')
43 }
44 return ctx.json(response)
45}
46
47@['/user/get_by_username/:username'; get]
48pub fn (mut app App) controller_get_by_username(mut ctx Context, username string) veb.Result {
49 response := app.service_get_by_username(username) or {
50 ctx.res.set_status(.bad_request)
51 return ctx.text('${err}')
52 }
53 return ctx.json(response)
54}
55
56@['/user/drop'; delete]
57pub fn (mut app App) delete(mut ctx Context) veb.Result {
58 mut db := databases.create_db_connection() or {
59 ctx.res.set_status(.bad_request)
60 return ctx.text('${err}')
61 }
62
63 defer {
64 db.close() or { panic(err) }
65 }
66
67 sql db {
68 drop table User
69 } or { panic(err) }
70
71 return ctx.text('Successfully deleted table')
72}
73