-- |Persistent on-disk implementation of a repository of ZM types
module Repo.Disk(dbRepo) where

import           Repo.DB
import qualified Repo.Types as R
import           ZM

dbRepo :: FilePath   -- ^Directory to store the repo (e.g. \"/tmp\")
       -> IO R.Repo  -- ^A new repository
dbRepo dir = do
  db <- openDB dir
  return R.Repo {
        R.get = \ref -> do
            mr <- getDB db ref
            --print (unwords ["get",show ref,show mr])
            --dbg ["get",show ref,show $ isJust mr]
            return mr
        ,R.put = \adt -> do
            --dbg ["put",prettyShow adt]
            putDB db (absRef adt) adt
        ,R.close = closeDB db
        }