dream sql_sessions

This commit is contained in:
Swrup 2025-05-02 21:54:06 +02:00
parent 4bb063e4eb
commit 321530d9d6
2 changed files with 18 additions and 5 deletions

View file

@ -17,12 +17,24 @@ let db_uri = Format.sprintf "sqlite3://%s" (Fpath.to_string db)
module Db = module Db =
(val Caqti_blocking.connect (Uri.of_string db_uri) |> Caqti_blocking.or_fail) (val Caqti_blocking.connect (Uri.of_string db_uri) |> Caqti_blocking.or_fail)
let set_foreign_keys_on = Caqti_type.(unit ->. unit) "PRAGMA foreign_keys = ON"
let create_dream_session =
Caqti_type.(unit ->. unit)
"CREATE TABLE IF NOT EXISTS dream_session (id TEXT PRIMARY KEY, label TEXT \
NOT NULL, expires_at REAL NOT NULL, payload TEXT NOT NULL)"
let () = let () =
let set_foreign_keys_on = let exec_unsafe q v =
Caqti_type.(unit ->. unit) "PRAGMA foreign_keys = ON" match Db.exec q v with
| Error e ->
Dream.error (fun log -> log "%s" (Caqti_error.show e));
exit 1
| Ok () -> ()
in in
if Result.is_error (Db.exec set_foreign_keys_on ()) then exec_unsafe set_foreign_keys_on ();
Dream.error (fun log -> log "can't set foreign_keys on") exec_unsafe create_dream_session ();
()
let () = let () =
let query = let query =

View file

@ -24,7 +24,8 @@ let () =
let () = let () =
let logger = if App.log then Dream.logger else Fun.id in let logger = if App.log then Dream.logger else Fun.id in
Dream.run ~port:App.port @@ logger @@ Dream.memory_sessions Dream.run ~port:App.port @@ logger @@ Dream.sql_pool Db.db_uri
@@ Dream.sql_sessions ~lifetime:3600.
@@ Dream.router @@ Dream.router
Dream. Dream.
[ get "/assets/**" Asset.get [ get "/assets/**" Asset.get