From 79b001f6bb2966c345ad2c092b055b0cb25d97e7 Mon Sep 17 00:00:00 2001 From: ygrek Date: Sat, 16 May 2009 22:41:35 +0300 Subject: [PATCH] + demo_caml --- demo/.gitignore | 3 ++- demo/build | 4 ++-- demo/demo_caml.ml | 38 ++++++++++++++++++++++++++++++++++++++ demo/demo_cxx.cpp | 5 +---- 4 files changed, 43 insertions(+), 7 deletions(-) create mode 100644 demo/demo_caml.ml diff --git a/demo/.gitignore b/demo/.gitignore index d82a6c7..dde863f 100644 --- a/demo/.gitignore +++ b/demo/.gitignore @@ -1,6 +1,7 @@ demo_cxx +demo_caml *_gen.* -demo.db +*.cm? # symlinks sqlgg_traits.ml sqlgg_sqlite3.ml diff --git a/demo/build b/demo/build index 316d35d..741fc1b 100755 --- a/demo/build +++ b/demo/build @@ -4,5 +4,5 @@ g++ -g -o demo_cxx demo_cxx.cpp -lsqlite3 ../sqlgg.byte -gen caml ../demo.sql > demo_caml_gen.ml ln -sf ../sqlgg_traits.ml sqlgg_traits.ml ln -sf ../sqlgg_sqlite3.ml sqlgg_sqlite3.ml -ocamlc -w Ase sqlgg_traits.ml -i demo_caml_gen.ml > demo_caml_gen.mli -#ocamlc -w Ase -g -o demo_caml -I +sqlite3 sqlite3.cma sqlgg_sqlite3.ml sqlgg_traits.ml demo_caml_gen.ml demo_caml.ml +ocamlc -w Ase sqlgg_traits.ml -i demo_caml_gen.ml > demo_caml_gen.i +ocamlc -w Alse -g -o demo_caml -I +sqlite3 sqlite3.cma sqlgg_sqlite3.ml sqlgg_traits.ml demo_caml_gen.ml demo_caml.ml diff --git a/demo/demo_caml.ml b/demo/demo_caml.ml new file mode 100644 index 0000000..281bbe6 --- /dev/null +++ b/demo/demo_caml.ml @@ -0,0 +1,38 @@ +open Printf +open Sqlite3 + +module G = Demo_caml_gen.Sqlgg(Sqlgg_sqlite3) + +let explain msg db = printf "%s : %s\n" msg (errmsg db) + +let main () = + let db = db_open ":memory:" in + + (* create tables *) + G.create_person db; + G.create_money db; + + (* add all person records *) + G.add_person db "John" "Black"; + let john = last_insert_rowid db in + G.add_person db "Ivan" "Petrov"; + let ivan = last_insert_rowid db in + G.add_person db "Sancho" "Alvares"; + let sancho = last_insert_rowid db in + + (* add money relations *) + G.add_money db john ivan 200L; + G.add_money db ~src:john ~dst:sancho ~amount:100L; + G.add_money db ~amount:250L ~dst:sancho ~src:john; + G.add_money db sancho ivan 300L; + + (* summarize by person and output *) + G.calc_debit db (printf "%s = %Lu\n"); + + (* properly close database *) + db_close(db); + + () + +let _ = Printexc.print main () + diff --git a/demo/demo_cxx.cpp b/demo/demo_cxx.cpp index e5878df..cc36190 100644 --- a/demo/demo_cxx.cpp +++ b/demo/demo_cxx.cpp @@ -13,10 +13,7 @@ typedef long long int64; int main() { sqlite3* db = NULL; - sqlite3_open("demo.db", &db); - - // clean start - sqlite3_exec(db,"DROP TABLE person; DROP table money;",NULL,NULL,NULL); + sqlite3_open(":memory:", &db); // create tables gen::create_person(db); -- 2.11.4.GIT