From ba2123c675d63c760b9d070b5b51eb941b7eead5 Mon Sep 17 00:00:00 2001 From: Adam Chlipala Date: Tue, 22 Dec 2009 12:13:23 -0500 Subject: Basis.sql_nullable and Top.queryL --- lib/ur/basis.urs | 5 +++++ lib/ur/top.ur | 5 +++++ lib/ur/top.urs | 5 +++++ 3 files changed, 15 insertions(+) (limited to 'lib/ur') diff --git a/lib/ur/basis.urs b/lib/ur/basis.urs index f550ce67..87454ea5 100644 --- a/lib/ur/basis.urs +++ b/lib/ur/basis.urs @@ -484,6 +484,11 @@ val sql_ufunc : tables ::: {{Type}} -> agg ::: {{Type}} -> exps ::: {Type} val sql_octet_length : sql_ufunc blob int +val sql_nullable : tables ::: {{Type}} -> agg ::: {{Type}} -> exps ::: {Type} -> t ::: Type + -> sql_injectable_prim t + -> sql_exp tables agg exps t + -> sql_exp tables agg exps (option t) + (*** Executing queries *) val query : tables ::: {{Type}} -> exps ::: {Type} diff --git a/lib/ur/top.ur b/lib/ur/top.ur index 9a27f6b2..e4e33940 100644 --- a/lib/ur/top.ur +++ b/lib/ur/top.ur @@ -208,6 +208,11 @@ fun foldRX3 [K] [tf1 :: K -> Type] [tf2 :: K -> Type] [tf3 :: K -> Type] [ctx :: {f [nm] [t] [rest] ! r1 r2 r3}{acc}) +fun queryL [tables] [exps] [tables ~ exps] (q : sql_query tables exps) = + query q + (fn r ls => return (r :: ls)) + [] + fun queryI [tables ::: {{Type}}] [exps ::: {Type}] [tables ~ exps] (q : sql_query tables exps) (f : $(exps ++ map (fn fields :: {Type} => $fields) tables) diff --git a/lib/ur/top.urs b/lib/ur/top.urs index 92fb9edd..11547ace 100644 --- a/lib/ur/top.urs +++ b/lib/ur/top.urs @@ -118,6 +118,11 @@ val foldRX3 : K --> tf1 :: (K -> Type) -> tf2 :: (K -> Type) -> tf3 :: (K -> Typ -> r :: {K} -> folder r -> $(map tf1 r) -> $(map tf2 r) -> $(map tf3 r) -> xml ctx [] [] +val queryL : tables ::: {{Type}} -> exps ::: {Type} + -> [tables ~ exps] => + sql_query tables exps + -> transaction (list $(exps ++ map (fn fields :: {Type} => $fields) tables)) + val queryI : tables ::: {{Type}} -> exps ::: {Type} -> [tables ~ exps] => sql_query tables exps -- cgit v1.2.3