feat: add SQLite database support
- Add sqlite-simple dependency - Create Sis.Database module with openDatabase (creates parent dir, enables WAL + FK) - Add --db-path CLI option (default data/sis.db) - Format all Haskell sources with fourmolu - Fix hlint suggestions in Sis.Server
This commit is contained in:
+8
-4
@@ -8,13 +8,17 @@ module Sis.Database (
|
||||
) where
|
||||
|
||||
import Database.SQLite.Simple qualified as SQL
|
||||
import System.Directory (createDirectoryIfMissing)
|
||||
import System.FilePath (takeDirectory)
|
||||
|
||||
-- | Open (or create) a SQLite database at the given path.
|
||||
--
|
||||
-- Enables WAL journal mode for concurrent read performance and
|
||||
-- enables foreign key enforcement.
|
||||
{- | 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
|
||||
createDirectoryIfMissing True (takeDirectory path)
|
||||
conn <- SQL.open path
|
||||
SQL.execute_ conn "PRAGMA journal_mode=WAL"
|
||||
SQL.execute_ conn "PRAGMA foreign_keys=ON"
|
||||
|
||||
Reference in New Issue
Block a user