on dev help sign in
aliases
commitb3f665159a5f80df56b70e945b72f286b7760423 authorEitan Chatav <eitan.chatav@gmail.com> dateSun 1 Jul 2018, 22:05 (8 years ago) parentf2a2a49
3 files changed+12−1
squeal-postgresql/src/Squeal/PostgreSQL/Binary.hs+1−1 squeal-postgresql/src/Squeal/PostgreSQL/Query.hs+2 squeal-postgresql/src/Squeal/PostgreSQL/Schema.hs+9
squeal-postgresql/src/Squeal/PostgreSQL/Binary.hs+1−1
@@ -88,7 +88,7 @@ let
8888 querySchwarma :: Query Schema
8989 '[ 'NotNull (EnumFrom Schwarma)]
9090 '["fromOnly" ::: 'NotNull (EnumFrom Schwarma)]
91− querySchwarma = values_ (parameter @1 #schwarma `As` #fromOnly :* Nil)
91+ querySchwarma = values_ (parameter @1 #schwarma `As` #fromOnly)
9292:}
9393
9494>>> :{
squeal-postgresql/src/Squeal/PostgreSQL/Query.hs+2
@@ -25,6 +25,8 @@ module Squeal.PostgreSQL.Query
2525 ( -- * Queries
2626 Query (UnsafeQuery, renderQuery)
2727 , Query'
28+ , QueryFrom (..)
29+ , queryFrom
2830 , union
2931 , unionAll
3032 , intersect
squeal-postgresql/src/Squeal/PostgreSQL/Schema.hs+9
@@ -60,6 +60,7 @@ module Squeal.PostgreSQL.Schema
6060 , renderAlias
6161 , renderAliases
6262 , Aliased (As)
63+ , Aliasable (as)
6364 , renderAliasedAs
6465 , AliasesOf
6566 , ZipAliased (..)
@@ -401,6 +402,14 @@ instance (alias0 ~ alias1, alias0 ~ alias2, KnownSymbol alias2)
401402 => IsLabel alias0 (Aliased Alias (alias1 ::: alias2)) where
402403 fromLabel = fromLabel @alias2 `As` fromLabel @alias1
403404
405+class KnownSymbol alias => Aliasable expression alias aliased where
406+ as :: expression -> Alias alias -> aliased
407+instance KnownSymbol alias => Aliasable
408+ (expression ty) alias (Aliased expression (alias ::: ty)) where as = As
409+instance KnownSymbol alias => Aliasable
410+ (expression ty) alias (NP (Aliased expression) '[alias ::: ty])
411+ where
412+ expression `as` alias = expression `As` alias :* Nil
404413-- | >>> let renderMaybe = fromString . maybe "Nothing" (const "Just")
405414-- >>> renderAliasedAs renderMaybe (Just (3::Int) `As` #an_int)
406415-- "Just AS \"an_int\""