123456789101112131415161718192021222324252627moduleDb=Granary.Db(* Result-aware bind over an [(_, _) result Lwt.t]: short-circuits on the first
[Error] so the workload reads as a flat sequence (keeps merlint nesting low). *)let(let*?)(m:('a,'e)resultLwt.t)(f:'a->('b,'e)resultLwt.t):('b,'e)resultLwt.t=Lwt.bindm(function|Okx->fx|Errore->Lwt.return_errore);;letrun_demodb=letexecsql=Db.executedbsqlinlet*?()=exec"CREATE TABLE kv (id INTEGER PRIMARY KEY, name TEXT NOT NULL)"inlet*?()=exec"BEGIN"inlet*?()=exec"INSERT INTO kv (id, name) VALUES (1, 'alpha')"inlet*?()=exec"INSERT INTO kv (id, name) VALUES (2, 'beta')"inlet*?()=exec"INSERT INTO kv (id, name) VALUES (3, 'gamma')"inlet*?()=exec"COMMIT"inlet*?stream=Db.querydb"SELECT id, name FROM kv ORDER BY id"inLwt.bind(Lwt_stream.to_liststream)(funrows->Lwt.return_ok(List.lengthrows));;[@@@ai_disclosure"ai-generated"][@@@ai_model"claude-opus-4-8"][@@@ai_provider"Anthropic"]