module IpeDb.Query (
withInfoProvDb,
setupInfoProvDb,
populateFromEventlog,
lookupInfoProv,
insertInfoProv,
listInfoProvs,
) where
import qualified IpeDb.Eventlog.Index as Index
import IpeDb.InfoProv
import IpeDb.Types
withInfoProvDb :: FilePath -> (InfoProvDb -> IO a) -> IO a
withInfoProvDb :: forall a. FilePath -> (InfoProvDb -> IO a) -> IO a
withInfoProvDb FilePath
fp InfoProvDb -> IO a
act =
FilePath -> (Connection -> IO a) -> IO a
forall a. FilePath -> (Connection -> IO a) -> IO a
Index.withDatabase FilePath
fp (\Connection
conn -> InfoProvDb -> IO a
act InfoProvDb{Connection
conn :: Connection
conn :: Connection
conn})
setupInfoProvDb :: InfoProvDb -> IO ()
setupInfoProvDb :: InfoProvDb -> IO ()
setupInfoProvDb InfoProvDb
db =
Connection -> IO ()
Index.setupDb InfoProvDb
db.conn
populateFromEventlog :: InfoProvDb -> FilePath -> IO ()
populateFromEventlog :: InfoProvDb -> FilePath -> IO ()
populateFromEventlog InfoProvDb
db FilePath
fp =
Connection -> FilePath -> IO ()
Index.generateInfoProvDb InfoProvDb
db.conn FilePath
fp
lookupInfoProv :: InfoProvDb -> IpeId -> IO (Maybe InfoProv)
lookupInfoProv :: InfoProvDb -> IpeId -> IO (Maybe InfoProv)
lookupInfoProv InfoProvDb
db IpeId
ipeId = do
Connection -> IpeId -> IO (Maybe InfoProv)
Index.findOneInfoProv InfoProvDb
db.conn IpeId
ipeId
insertInfoProv :: InfoProvDb -> InfoProv -> IO ()
insertInfoProv :: InfoProvDb -> InfoProv -> IO ()
insertInfoProv InfoProvDb
db InfoProv
ipe = do
Connection -> InfoProv -> IO ()
Index.insertInfoProv InfoProvDb
db.conn InfoProv
ipe
listInfoProvs :: InfoProvDb -> IO [InfoProv]
listInfoProvs :: InfoProvDb -> IO [InfoProv]
listInfoProvs InfoProvDb
db = do
Connection -> IO [InfoProv]
Index.findAllInfoProvs InfoProvDb
db.conn