add user profile page

This commit is contained in:
zapashcanon 2021-11-07 01:42:18 +01:00
parent 936e03b591
commit e7b944578e
No known key found for this signature in database
GPG key ID: 8981C3C62D1D28F1
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) render_unsafe (Login.f ~nick ~password request)
| _ -> assert false | _ -> 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 () = let () =
Dream.run ~interface:"0.0.0.0" Dream.run ~interface:"0.0.0.0"
@ -70,5 +72,6 @@ let () =
; Dream.get "/login" login_get ; Dream.get "/login" login_get
; Dream.post "/login" login_post ; Dream.post "/login" login_post
; Dream.get "/user" user ; Dream.get "/user" user
; Dream.get "/user/:user" user_profile
] ]
@@ Dream.not_found @@ Dream.not_found

View file

@ -70,7 +70,7 @@ let register ~email ~nick ~password =
| Ok _ -> Error "nick or email already exists" | Ok _ -> Error "nick or email already exists"
| Error e -> Error (Format.sprintf "db error: %s" (Rc.to_string e)) | Error e -> Error (Format.sprintf "db error: %s" (Rc.to_string e))
let list _request = let list () =
let open Sqlite3_utils in let open Sqlite3_utils in
let users = let users =
Db.with_db (fun db -> 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 Format.fprintf fmt {|<li><a href="/user/%s">%s</a></li>|} s s
| _ -> failwith "error" ) ) | _ -> failwith "error" ) )
users 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)