1 module Databrary.Model.Activity.Types
    2   ( ActivityTarget(..)
    3   , Activity(..)
    4   ) where
    5 
    6 import qualified Data.ByteString as BS
    7 
    8 import Databrary.Model.Audit.Types
    9 import Databrary.Model.Id.Types
   10 import Databrary.Model.Release.Types
   11 import Databrary.Model.Party.Types
   12 import Databrary.Model.Authorize.Types
   13 import Databrary.Model.Volume.Types
   14 import Databrary.Model.VolumeAccess.Types
   15 import Databrary.Model.Container.Types
   16 import Databrary.Model.Segment
   17 import Databrary.Model.Slot.Types
   18 -- import Databrary.Model.Record.Types
   19 -- import Databrary.Model.RecordSlot.Types
   20 import Databrary.Model.Asset.Types
   21 
   22 data ActivityTarget
   23   = ActivityParty         { activityPartyRow :: !PartyRow }
   24   | ActivityAccount       { activityAccountId :: !(Id Party)
   25                           , activityAccountEmail :: !BS.ByteString
   26                           , activityAccountPassword :: !(Maybe BS.ByteString)
   27                           }
   28   | ActivityAuthorize     { activityAuthorize :: !Authorize }
   29   | ActivityVolume        { activityVolumeRow :: !VolumeRow }
   30   | ActivityAccess        { activityAccess :: !VolumeAccess }
   31   | ActivityContainer     { activityContainer :: !ContainerRow }
   32   | ActivityRelease       { activitySlotId :: !SlotId
   33                           , activityRelease :: !Release
   34                           }
   35   -- | ActivityRecord     { activityRecordRow :: !RecordRow }
   36   -- | ActivityRecordSlot { activityRecordSlot :: !RecordSlot }
   37   | ActivityAsset         { activityAssetRow :: !AssetRow }
   38   | ActivityAssetSlot     { activityAssetId :: !(Id Asset)
   39                           , activitySlotId :: !SlotId }
   40   | ActivityAssetAndSlot  { activityAssetRow :: !AssetRow
   41                           , activitySlotId :: !SlotId }
   42   | ActivityExcerpt       { activityAssetId :: !(Id Asset)
   43                           , activitySegment :: !Segment
   44                           , activityExcerptRelease :: !(Maybe Release)
   45                           }
   46 
   47 data Activity = Activity
   48   { activityAudit :: !Audit
   49   , activityTarget :: !ActivityTarget
   50   , activityPrev :: Maybe ActivityTarget
   51   , activityReplace :: Maybe Asset
   52   , activityTranscode :: Maybe Asset
   53   }
   54