on dev help sign in
More sugary instances
d531baaEitan Chatav
squeal-postgresql/src/Squeal/PostgreSQL/Expression.hs+39−1
@@ -199,10 +199,30 @@ instance (HasUnique relation relations columns, Has column columns ty)
199 => IsLabel column (Expression relations 'Ungrouped params ty) where
199 => IsLabel column (Expression relations 'Ungrouped params ty) where
200 fromLabel = UnsafeExpression $ renderAlias (Alias @column)
200 fromLabel = UnsafeExpression $ renderAlias (Alias @column)
201
201
202+instance (HasUnique relation relations columns, Has column columns ty)
203+ => IsLabel column
204+ (Aliased (Expression relations 'Ungrouped params) (column ::: ty)) where
205+ fromLabel = fromLabel @column `As` Alias @column
206+
207+instance (HasUnique relation relations columns, Has column columns ty)
208+ => IsLabel column
209+ (NP (Aliased (Expression relations 'Ungrouped params)) '[column ::: ty]) where
210+ fromLabel = fromLabel @column :* Nil
211+
202instance (Has relation relations columns, Has column columns ty)
212instance (Has relation relations columns, Has column columns ty)
203 => IsQualified relation column (Expression relations 'Ungrouped params ty) where
213 => IsQualified relation column (Expression relations 'Ungrouped params ty) where
204 relation ! column = UnsafeExpression $
214 relation ! column = UnsafeExpression $
205 renderAlias relation <> "." <> renderAlias column
215 renderAlias relation <> "." <> renderAlias column
216+
217+instance (Has relation relations columns, Has column columns ty)
218+ => IsQualified relation column
219+ (Aliased (Expression relations 'Ungrouped params) (column ::: ty)) where
220+ relation ! column = relation ! column `As` column
221+
222+instance (Has relation relations columns, Has column columns ty)
223+ => IsQualified relation column
224+ (NP (Aliased (Expression relations 'Ungrouped params)) '[column ::: ty]) where
225+ relation ! column = relation ! column :* Nil
206
226
207instance
227instance
208 ( HasUnique relation relations columns
228 ( HasUnique relation relations columns
@@ -211,7 +231,7 @@ instance
211 ) => IsLabel column
231 ) => IsLabel column
212 (Expression relations ('Grouped bys) params ty) where
232 (Expression relations ('Grouped bys) params ty) where
213 fromLabel = UnsafeExpression $ renderAlias (Alias @column)
233 fromLabel = UnsafeExpression $ renderAlias (Alias @column)
214−
234+
215instance
235instance
216 ( Has relation relations columns
236 ( Has relation relations columns
217 , Has column columns ty
237 , Has column columns ty
@@ -221,6 +241,24 @@ instance
221 relation ! column = UnsafeExpression $
241 relation ! column = UnsafeExpression $
222 renderAlias relation <> "." <> renderAlias column
242 renderAlias relation <> "." <> renderAlias column
223
243
244+instance
245+ ( Has relation relations columns
246+ , Has column columns ty
247+ , GroupedBy relation column bys
248+ ) => IsQualified relation column
249+ (Aliased (Expression relations ('Grouped bys) params)
250+ (column ::: ty)) where
251+ relation ! column = relation ! column `As` column
252+
253+instance
254+ ( Has relation relations columns
255+ , Has column columns ty
256+ , GroupedBy relation column bys
257+ ) => IsQualified relation column
258+ ( NP (Aliased (Expression relations ('Grouped bys) params))
259+ '[column ::: ty]) where
260+ relation ! column = relation ! column :* Nil
261+
224-- | analagous to `Nothing`
262-- | analagous to `Nothing`
225--
263--
226-- >>> renderExpression $ null_
264-- >>> renderExpression $ null_
squeal-postgresql/src/Squeal/PostgreSQL/Query.hs+1−1
@@ -114,7 +114,7 @@ let
114 , "col1" ::: 'NotNull 'PGint4 ]
114 , "col1" ::: 'NotNull 'PGint4 ]
115 query =
115 query =
116 select
116 select
117− ((#col1 + #col2) `As` #sum :* #col1 `As` #col1 :* Nil)
117+ ((#col1 + #col2) `As` #sum :* #col1 :* Nil)
118 ( from (table (#tab `As` #t))
118 ( from (table (#tab `As` #t))
119 & where_ (#col1 .> #col2)
119 & where_ (#col1 .> #col2)
120 & where_ (#col2 .> 0) )
120 & where_ (#col2 .> 0) )