{-# OPTIONS_GHC -fno-warn-orphans #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
module Database.Relational.Monad.Assign (
Assign, AssignStatement,
extract,
) where
import Database.Relational.Internal.Config (Config)
import Database.Relational.Internal.ContextType (Flat)
import Database.Relational.SqlSyntax
(Predicate, Record, Assignment)
import Database.Relational.Table (Table)
import Database.Relational.Monad.Restrict (Restrict)
import qualified Database.Relational.Monad.Restrict as Restrict
import Database.Relational.Monad.Trans.Assigning (Assignings, extractAssignments)
type Assign r = Assignings r Restrict
type AssignStatement r a = Record Flat r -> Assign r a
extract :: Assign r a -> Config -> ((a, Table r -> [Assignment]), [Predicate Flat])
extract = Restrict.extract . extractAssignments