1{-# language DataKinds #-}
2{-# language FlexibleContexts #-}
3{-# language LambdaCase #-}
4{-# language MultiParamTypeClasses #-}
5{-# language StandaloneKindSignatures #-}
6{-# language TypeFamilies #-}
15import Data.Kind ( Type )
19import Rel8.Aggregate ( Aggregate, Col( A ) )
20import Rel8.Expr ( Expr, Col( E ) )
21import Rel8.FCF ( Eval, Exp )
22import Rel8.Kind.Context ( SContext(..), Reifiable( contextSing ) )
23import Rel8.Schema.HTable.Identity ( HIdentity( HIdentity ) )
24import qualified Rel8.Schema.Kind as K
25import Rel8.Schema.Name ( Name(..), Col( N ) )
26import Rel8.Schema.Null ( Sql )
27import Rel8.Schema.Reify ( Reify, Col(..) )
28import Rel8.Schema.Result ( Col( R ), Result )
29import Rel8.Schema.Spec ( Spec( Spec ) )
31 ( Table, Columns, Context, fromColumns, toColumns
32 , Unreify, reify, unreify
34import Rel8.Table.Recontextualize ( Recontextualize )
35import Rel8.Type ( DBType )
38type Column :: K.Context -> Type -> Type
39type family Column context a where
40 Column (Reify context) a = AColumn context a
41 Column Aggregate a = Aggregate a
42 Column Expr a = Expr a
43 Column Name a = Name a
47type AColumn :: K.Context -> Type -> Type
48newtype AColumn context a = AColumn (Column context a)
51instance (Reifiable context, Sql DBType a) =>
52 Table (Reify context) (AColumn context a)
54 type Context (AColumn context a) = Reify context
55 type Columns (AColumn context a) = HIdentity ('Spec '[] a)
56 type Unreify (AColumn context a) = Column context a
58 fromColumns (HIdentity (Reify a)) = sfromColumn contextSing a
59 toColumns = HIdentity . Reify . stoColumn contextSing
61 unreify _ (AColumn a) = a
65 ( Reifiable context, Reifiable context'
77 -> Col context ('Spec labels a)
80 SAggregate -> \(A a) -> AColumn a
81 SExpr -> \(E a) -> AColumn a
82 SName -> \(N a) -> AColumn a
83 SResult -> \(R a) -> AColumn a
84 SReify context -> \(Reify a) -> AColumn (sfromColumn context a)
90 -> Col context ('Spec labels a)
92 SAggregate -> \(AColumn a) -> A a
93 SExpr -> \(AColumn a) -> E a
94 SName -> \(AColumn a) -> N a
95 SResult -> \(AColumn a) -> R a
96 SReify context -> \(AColumn a) -> Reify (stoColumn context a)
99data TColumn :: K.Context -> Type -> Exp Type
100type instance Eval (TColumn f a) = Column f a
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list