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