Pārlūkot izejas kodu

db_perlvdb: updated the db api exported fields

Daniel-Constantin Mierla 7 gadi atpakaļ
vecāks
revīzija
c7aa0a9e37

+ 25 - 8
src/modules/db_perlvdb/db_perlvdb.c

@@ -32,18 +32,13 @@ static int mod_init(void);
 
 SV* vdbmod;
 
+static int db_perlvdb_bind_api(db_func_t *dbb);
+
 /*
  * Perl virtual database module interface
  */
 static cmd_export_t cmds[] = {
-	{"db_use_table",	(cmd_function)perlvdb_use_table, 2, 0, 0, 0},
-	{"db_init",		(cmd_function)perlvdb_db_init,   1, 0, 0, 0},
-	{"db_close",		(cmd_function)perlvdb_db_close,  2, 0, 0, 0},
-	{"db_insert",		(cmd_function)perlvdb_db_insert, 2, 0, 0, 0},
-	{"db_update",		(cmd_function)perlvdb_db_update, 2, 0, 0, 0},
-	{"db_delete",		(cmd_function)perlvdb_db_delete, 2, 0, 0, 0},
-	{"db_query",		(cmd_function)perlvdb_db_query, 2, 0, 0, 0},
-	{"db_free_result",	(cmd_function)perlvdb_db_free_result, 2, 0, 0, 0},
+	{"db_bind_api",    (cmd_function)db_perlvdb_bind_api,    0, 0, 0, 0},
 	{0, 0, 0, 0, 0, 0}
 };
 
@@ -82,3 +77,25 @@ static int mod_init(void)
 
 	return 0;
 }
+
+static int db_perlvdb_bind_api(db_func_t *dbb)
+{
+	if(dbb==NULL)
+		return -1;
+
+	memset(dbb, 0, sizeof(db_func_t));
+
+	dbb->use_table        = perlvdb_use_table;
+	dbb->init             = perlvdb_db_init;
+	dbb->close            = perlvdb_db_close;
+	dbb->query            = perlvdb_db_query;
+	dbb->fetch_result     = 0;
+	dbb->raw_query        = 0;
+	dbb->free_result      = perlvdb_db_free_result;
+	dbb->insert           = perlvdb_db_insert;
+	dbb->delete           = perlvdb_db_delete; 
+	dbb->update           = perlvdb_db_update;
+	dbb->replace          = 0;
+
+	return 0;
+}

+ 12 - 11
src/modules/db_perlvdb/perlvdbfunc.c

@@ -53,10 +53,10 @@ long IV2int(SV *in) {
 /*
  * Returns the class part of the URI
  */
-char *parseurl(const char* url) {
+char *parseurl(const str* url) {
 	char *cn;
 
-	cn = strchr(url, ':') + 1;
+	cn = strchr(url->s, ':') + 1;
 	if (strlen(cn) > 0)
 		return cn;
 	else
@@ -105,7 +105,7 @@ int checkobj(SV* obj) {
  * Initialize database module
  * No function should be called before this
  */
-db1_con_t* perlvdb_db_init(const char* url) {
+db1_con_t* perlvdb_db_init(const str* url) {
 	db1_con_t* res;
 
 	char *cn;
@@ -195,7 +195,7 @@ int perlvdb_db_insertreplace(db1_con_t* h, db_key_t* k, db_val_t* v,
 	return IV2int(ret);
 }
 
-int perlvdb_db_insert(db1_con_t* h, db_key_t* k, db_val_t* v, int n) {
+int perlvdb_db_insert(const db1_con_t* h, const db_key_t* k, const db_val_t* v, const int n) {
 	return perlvdb_db_insertreplace(h, k, v, n, PERL_VDB_INSERTMETHOD);
 }
 
@@ -214,8 +214,8 @@ int perlvdb_db_replace(db1_con_t* h, db_key_t* k, db_val_t* v, int n) {
  * v: values of the keys that must match
  * n: number of key=value pairs
  */
-int perlvdb_db_delete(db1_con_t* h, db_key_t* k, db_op_t* o, db_val_t* v,
-		int n) {
+int perlvdb_db_delete(const db1_con_t* h, const db_key_t* k, const db_op_t* o,
+		const db_val_t* v, const int n) {
 	AV *arr;
 	SV *arrref;
 	SV *ret;
@@ -242,8 +242,9 @@ int perlvdb_db_delete(db1_con_t* h, db_key_t* k, db_op_t* o, db_val_t* v,
  * _n: number of key=value pairs
  * _un: number of columns to update
  */
-int perlvdb_db_update(db1_con_t* h, db_key_t* k, db_op_t* o, db_val_t* v,
-	      db_key_t* uk, db_val_t* uv, int n, int un) {
+int perlvdb_db_update(const db1_con_t* h, const db_key_t* k, const db_op_t* o,
+		const db_val_t* v, const db_key_t* uk, const db_val_t* uv,
+		const int n, const int un) {
 
 	AV *condarr;
 	AV *updatearr;
@@ -280,9 +281,9 @@ int perlvdb_db_update(db1_con_t* h, db_key_t* k, db_op_t* o, db_val_t* v,
  * nc: number of columns to return
  * o: order by the specified column
  */
-int perlvdb_db_query(db1_con_t* h, db_key_t* k, db_op_t* op, db_val_t* v,
-			db_key_t* c, int n, int nc,
-			db_key_t o, db1_res_t** r) {
+int perlvdb_db_query(const db1_con_t* h, const db_key_t* k, const db_op_t* op,
+		const db_val_t* v, const db_key_t* c, const int n, const int nc,
+		const db_key_t o, db1_res_t** r) {
 
 
 	AV *condarr;

+ 11 - 10
src/modules/db_perlvdb/perlvdbfunc.h

@@ -38,7 +38,7 @@
  * Initialize/close database module
  * No function should be called before/after this
  */
-db1_con_t* perlvdb_db_init(const char* _url);
+db1_con_t* perlvdb_db_init(const str* _url);
 void perlvdb_db_close(db1_con_t* h);
 
 /*
@@ -47,16 +47,17 @@ void perlvdb_db_close(db1_con_t* h);
  */
 int perlvdb_use_table(db1_con_t* h, const str* t);
 
-int perlvdb_db_insert(db1_con_t* h, db_key_t* k, db_val_t* v, int n);
+int perlvdb_db_insert(const db1_con_t* h, const db_key_t* k, const db_val_t* v, const int n);
 int perlvdb_db_replace(db1_con_t* h, db_key_t* k, db_val_t* v, int n);
-int perlvdb_db_delete(db1_con_t* h, db_key_t* k, db_op_t* o, db_val_t* v, int n);
-int perlvdb_db_update(db1_con_t* h, db_key_t* k, db_op_t* o, db_val_t* v,
-	      db_key_t* uk, db_val_t* uv, int n, int un);
-
-int perlvdb_db_query(db1_con_t* h, db_key_t* k, db_op_t* op, db_val_t* v,
-			db_key_t* c, int n, int nc,
-			db_key_t o, db1_res_t** r);
-
+int perlvdb_db_delete(const db1_con_t* h, const db_key_t* k, const db_op_t* o,
+		const db_val_t* v, const int n);
+int perlvdb_db_update(const db1_con_t* h, const db_key_t* k, const db_op_t* o,
+		const db_val_t* v, const db_key_t* uk, const db_val_t* uv,
+		const int n, const int un);
+
+int perlvdb_db_query(const db1_con_t* h, const db_key_t* k, const db_op_t* op,
+		const db_val_t* v, const db_key_t* c, const int n, const int nc,
+		const db_key_t o, db1_res_t** r);
 int perlvdb_db_free_result(db1_con_t* _h, db1_res_t* _r);
 
 #endif /* _PERLVDBFUNC_H */