diff --git a/src/modules/db_perlvdb/db_perlvdb.c b/src/modules/db_perlvdb/db_perlvdb.c index 266ece2fc5c..7c158c9b44e 100644 --- a/src/modules/db_perlvdb/db_perlvdb.c +++ b/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; +} \ No newline at end of file diff --git a/src/modules/db_perlvdb/perlvdbfunc.c b/src/modules/db_perlvdb/perlvdbfunc.c index d76d7af9e3a..73a7b1c9dda 100644 --- a/src/modules/db_perlvdb/perlvdbfunc.c +++ b/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; diff --git a/src/modules/db_perlvdb/perlvdbfunc.h b/src/modules/db_perlvdb/perlvdbfunc.h index 65c22a38cc3..5c09fac295f 100644 --- a/src/modules/db_perlvdb/perlvdbfunc.h +++ b/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 */