1{-# language DataKinds #-}
2{-# language LambdaCase #-}
3{-# language MultiParamTypeClasses #-}
4{-# language StandaloneKindSignatures #-}
5{-# language TypeFamilies #-}
6{-# language UndecidableInstances #-}
14import Data.Kind ( Type )
18import Rel8.Generic.Rel8able
20 , GColumnsADT, gfromColumnsADT, gtoColumnsADT
23import Rel8.Kind.Context ( SContext(..), Reifiable, contextSing )
24import Rel8.Schema.Context ( Col )
25import qualified Rel8.Schema.Kind as K
26import Rel8.Schema.Reify ( Reify, hreify, hunreify )
27import Rel8.Schema.Result ( Result )
29 ( Table, Columns, Context, fromColumns, toColumns
30 , Unreify, reify, unreify
32import Rel8.Table.ADT ( ADT( ADT ) )
33import Rel8.Table.Recontextualize ( Recontextualize )
36type HADT :: K.Context -> K.Rel8able -> Type
37type family HADT context t where
38 HADT (Reify context) t = AHADT context t
39 HADT Result t = t Result
40 HADT context t = ADT t context
43type AHADT :: K.Context -> K.Rel8able -> Type
44newtype AHADT context t = AHADT (HADT context t)
47instance (Rel8able t, Reifiable context) =>
48 Table (Reify context) (AHADT context t)
50 type Context (AHADT context t) = Reify context
51 type Columns (AHADT context t) = GColumnsADT t
52 type Unreify (AHADT context t) = HADT context t
54 fromColumns = sfromColumnsADT contextSing
55 toColumns = stoColumnsADT contextSing
57 unreify _ (AHADT a) = a
61 ( Reifiable context, Reifiable context'
71sfromColumnsADT :: Rel8able t
73 -> GColumnsADT t (Col (Reify context))
75sfromColumnsADT = \case
76 SAggregate -> AHADT . ADT . hunreify
77 SExpr -> AHADT . ADT . hunreify
78 SInsert -> AHADT . ADT . hunreify
79 SName -> AHADT . ADT . hunreify
80 SResult -> AHADT . gunreify . gfromColumnsADT
81 SReify context -> AHADT . sfromColumnsADT context . hunreify
84stoColumnsADT :: Rel8able t
87 -> GColumnsADT t (Col (Reify context))
89 SAggregate -> hreify . (\(AHADT (ADT a)) -> a)
90 SExpr -> hreify . (\(AHADT (ADT a)) -> a)
91 SInsert -> hreify . (\(AHADT (ADT a)) -> a)
92 SName -> hreify . (\(AHADT (ADT a)) -> a)
93 SResult -> gtoColumnsADT . greify . (\(AHADT a) -> a)
94 SReify context -> hreify . stoColumnsADT context . (\(AHADT a) -> 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