| 1 | module main |
| 2 | |
| 3 | import veb |
| 4 | import json |
| 5 | import databases |
| 6 | |
| 7 | @['/user/:id/get'; get] |
| 8 | pub 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] |
| 17 | pub 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] |
| 32 | pub 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] |
| 48 | pub 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] |
| 57 | pub 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 | |