@@ -19,6 +19,8 @@ Squeal data manipulation language.
19 , OverloadedStrings
19 , OverloadedStrings
20 , PatternSynonyms
20 , PatternSynonyms
21 , RankNTypes
21 , RankNTypes
22+ , ScopedTypeVariables
22 , TypeFamilies
24 , TypeFamilies
23 , TypeInType
25 , TypeInType
24 , TypeOperators
26 , TypeOperators
@@ -349,15 +351,13 @@ data ColumnExpression schema from grp params column where
349instance (KnownSymbol alias, column ~ (alias ::: defness :=> ty))
351instance (KnownSymbol alias, column ~ (alias ::: defness :=> ty))
350 => Aliasable alias
352 => Aliasable alias
351 (Expression schema from grp params ty)
353 (Expression schema from grp params ty)
352− (ColumnExpression schema from grp params column)
354+ (ColumnExpression schema from grp params column) where
354− expression `as` alias = Specific (expression `As` alias)
355+ expression `as` alias = Specific (expression `As` alias)
355instance (KnownSymbol alias, columns ~ '[alias ::: defness :=> ty])
356instance (KnownSymbol alias, columns ~ '[alias ::: defness :=> ty])
356 => Aliasable alias
357 => Aliasable alias
357 (Expression schema from grp params ty)
358 (Expression schema from grp params ty)
358− (NP (ColumnExpression schema from grp params) columns)
359+ (NP (ColumnExpression schema from grp params) columns) where
360− expression `as` alias = expression `as` alias :* Nil
360+ expression `as` alias = expression `as` alias :* Nil
361instance (KnownSymbol col, column ~ (col ::: 'Def :=> ty))
361instance (KnownSymbol col, column ~ (col ::: 'Def :=> ty))
362 => DefaultAliasable col (ColumnExpression schema from grp params column) where
362 => DefaultAliasable col (ColumnExpression schema from grp params column) where
363 defaultAs = DefaultAs
363 defaultAs = DefaultAs
@@ -365,6 +365,55 @@ instance (KnownSymbol col, columns ~ '[col ::: 'Def :=> ty])
365 => DefaultAliasable col (NP (ColumnExpression schema from grp params) columns) where
365 => DefaultAliasable col (NP (ColumnExpression schema from grp params) columns) where
366 defaultAs col = defaultAs col :* Nil
366 defaultAs col = defaultAs col :* Nil
368+instance (HasUnique table from columns, Has column columns ty, colty ~ (column ::: defness :=> ty))
369+ => IsLabel column (ColumnExpression schema from 'Ungrouped params colty) where
370+ fromLabel = fromLabel @column `as` Alias
371+instance (HasUnique table from columns, Has column columns ty, columnLabel ~ column, coltys ~ '[column ::: defness :=> ty])
372+ => IsLabel columnLabel
373+ (NP (ColumnExpression schema from 'Ungrouped params) coltys) where
374+ fromLabel = fromLabel @column `as` Alias
376+instance (Has table from columns, Has column columns ty, colty ~ (column ::: defness :=> ty))
377+ => IsQualified table column (ColumnExpression schema from 'Ungrouped params colty) where
378+ tab ! column = tab ! column `as` column
379+instance (Has table from columns, Has column columns ty, coltys ~ '[column ::: defness :=> ty])
380+ => IsQualified table column (NP (ColumnExpression schema from 'Ungrouped params) coltys) where
381+ tab ! column = tab ! column `as` column
384+ ( HasUnique table from columns
385+ , Has column columns ty
386+ , GroupedBy table column bys
387+ , colty ~ (column ::: defness :=> ty)
389+ (ColumnExpression schema from ('Grouped bys) params colty) where
390+ fromLabel = fromLabel @column `as` Alias
392+ ( HasUnique table from columns
393+ , Has column columns ty
394+ , GroupedBy table column bys
395+ , coltys ~ '[column ::: defness :=> ty]
397+ (NP (ColumnExpression schema from ('Grouped bys) params) coltys) where
398+ fromLabel = fromLabel @column `as` Alias
401+ ( Has table from columns
402+ , Has column columns ty
403+ , GroupedBy table column bys
404+ , colty ~ (column ::: defness :=> ty)
405+ ) => IsQualified table column
406+ (ColumnExpression schema from ('Grouped bys) params colty) where
407+ tab ! column = tab ! column `as` column
409+ ( Has table from columns
410+ , Has column columns ty
411+ , GroupedBy table column bys
412+ , coltys ~ '[column ::: defness :=> ty]
413+ ) => IsQualified table column
414+ (NP (ColumnExpression schema from ('Grouped bys) params) coltys) where
415+ tab ! column = tab ! column :* Nil
368renderColumnExpression
417renderColumnExpression
369 :: ColumnExpression schema from grp params column
418 :: ColumnExpression schema from grp params column
370 -> ByteString
419 -> ByteString