on da76712 help sign in
33 lines 872 B history raw
1{-# language MonoLocalBinds #-}
2{-# language NamedFieldPuns #-}
4module Rel8.Statement.Set
5 ( ppSet
6 )
7where
9-- base
10import Data.Foldable ( toList )
11import Prelude ()
13-- opaleye
14import qualified Opaleye.Internal.HaskellDB.Sql.Print as Opaleye
15import qualified Opaleye.Internal.Sql as Opaleye
17-- pretty
18import Text.PrettyPrint ( Doc, (<+>), equals, text )
20-- rel8
21import Rel8.Schema.Name ( Selects, ppColumn )
22import Rel8.Schema.Table ( TableSchema(..) )
23import Rel8.Table.Opaleye ( attributes, exprsWithNames )
26ppSet :: Selects names exprs
27 => TableSchema names -> (exprs -> exprs) -> Doc
28ppSet schema@TableSchema {columns} f =
29 text "SET" <+> Opaleye.commaV ppAssign (toList assigns)
30 where
31 assigns = exprsWithNames columns (f (attributes schema))
32 ppAssign (column, expr) =
33 ppColumn column <+> equals <+> Opaleye.ppSqlExpr (Opaleye.sqlExpr expr)