module Export where import Data.Functor.ProductIsomorphic (pureP, (|$|), (|*|)) import Data.Int (Int32) import Model import Database.Relational onX :: Relation () (Maybe SetA, SetB) onX = relation $ do a <- queryMaybe setA b <- query setB on $ a ?! intA0' .=. just (b ! intB0') return $ (,) |$| a |*| b assignX :: Update () assignX = update $ \_proj -> do intA0' <-# value (0 :: Int32) return $ pureP () registerX :: Insert (String, Maybe String) registerX = insertValue $ do intC0' <-# value 1 (ph1, ()) <- placeholder (\ph' -> strC1' <-# ph') intC2' <-# value 2 (ph2, ()) <- placeholder (\ph' -> mayStrC3' <-# ph') return $ (,) |$| ph1 |*| ph2 setAFromB :: Pi SetB SetA setAFromB = SetA |$| intB0' |*| strB2' |*| strB2' insertQueryX :: InsertQuery () insertQueryX = insertQuery setAFromB setA deleteX :: Delete () deleteX = delete $ \proj -> do wheres $ proj ! strA1' .=. value "A" return $ pureP ()