1 {-# LANGUAGE OverloadedStrings #-} 2 module Databrary.Model.Release.SQL 3 ( releaseRow 4 , insertRelease 5 , updateRelease 6 , deleteRelease 7 ) where 8 9 import qualified Language.Haskell.TH as TH 10 11 import Databrary.Model.SQL.Select 12 import Databrary.Model.Audit.SQL 13 import Databrary.Model.Slot.SQL 14 15 releaseRow :: Selector -- ^ @'Release'@ 16 releaseRow = selectColumn "slot_release" "release" 17 18 releaseSets :: String -- ^ @'Release'@ 19 -> [(String, String)] 20 releaseSets o = 21 [ ("release", "${" ++ o ++ "}") 22 ] 23 24 insertRelease :: TH.Name -- ^ @'AuditIdentity'@ 25 -> TH.Name -- ^ @'Slot'@ 26 -> TH.Name -- ^ @'Release'@ 27 -> TH.ExpQ 28 insertRelease ident s c = auditInsert ident "slot_release" 29 (slotKeys (nameRef s) ++ releaseSets (nameRef c)) 30 Nothing 31 32 updateRelease :: TH.Name -- ^ @'AuditIdentity'@ 33 -> TH.Name -- ^ @'Slot'@ 34 -> TH.Name -- ^ @'Release'@ 35 -> TH.ExpQ -- ^ @'Release'@ 36 updateRelease ident s c = auditUpdate ident "slot_release" 37 (releaseSets (nameRef c)) 38 (whereEq $ slotKeys (nameRef s)) 39 Nothing 40 41 deleteRelease :: TH.Name -- ^ @'AuditIdentity'@ 42 -> TH.Name -- ^ @'Slot'@ 43 -> TH.ExpQ -- ^ @()@ 44 deleteRelease ident o = auditDelete ident "slot_release" 45 ("container = ${containerId $ containerRow $ slotContainer " ++ os ++ "} AND segment <@ ${slotSegment " ++ os ++ "}") 46 Nothing 47 where os = nameRef o