@@ -60,6 +60,7 @@ module Squeal.PostgreSQL.Schema
60 , renderAlias
60 , renderAlias
61 , renderAliases
61 , renderAliases
62 , Aliased (As)
62 , Aliased (As)
63 , renderAliasedAs
64 , renderAliasedAs
64 , AliasesOf
65 , AliasesOf
65 , ZipAliased (..)
66 , ZipAliased (..)
@@ -401,6 +402,14 @@ instance (alias0 ~ alias1, alias0 ~ alias2, KnownSymbol alias2)
401 => IsLabel alias0 (Aliased Alias (alias1 ::: alias2)) where
402 => IsLabel alias0 (Aliased Alias (alias1 ::: alias2)) where
402 fromLabel = fromLabel @alias2 `As` fromLabel @alias1
403 fromLabel = fromLabel @alias2 `As` fromLabel @alias1
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])
412+ expression `as` alias = expression `As` alias :* Nil
404-- | >>> let renderMaybe = fromString . maybe "Nothing" (const "Just")
413-- | >>> let renderMaybe = fromString . maybe "Nothing" (const "Just")
405-- >>> renderAliasedAs renderMaybe (Just (3::Int) `As` #an_int)
414-- >>> renderAliasedAs renderMaybe (Just (3::Int) `As` #an_int)
406-- "Just AS \"an_int\""
415-- "Just AS \"an_int\""