module Model.Container.SQL
( selectContainerRow
, selectVolumeContainer
, selectContainer
, setContainerId
) where
import qualified Language.Haskell.TH as TH
import Model.SQL.Select
import Model.Id.Types
import Model.Volume.SQL
import Model.Release.SQL
import Model.Container.Types
selectContainerRow :: Selector
selectContainerRow = selectColumns 'ContainerRow "container" ["id", "top", "name", "date"]
selectVolumeContainer :: Selector
selectVolumeContainer = selectJoin 'Container
[ selectContainerRow
, maybeJoinOn "container.id = slot_release.container AND slot_release.segment = '(,)'"
releaseRow
]
selectContainer :: TH.Name
-> Selector
selectContainer ident = selectJoin '($)
[ selectVolumeContainer
, joinOn "container.volume = volume.id" $ selectVolume ident
]
setContainerId :: Container -> Id Container -> Container
setContainerId o i = o{ containerRow = (containerRow o) { containerId = i } }