(* DO NOT EDIT MANUALLY *) (* *) (* generated by sqlgg 0.2.3-43-g8cd5b20 on 2009-11-07T13:43Z *) module Sqlgg (T : Sqlgg_traits.M) = struct let create_person db = T.execute db "CREATE TABLE IF NOT EXISTS person (id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT,surname TEXT)" T.no_params let add_person db ~name ~surname = let set_params stmt = let p = T.start_params stmt 2 in T.set_param_Text p 0 name; T.set_param_Text p 1 surname; T.finish_params p in T.execute db "INSERT INTO person (name,surname) VALUES (@name,@surname)" set_params let create_money db = T.execute db "CREATE TABLE IF NOT EXISTS money (src INTEGER, dst INTEGER, amount INTEGER)" T.no_params let add_money db ~src ~dst ~amount = let set_params stmt = let p = T.start_params stmt 3 in T.set_param_Int p 0 src; T.set_param_Int p 1 dst; T.set_param_Int p 2 amount; T.finish_params p in T.execute db "INSERT INTO money VALUES (@src,@dst,@amount)" set_params let calc_total db callback = let invoke_callback stmt = callback (T.get_column_Text stmt 0) (T.get_column_Int stmt 1) in T.select db "SELECT name || ' ' || surname AS fullname, SUM(amount) as total FROM person JOIN money ON src = id GROUP BY id" T.no_params invoke_callback let list_donors db ~_0 ~limit callback = let invoke_callback stmt = callback (T.get_column_Text stmt 0) in let set_params stmt = let p = T.start_params stmt 2 in T.set_param_Text p 0 _0; T.set_param_Int p 1 limit; T.finish_params p in T.select db "SELECT DISTINCT surname FROM person JOIN money ON src = id AND dst = (SELECT id FROM person WHERE surname LIKE ?) LIMIT ?" set_params invoke_callback let drop_person db = T.execute db "DROP TABLE IF EXISTS person" T.no_params let drop_money db = T.execute db "DROP TABLE IF EXISTS money" T.no_params end (* module Sqlgg *)