123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244 |
- /*
- * $Id$
- *
- * Copyright (C) 2007-2008 1&1 Internet AG
- *
- * This file is part of Kamailio, a free SIP server.
- *
- * Kamailio 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
- *
- * Kamailio 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 this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
- /**
- * \file lib/srdb1/db_query.h
- * \brief Query helper for database drivers
- * \ingroup db1
- *
- * This helper methods for database queries are used from the database
- * SQL driver to do the actual work. Each function uses some functions from
- * the actual driver with function pointers to the concrete, specific
- * implementation.
- */
- #ifndef DB1_QUERY_H
- #define DB1_QUERY_H
- #include "db_key.h"
- #include "db_op.h"
- #include "db_val.h"
- #include "db_con.h"
- #include "db_row.h"
- #include "db_res.h"
- #include "db_cap.h"
- /**
- * \brief Helper function for db queries
- *
- * This method evaluates the actual arguments for the database query and
- * setups the string that is used for the query in the db module.
- * Then its submit the query and stores the result if necessary. It uses for
- * its work the implementation in the concrete database module.
- *
- * \param _h structure representing database connection
- * \param _k key names, if not present the whole table will be returned
- * \param _op operators
- * \param _v values of the keys that must match
- * \param _c column names that should be returned
- * \param _n number of key/value pairs that are compared, if zero then no comparison is done
- * \param _nc number of colums that should be returned
- * \param _o order by the specificied column, optional
- * \param _r the result that is returned, set to NULL if you want to use fetch_result later
- * \param (*val2str) function pointer to the db specific val conversion function
- * \param (*submit_query) function pointer to the db specific query submit function
- * \param (*store_result) function pointer to the db specific store result function
- * \return zero on success, negative on errors
- */
- int db_do_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 (*val2str) (const db1_con_t*,
- const db_val_t*, char*, int*), int (*submit_query)(const db1_con_t* _h,
- const str* _c), int (*store_result)(const db1_con_t* _h, db1_res_t** _r));
- /**
- * \brief Helper function for db queries with update lock
- *
- * This method evaluates the actual arguments for the database query and
- * setups the string that is used for the query in the db module.
- * Then its submit the query and stores the result if necessary. It uses for
- * its work the implementation in the concrete database module.
- *
- * \param _h structure representing database connection
- * \param _k key names, if not present the whole table will be returned
- * \param _op operators
- * \param _v values of the keys that must match
- * \param _c column names that should be returned
- * \param _n number of key/value pairs that are compared, if zero then no comparison is done
- * \param _nc number of colums that should be returned
- * \param _o order by the specificied column, optional
- * \param _r the result that is returned, set to NULL if you want to use fetch_result later
- * \param (*val2str) function pointer to the db specific val conversion function
- * \param (*submit_query) function pointer to the db specific query submit function
- * \param (*store_result) function pointer to the db specific store result function
- * \return zero on success, negative on errors
- */
- int db_do_query_lock(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 (*val2str) (const db1_con_t*,
- const db_val_t*, char*, int*), int (*submit_query)(const db1_con_t* _h,
- const str* _c), int (*store_result)(const db1_con_t* _h, db1_res_t** _r));
- /**
- * \brief Helper function for raw db queries
- *
- * This method evaluates the actual arguments for the database raw query
- * and setups the string that is used for the query in the db module.
- * Then its submit the query and stores the result if necessary.
- * It uses for its work the implementation in the concrete database module.
- *
- * \param _h structure representing database connection
- * \param _s char holding the raw query
- * \param _r the result that is returned
- * \param (*submit_query) function pointer to the db specific query submit function
- * \param (*store_result) function pointer to the db specific store result function
- * \return zero on success, negative on errors
- */
- int db_do_raw_query(const db1_con_t* _h, const str* _s, db1_res_t** _r,
- int (*submit_query)(const db1_con_t* _h, const str* _c),
- int (*store_result)(const db1_con_t* _h, db1_res_t** _r));
- /**
- * \brief Helper function for db insert operations
- *
- * This method evaluates the actual arguments for the database operation
- * and setups the string that is used for the insert operation in the db
- * module. Then its submit the query for the operation. It uses for its work
- * the implementation in the concrete database module.
- *
- * \param _h structure representing database connection
- * \param _k key names
- * \param _v values of the keys
- * \param _n number of key/value pairs
- * \param (*val2str) function pointer to the db specific val conversion function
- * \param (*submit_query) function pointer to the db specific query submit function
- * \return zero on success, negative on errors
- */
- int db_do_insert(const db1_con_t* _h, const db_key_t* _k, const db_val_t* _v,
- const int _n, int (*val2str) (const db1_con_t*, const db_val_t*, char*, int*),
- int (*submit_query)(const db1_con_t* _h, const str* _c));
- /**
- * \brief Helper function for db delete operations
- *
- * This method evaluates the actual arguments for the database operation
- * and setups the string that is used for the delete operation in the db
- * module. Then its submit the query for the operation. It uses for its work
- * the implementation in the concrete database module.
- *
- * \param _h structure representing database connection
- * \param _k key names
- * \param _o operators
- * \param _v values of the keys that must match
- * \param _n number of key/value pairs that are compared, if zero then the whole table is deleted
- * \param (*val2str) function pointer to the db specific val conversion function
- * \param (*submit_query) function pointer to the db specific query submit function
- * \return zero on success, negative on errors
- */
- int db_do_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 (*val2str) (const db1_con_t*,
- const db_val_t*, char*, int*), int (*submit_query)(const db1_con_t* _h,
- const str* _c));
- /**
- * \brief Helper function for db update operations
- *
- * This method evaluates the actual arguments for the database operation
- * and setups the string that is used for the update operation in the db
- * module. Then its submit the query for the operation. It uses for its work
- * the implementation in the concrete database module.
- *
- * \param _h structure representing database connection
- * \param _k key names, if not present the whole table will be returned
- * \param _o operators
- * \param _v values of the keys that must match
- * \param _uk: updated columns
- * \param _uv: updated values of the columns
- * \param _n number of key/value pairs that are compared, if zero then no comparison is done
- * \param _un: number of columns that should be updated
- * \param (*val2str) function pointer to the db specific val conversion function
- * \param (*submit_query) function pointer to the db specific query submit function
- * \return zero on success, negative on errors
- */
- int db_do_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 (*val2str) (const db1_con_t*, const db_val_t*, char*, int*),
- int (*submit_query)(const db1_con_t* _h, const str* _c));
- /**
- * \brief Helper function for db delete operations
- *
- * This helper method evaluates the actual arguments for the database operation
- * and setups the string that is used for the replace operation in the db
- * module. Then its submit the query for the operation. It uses for its work the
- * implementation in the concrete database module.
- *
- * \param _h structure representing database connection
- * \param _k key names, if not present the whole table will be returned
- * \param _v values of the keys that must match
- * \param _n number of key/value pairs that are compared, if zero then no comparison is done
- * \param (*val2str) function pointer to the db specific val conversion function
- * \param (*submit_query) function pointer to the db specific query submit function
- * \return zero on success, negative on errors
- */
- int db_do_replace(const db1_con_t* _h, const db_key_t* _k, const db_val_t* _v,
- const int _n, int (*val2str) (const db1_con_t*, const db_val_t*, char*,
- int*), int (*submit_query)(const db1_con_t* _h, const str* _c));
- /**
- * \brief Helper function for db insert delayed operations
- *
- * This method evaluates the actual arguments for the database operation
- * and setups the string that is used for the insert delayed operation in the db
- * module. Then its submit the query for the operation. It uses for its work
- * the implementation in the concrete database module.
- *
- * \param _h structure representing database connection
- * \param _k key names
- * \param _v values of the keys
- * \param _n number of key/value pairs
- * \param (*val2str) function pointer to the db specific val conversion function
- * \param (*submit_query) function pointer to the db specific query submit function
- * \return zero on success, negative on errors
- */
- int db_do_insert_delayed(const db1_con_t* _h, const db_key_t* _k, const db_val_t* _v,
- const int _n, int (*val2str) (const db1_con_t*, const db_val_t*, char*, int*),
- int (*submit_query)(const db1_con_t* _h, const str* _c));
- /**
- * \brief Initialisation function - should be called from db.c at start-up
- *
- * This initialises the db_query module, and should be called before any functions in db_query are called.
- *
- * \return zero on success, negative on errors
- */
- int db_query_init(void);
-
- #endif
|