YS
Size: a a a
YS
IK
reqextractor :: (Int16, Text, Text) -> Requirement
reqextractor (a,b,c) = Requirement a b c
requirement :: Value Requirement
requirement = fmap reqextractor (composite ((,,) <$> (field . nonNullable) int2 <*> (field . nonNullable) text <*> (field . nonNullable) text))
restextractor :: (Text, [Requirement]) -> Restrictor
restextractor (a,b) = Restrictor a b
restrictor :: Value Restrictor
restrictor = fmap restextractor (composite ((,) <$> (field . nonNullable) text <*> (field . nonNullable) (array (dimension replicateM (element (nonNullable requirement))))))
clusterextractor :: (Int16, Text, [Restrictor]) -> Cluster
clusterextractor (a,b,c) = Cluster a b c
cluster :: Value Cluster
cluster = fmap clusterextractor (composite ((,,) <$> (field . nonNullable) int2 <*> (field . nonNullable) text <*> (field . nonNullable) (array (dimension replicateM (element (nonNullable restrictor))))))
clusterDecoder :: Result Cluster
clusterDecoder = singleRow $ column (nonNullable cluster)
cluster_id | cluster_name | restrictors
------------+--------------+---------------------------------------------------------------
1 | for math | {"(\"Advanced Level GCE\",\"{\"\"(8,Mathematics,A*)\"\"}\")"}
YS
YS
YS
IK
YS
IK
YS
YS
YS
YS
YS
YS
IK
YS
YS
YS
MK
YS
data Foo = Foo {bar :: Int, baz :: Double}
fooRow :: Row Foo
fooRow = do
bar <- column $ nonNullable $ ...
baz <- column $ nonNullable $ ...
pure Foo{..}