1 {-# LANGUAGE OverloadedStrings #-}
    2 module Databrary.Store.Types
    3   ( Transcoder(..)
    4   , Storage(..)
    5   , getStorageTempParticipantUpload'
    6   , getStorageTempParticipantUpload
    7   , MonadStorage
    8   ) where
    9 
   10 import Control.Monad.IO.Class (MonadIO)
   11 import qualified Data.ByteString.Char8 as BSC
   12 import Data.Monoid ((<>))
   13 import System.Posix.FilePath ((</>))
   14 
   15 import Databrary.Has (MonadHas)
   16 import Databrary.Files
   17 
   18 data Transcoder = Transcoder
   19   { transcoderCmd :: !FilePath
   20   , transcoderArgs :: ![String]
   21   }
   22 
   23 data Storage = Storage
   24   { storageMaster :: !RawFilePath
   25   , storageFallback :: !(Maybe RawFilePath)
   26   , storageTemp :: !RawFilePath
   27   , storageUpload :: !RawFilePath
   28   , storageCache :: !(Maybe RawFilePath)
   29   , storageStage :: !(Maybe RawFilePath)
   30   , storageTranscoder :: !(Maybe Transcoder)
   31   }
   32 
   33 getStorageTempParticipantUpload' :: FilePath -> FilePath
   34 getStorageTempParticipantUpload' tempPath = tempPath <> "participantUpload"
   35 
   36 getStorageTempParticipantUpload :: String -> Storage -> RawFilePath
   37 getStorageTempParticipantUpload uploadFile s =
   38     (storageTemp s) </> "participantUpload" </> BSC.pack uploadFile
   39 
   40 type MonadStorage c m = (MonadHas Storage c m, MonadIO m)