module Model.Transcode.Types
( Transcode(..)
, TranscodePID
, TranscodeArgs
, transcodeAsset
, transcodeOrig
, transcodeId
, makeTranscodeRow
, makeTranscode
, makeOrigTranscode
) where
import qualified Data.ByteString as BS
import Data.Maybe (fromMaybe)
import Model.Kind
import Model.Id.Types
import Model.Time
import Model.Segment
import Model.Asset.Types
import Model.AssetRevision.Types
import Model.Party.Types
import Model.Permission.Types
import Model.Volume.Types
type TranscodePID = Int32
type TranscodeArgs = [String]
type instance IdType Transcode = Int32
data Transcode = Transcode
{ transcodeRevision :: !AssetRevision
, transcodeOwner :: SiteAuth
, transcodeSegment :: Segment
, transcodeOptions :: TranscodeArgs
, transcodeStart :: Maybe Timestamp
, transcodeProcess :: Maybe TranscodePID
, transcodeLog :: Maybe BS.ByteString
}
transcodeAsset :: Transcode -> Asset
transcodeAsset = revisionAsset . transcodeRevision
transcodeOrig :: Transcode -> Asset
transcodeOrig = revisionOrig . transcodeRevision
transcodeId :: Transcode -> Id Transcode
transcodeId = Id . unId . assetId . assetRow . transcodeAsset
instance Kinded Transcode where
kindOf _ = "transcode"
makeTranscodeRow :: Segment -> [Maybe String] -> Maybe Timestamp -> Maybe Int32 -> Maybe BS.ByteString -> SiteAuth -> AssetRevision -> Transcode
makeTranscodeRow s f t p l u a =
Transcode a u s (map (fromMaybe (error "NULL transcode options")) f) t p l
makeOrigTranscode :: (AssetRevision -> Transcode) -> AssetRow -> Asset -> Transcode
makeOrigTranscode f a o = f $ AssetRevision (Asset a $ assetVolume o) o
makeTranscode :: (Asset -> Transcode) -> AssetRow -> (VolumeRolePolicy -> Volume) -> Transcode
makeTranscode t o vp = t $ Asset o $ vp RoleAdmin