add user profile page

This commit is contained in:
pena 2021-11-07 01:42:18 +01:00 committed by Swrup
parent 4485293ddd
commit 075862185b
2 changed files with 20 additions and 2 deletions

View file

@ -57,7 +57,9 @@ let login_post request =
render_unsafe (Login.f ~nick ~password request)
| _ -> assert false
let user request = render_unsafe (User.list request)
let user _request = render_unsafe (User.list ())
let user_profile request = render_unsafe (User.profile request)
let () =
Dream.run ~interface:"0.0.0.0"
@ -70,5 +72,6 @@ let () =
; Dream.get "/login" login_get
; Dream.post "/login" login_post
; Dream.get "/user" user
; Dream.get "/user/:user" user_profile
]
@@ Dream.not_found

View file

@ -70,7 +70,7 @@ let register ~email ~nick ~password =
| Ok _ -> Error "nick or email already exists"
| Error e -> Error (Format.sprintf "db error: %s" (Rc.to_string e))
let list _request =
let list () =
let open Sqlite3_utils in
let users =
Db.with_db (fun db ->
@ -85,3 +85,18 @@ let list _request =
Format.fprintf fmt {|<li><a href="/user/%s">%s</a></li>|} s s
| _ -> failwith "error" ) )
users
let profile request =
let nick = Dream.param "user" request in
let open Sqlite3_utils in
let user =
Db.with_db (fun db ->
exec_raw_args db "SELECT * FROM user WHERE nick=?;" [| Data.TEXT nick |]
~f:Cursor.to_list
)
in
match user with
| Ok [[| Data.TEXT nick; Data.TEXT password; Data.TEXT email |]] ->
Format.sprintf "nick = `%s`; password = `%s`; email = `%s`" nick password email
| Ok _ -> "incoherent db answer"
| Error e -> Format.sprintf "db error: %s" (Rc.to_string e)