From 1a8a264eaec15855ee7d5a48eae152dc73f15609 Mon Sep 17 00:00:00 2001 From: James Brechtel Date: Wed, 15 Jul 2026 15:55:04 -0400 Subject: [PATCH] feat: add Sis.Database module with openDatabase --- src/Sis/Database.hs | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 src/Sis/Database.hs diff --git a/src/Sis/Database.hs b/src/Sis/Database.hs new file mode 100644 index 0000000..9b948e3 --- /dev/null +++ b/src/Sis/Database.hs @@ -0,0 +1,21 @@ +{- | SQLite database support for Sis. + +Opens (and creates if missing) a SQLite database with WAL journal +mode and foreign keys enabled. +-} +module Sis.Database ( + openDatabase, +) where + +import Database.SQLite.Simple qualified as SQL + +-- | Open (or create) a SQLite database at the given path. +-- +-- Enables WAL journal mode for concurrent read performance and +-- enables foreign key enforcement. +openDatabase :: FilePath -> IO SQL.Connection +openDatabase path = do + conn <- SQL.open path + SQL.execute_ conn "PRAGMA journal_mode=WAL" + SQL.execute_ conn "PRAGMA foreign_keys=ON" + pure conn