on dev help sign in
More sugary instances
commitd531baa746ebe90a0352d066e7c8898223c359e8 authorEitan Chatav <eitan.chatav@gmail.com> dateSat 2 Jun 2018, 12:42 (8 years ago) parent6fa1d5f
2 files changed+40−2
squeal-postgresql/src/Squeal/PostgreSQL/Expression.hs+39−1 squeal-postgresql/src/Squeal/PostgreSQL/Query.hs+1−1
squeal-postgresql/src/Squeal/PostgreSQL/Expression.hs+39−1
@@ -199,10 +199,30 @@ instance (HasUnique relation relations columns, Has column columns ty)
199199 => IsLabel column (Expression relations 'Ungrouped params ty) where
200200 fromLabel = UnsafeExpression $ renderAlias (Alias @column)
201201
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+
202212instance (Has relation relations columns, Has column columns ty)
203213 => IsQualified relation column (Expression relations 'Ungrouped params ty) where
204214 relation ! column = UnsafeExpression $
205215 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
206226
207227instance
208228 ( HasUnique relation relations columns
@@ -211,7 +231,7 @@ instance
211231 ) => IsLabel column
212232 (Expression relations ('Grouped bys) params ty) where
213233 fromLabel = UnsafeExpression $ renderAlias (Alias @column)
214−
234+
215235instance
216236 ( Has relation relations columns
217237 , Has column columns ty
@@ -221,6 +241,24 @@ instance
221241 relation ! column = UnsafeExpression $
222242 renderAlias relation <> "." <> renderAlias column
223243
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+
224262-- | analagous to `Nothing`
225263--
226264-- >>> renderExpression $ null_
squeal-postgresql/src/Squeal/PostgreSQL/Query.hs+1−1
@@ -114,7 +114,7 @@ let
114114 , "col1" ::: 'NotNull 'PGint4 ]
115115 query =
116116 select
117− ((#col1 + #col2) `As` #sum :* #col1 `As` #col1 :* Nil)
117+ ((#col1 + #col2) `As` #sum :* #col1 :* Nil)
118118 ( from (table (#tab `As` #t))
119119 & where_ (#col1 .> #col2)
120120 & where_ (#col2 .> 0) )