adam@6: (** Common metaprogramming patterns for SQL syntax construction *) adam@6: adam@6: val sqexps : env ::: {{Type}} -> fields ::: {Type} -> folder fields -> $(map sql_injectable fields) adam@6: -> $fields -> $(map (sql_exp env [] []) fields) adam@6: (* Convert a record of Ur values into a record of SQL expressions *) adam@6: adam@6: val selector : tn :: Name -> fs ::: {Type} -> ofs ::: {Type} -> [fs ~ ofs] adam@6: => folder fs -> $(map sql_injectable fs) -> $fs adam@6: -> sql_exp [tn = ofs ++ fs] [] [] bool adam@6: (* Build a boolean SQL expression expressing equality of some fields of a table adam@6: * row with a record of Ur values *)