mirror of
https://github.com/circuithub/rel8.git
synced 2024-09-11 16:05:41 +03:00
catNulls, but the type don't fit
This commit is contained in:
parent
a60f27b344
commit
397ef4da6f
@ -19,7 +19,7 @@ module Rel8
|
|||||||
, Table
|
, Table
|
||||||
, each
|
, each
|
||||||
, where_
|
, where_
|
||||||
-- , filterMap
|
, catNulls
|
||||||
, limit
|
, limit
|
||||||
, offset
|
, offset
|
||||||
, union
|
, union
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
|
|
||||||
module Rel8.MonadQuery where
|
module Rel8.MonadQuery where
|
||||||
|
|
||||||
import Control.Applicative ( liftA2 )
|
import Control.Applicative ( Const(..), liftA2 )
|
||||||
import Data.Functor.Identity
|
import Data.Functor.Identity
|
||||||
import Numeric.Natural
|
import Numeric.Natural
|
||||||
import Rel8.Column
|
import Rel8.Column
|
||||||
@ -293,27 +293,30 @@ where_ x =
|
|||||||
( (), Opaleye.restrict ( toPrimExpr x ) left, t )
|
( (), Opaleye.restrict ( toPrimExpr x ) left, t )
|
||||||
|
|
||||||
|
|
||||||
-- filterMap
|
catNulls
|
||||||
-- :: forall a nullA b nullB m
|
:: forall a b m
|
||||||
-- . ( Compatible nullA ( Null ( Expr m ) ) a ( Expr m )
|
. ( MonadQuery m
|
||||||
-- , Compatible b ( Expr m ) nullB ( Null ( Expr m ) )
|
, Context a ~ Expr m
|
||||||
-- , Table a, Table b, Context a ~ Context b
|
, Context b ~ Expr m
|
||||||
-- , Table nullA, Table nullB, Context nullA ~ Context nullB
|
, MapTable NotNull a ~ b
|
||||||
-- , MonadQuery m
|
, Recontextualise a NotNull
|
||||||
-- )
|
)
|
||||||
-- => ( nullA -> nullB ) -> m a -> m b
|
=> m a -> m b
|
||||||
-- filterMap f q = do
|
catNulls q = do
|
||||||
-- x <-
|
x <-
|
||||||
-- q
|
q
|
||||||
|
|
||||||
-- let
|
let
|
||||||
-- y =
|
allNotNull :: [ Expr m Bool ]
|
||||||
-- f ( mapTable ( mapC liftNull ) x )
|
allNotNull =
|
||||||
|
getConst
|
||||||
|
( runIdentity
|
||||||
|
<$> traverseTable
|
||||||
|
@Id
|
||||||
|
( traverseC ( \expr -> Const [ isNull ( retype expr ) ] ) )
|
||||||
|
( Identity x )
|
||||||
|
)
|
||||||
|
|
||||||
-- allNotNull :: [ Expr m Bool ]
|
where_ ( and_ allNotNull )
|
||||||
-- allNotNull =
|
|
||||||
-- getConst ( traverseTable @nullB ( traverseC ( \expr -> Const [ isNull expr ] ) ) y )
|
|
||||||
|
|
||||||
-- where_ ( and_ allNotNull )
|
return ( mapTable @NotNull ( mapC retype ) x )
|
||||||
|
|
||||||
-- return ( mapTable ( mapC retype ) y )
|
|
||||||
|
@ -13,6 +13,7 @@ import Data.Monoid
|
|||||||
import Database.PostgreSQL.Simple ( Connection )
|
import Database.PostgreSQL.Simple ( Connection )
|
||||||
import GHC.Generics
|
import GHC.Generics
|
||||||
import Rel8
|
import Rel8
|
||||||
|
import Rel8.Column
|
||||||
|
|
||||||
|
|
||||||
data Part f =
|
data Part f =
|
||||||
@ -262,9 +263,10 @@ select_maybeTable :: Connection -> IO [ Maybe ( HasNull Identity ) ]
|
|||||||
select_maybeTable c =
|
select_maybeTable c =
|
||||||
select c maybeTableQ
|
select c maybeTableQ
|
||||||
|
|
||||||
-- filterMapTest :: MonadQuery m => m _
|
|
||||||
-- filterMapTest =
|
catNullsTest :: MonadQuery m => m ( NotNull ( Expr m ) Int32 )
|
||||||
-- filterMap nullId ( each hasNull )
|
catNullsTest =
|
||||||
|
catNulls ( nullId <$> each hasNull )
|
||||||
|
|
||||||
|
|
||||||
unionTest :: MonadQuery m => m ( Part ( Expr m ) )
|
unionTest :: MonadQuery m => m ( Part ( Expr m ) )
|
||||||
|
Loading…
Reference in New Issue
Block a user