From 7b58e5e53289dac4f2b3c9e66d88de1e013f0bae Mon Sep 17 00:00:00 2001 From: Enrico Tassi Date: Wed, 5 Oct 2005 08:41:07 +0000 Subject: [PATCH] aded hmysql/ --- helm/ocaml/METAS/meta.helm-extlib.src | 2 +- helm/ocaml/METAS/meta.helm-hmysql.src | 4 ++ helm/ocaml/METAS/meta.helm-metadata.src | 2 +- helm/ocaml/hmysql/.depend | 2 + helm/ocaml/hmysql/Makefile | 12 ++++ helm/ocaml/hmysql/hMysql.ml | 78 +++++++++++++++++++++++++ helm/ocaml/hmysql/hMysql.mli | 56 ++++++++++++++++++ 7 files changed, 154 insertions(+), 2 deletions(-) create mode 100644 helm/ocaml/METAS/meta.helm-hmysql.src create mode 100644 helm/ocaml/hmysql/.depend create mode 100644 helm/ocaml/hmysql/Makefile create mode 100644 helm/ocaml/hmysql/hMysql.ml create mode 100644 helm/ocaml/hmysql/hMysql.mli diff --git a/helm/ocaml/METAS/meta.helm-extlib.src b/helm/ocaml/METAS/meta.helm-extlib.src index 66a04fe82..0bc6287de 100644 --- a/helm/ocaml/METAS/meta.helm-extlib.src +++ b/helm/ocaml/METAS/meta.helm-extlib.src @@ -1,4 +1,4 @@ -requires="unix mysql" +requires="unix" version="0.0.1" archive(byte)="extlib.cma" archive(native)="extlib.cmxa" diff --git a/helm/ocaml/METAS/meta.helm-hmysql.src b/helm/ocaml/METAS/meta.helm-hmysql.src new file mode 100644 index 000000000..144141e28 --- /dev/null +++ b/helm/ocaml/METAS/meta.helm-hmysql.src @@ -0,0 +1,4 @@ +requires="helm-registry mysql helm-extlib" +version="0.0.1" +archive(byte)="hmysql.cma" +archive(native)="hmysql.cmxa" diff --git a/helm/ocaml/METAS/meta.helm-metadata.src b/helm/ocaml/METAS/meta.helm-metadata.src index 9929f1552..a5b138301 100644 --- a/helm/ocaml/METAS/meta.helm-metadata.src +++ b/helm/ocaml/METAS/meta.helm-metadata.src @@ -1,4 +1,4 @@ -requires="mysql helm-cic_proof_checking" +requires="helm-hmysql helm-cic_proof_checking" version="0.0.1" archive(byte)="metadata.cma" archive(native)="metadata.cmxa" diff --git a/helm/ocaml/hmysql/.depend b/helm/ocaml/hmysql/.depend new file mode 100644 index 000000000..e67a0660c --- /dev/null +++ b/helm/ocaml/hmysql/.depend @@ -0,0 +1,2 @@ +hMysql.cmo: hMysql.cmi +hMysql.cmx: hMysql.cmi diff --git a/helm/ocaml/hmysql/Makefile b/helm/ocaml/hmysql/Makefile new file mode 100644 index 000000000..f8ae01744 --- /dev/null +++ b/helm/ocaml/hmysql/Makefile @@ -0,0 +1,12 @@ +PACKAGE = hmysql +REQUIRES = mysql helm-registry helm-extlib +PREDICATES = + +INTERFACE_FILES = \ + hMysql.mli +IMPLEMENTATION_FILES = \ + $(INTERFACE_FILES:%.mli=%.ml) +EXTRA_OBJECTS_TO_INSTALL = +EXTRA_OBJECTS_TO_CLEAN = + +include ../Makefile.common diff --git a/helm/ocaml/hmysql/hMysql.ml b/helm/ocaml/hmysql/hMysql.ml new file mode 100644 index 000000000..c7bfb325e --- /dev/null +++ b/helm/ocaml/hmysql/hMysql.ml @@ -0,0 +1,78 @@ +(* Copyright (C) 2005, HELM Team. + * + * This file is part of HELM, an Hypertextual, Electronic + * Library of Mathematics, developed at the Computer Science + * Department, University of Bologna, Italy. + * + * HELM is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * HELM is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with HELM; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, + * MA 02111-1307, USA. + * + * For details, see the HELM World-Wide-Web page, + * http://cs.unibo.it/helm/. + *) + +type dbd = Mysql.dbd option +type result = Mysql.result option +type error_code = Mysql.error_code + +let profiler = HExtlib.profile "mysql" + +let use_real_db () = + not (Helm_registry.get_opt_default Helm_registry.bool + ~default:false "db.nodb") + +let quick_connect ?host ?database ?port ?password ?user () = + profiler.HExtlib.profile + (fun () -> + if use_real_db () then + (Some (Mysql.quick_connect ?host ?database ?port ?password ?user ())) + else + None) + () + +let disconnect = function + | None -> () + | Some dbd -> profiler.HExtlib.profile Mysql.disconnect dbd + +let escape s = + profiler.HExtlib.profile Mysql.escape s + +let exec dbd s = + match dbd with + | None -> None + | Some dbd -> Some (profiler.HExtlib.profile (Mysql.exec dbd) s) + +let map res ~f = + match res with + | None -> [] + | Some res -> + let map f = Mysql.map res ~f in + profiler.HExtlib.profile map f + +let iter res ~f = + match res with + | None -> () + | Some res -> + let iter f = Mysql.iter res ~f in + profiler.HExtlib.profile iter f + +let errno = function + | None -> Mysql.Connection_error + | Some dbd -> profiler.HExtlib.profile Mysql.errno dbd + +let status = function + | None -> Mysql.StatusError Mysql.Connection_error + | Some dbd -> profiler.HExtlib.profile Mysql.status dbd + diff --git a/helm/ocaml/hmysql/hMysql.mli b/helm/ocaml/hmysql/hMysql.mli new file mode 100644 index 000000000..a5b90593e --- /dev/null +++ b/helm/ocaml/hmysql/hMysql.mli @@ -0,0 +1,56 @@ +(* Copyright (C) 2005, HELM Team. + * + * This file is part of HELM, an Hypertextual, Electronic + * Library of Mathematics, developed at the Computer Science + * Department, University of Bologna, Italy. + * + * HELM is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * HELM is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with HELM; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, + * MA 02111-1307, USA. + * + * For details, see the HELM World-Wide-Web page, + * http://cs.unibo.it/helm/. + *) + +(** + * {2 Proxy module around MySQL conection} + * + * The behaviour of this module is influenced by the Helm_registry boolean value + * of the "db.nodb" key. When set to "false" the module works as expected. When + * set to "true" all functions perform dummy action: connect and disconnect do + * nothing; exec, iter, and map work like the empty set of results has been + * returned; errno and status return Mysql.Connection_error + *) + +type dbd +type result + +(* the exceptions raised are from the Mysql module *) + +val quick_connect : + ?host:string -> + ?database:string -> + ?port:int -> ?password:string -> ?user:string -> unit -> dbd + +val disconnect : dbd -> unit + +val exec: dbd -> string -> result +val map : result -> f:(string option array -> 'a) -> 'a list +val iter : result -> f:(string option array -> unit) -> unit + +val errno : dbd -> Mysql.error_code +val status : dbd -> Mysql.status + +val escape: string -> string + -- 2.39.2