{-# OPTIONS_GHC -fno-warn-orphans #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
module Database.Relational.Monad.Restrict (
Restrict, RestrictedStatement,
extract
) where
import Database.Relational.Internal.ContextType (Flat)
import Database.Relational.Internal.Config (Config)
import Database.Relational.SqlSyntax (Predicate, Record)
import Database.Relational.Monad.Trans.Restricting
(Restrictings, extractRestrict)
import Database.Relational.Monad.BaseType (ConfigureQuery, configureQuery)
type Restrict = Restrictings Flat ConfigureQuery
type RestrictedStatement r a = Record Flat r -> Restrict a
extract :: Restrict a -> Config -> (a, [Predicate Flat])
extract = configureQuery . extractRestrict