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)