From 5db6d04c440b153ec36fce505827d29c61279a46 Mon Sep 17 00:00:00 2001 From: swrup Date: Thu, 12 Mar 2026 17:49:51 +0100 Subject: [PATCH] --- src/env.ml | 7 +++++++ src/global.ml | 30 ++++++++++++++++++++++++++++++ src/mte.ml | 26 -------------------------- 3 files changed, 37 insertions(+), 26 deletions(-) create mode 100644 src/env.ml create mode 100644 src/global.ml diff --git a/src/env.ml b/src/env.ml new file mode 100644 index 00000000..d93b4e4e --- /dev/null +++ b/src/env.ml @@ -0,0 +1,7 @@ +type t = { + sw: Caqti_miou.Switch.t; + stack: Mnet.stack; + tcp: Mnet.TCP.state; + dns: Mnet_dns.t; + fs: Fat.t; +} diff --git a/src/global.ml b/src/global.ml new file mode 100644 index 00000000..7ccb0230 --- /dev/null +++ b/src/global.ml @@ -0,0 +1,30 @@ +(* IMPROVE: use caqti pool + [connect_pool] with parameter [?post_connect] for preflight *) +let db_conn = + let f Env.{ sw; stack; tcp; dns; fs= _ } = + let db_uri = Config.Exchangedb_postgres.config in + match Caqti_mnet.connect ~sw stack tcp dns db_uri with + | Error err -> + Fmt.failwith "Database connection failure: %a." Caqti_error.pp err + | Ok conn -> + let () = Pg.preflight conn in + Logs.info (fun m -> m "database connection initialized"); + conn + in + let finally (module Conn : Pg.CONN) = Conn.disconnect () in + Vifu.Device.v ~name:"db_conn" ~finally [] f + + + + (* (module Keys.S) *) + let f (env : Env.t) = + let (module Conn : Pg.CONN) = db_conn in + let (module Fs : Fat.FS) = + (module struct + let t = env.fs + end) + in + (module Keys.Make (Conn) (Fs)) + in + let finally _keys = () in + Vifu.Device.v ~name:"keys" ~finally [] f diff --git a/src/mte.ml b/src/mte.ml index 8b0428f0..2fe85f83 100644 --- a/src/mte.ml +++ b/src/mte.ml @@ -89,32 +89,6 @@ let () = let@ () = fun () -> Mnet_dns.Transport.kill t in (* -- *) Caqti_miou.Switch.run @@ fun sw -> - let db_conn = - let db_uri = Config.Exchangedb_postgres.config in - (* IMPROVE: use caqti pool - [connect_pool] with parameter [?post_connect] for preflight *) - match Caqti_mnet.connect ~sw stack tcp dns db_uri with - | Error err -> - Fmt.failwith "Database connection failure: %a." Caqti_error.pp err - | Ok conn -> conn - in - let@ () = - fun () -> - let (module Conn : Pg.CONN) = db_conn in - Conn.disconnect () - in - let () = Pg.preflight db_conn in - Logs.info (fun m -> m "database connection initialized"); - (* -- *) - let keys : (module Keys.S) = - let (module Conn : Pg.CONN) = db_conn in - let (module Fs : Fat.FS) = - (module struct - let t = storage - end) - in - (module Keys.Make (Conn) (Fs)) - in (* -- *) let cfg = Vifu.Config.v Config.Exchange.port in Vifu.run ~cfg tcp routes (db_conn, keys)