1 {-# LANGUAGE TypeFamilies, OverloadedStrings #-} 2 module Databrary.Model.Notification.Types 3 ( module Databrary.Model.Notification.Notice 4 , Notification(..) 5 , blankNotification 6 ) where 7 8 import Databrary.Model.Time 9 import Databrary.Model.Id.Types 10 import Databrary.Model.Kind 11 import Databrary.Model.Party 12 import Databrary.Model.Volume.Types 13 import Databrary.Model.Container.Types 14 import Databrary.Model.Segment 15 import Databrary.Model.Asset.Types 16 import Databrary.Model.Comment.Types 17 import Databrary.Model.Tag.Types 18 import Databrary.Model.Permission.Types 19 import Databrary.Model.Release.Types 20 import Databrary.Model.Notification.Notice 21 22 type instance IdType Notification = Int32 23 24 data Notification = Notification 25 { notificationId :: Id Notification 26 , notificationTarget :: !Account 27 , notificationNotice :: !Notice 28 , notificationTime :: Timestamp 29 , notificationDelivered :: !Delivery 30 , notificationAgent :: PartyRow 31 , notificationParty :: Maybe PartyRow 32 , notificationVolume :: Maybe VolumeRow 33 , notificationPermission :: Maybe Permission 34 , notificationContainerId :: Maybe (Id Container) 35 , notificationSegment :: Maybe Segment 36 , notificationAssetId :: Maybe (Id Asset) 37 , notificationRelease :: Maybe Release 38 , notificationCommentId :: Maybe (Id Comment) 39 , notificationTag :: Maybe Tag 40 } 41 42 instance Kinded Notification where 43 kindOf _ = "notification" 44 45 blankNotification :: Account -> Notice -> Notification 46 blankNotification target notice = Notification 47 { notificationId = error "blankNotification" 48 , notificationTarget = target 49 , notificationNotice = notice 50 , notificationTime = error "blankNotification" 51 , notificationDelivered = DeliveryNone 52 , notificationAgent = partyRow nobodyParty 53 , notificationParty = Nothing 54 , notificationVolume = Nothing 55 , notificationPermission = Nothing 56 , notificationContainerId = Nothing 57 , notificationSegment = Nothing 58 , notificationAssetId = Nothing 59 , notificationRelease = Nothing 60 , notificationCommentId = Nothing 61 , notificationTag = Nothing 62 }