b7ae196c99ff91354e217cb49d083498df26743f
[sip-router] / db / db.h
1 /*
2  * $Id$
3  */
4
5 #ifndef DB_H
6 #define DB_H
7
8 #include "db_key.h"
9 #include "db_val.h"
10 #include "db_con.h"
11 #include "db_row.h"
12 #include "db_res.h"
13
14
15 /*
16  * Specify table name that will be used for
17  * subsequent operations
18  */
19 typedef int (*db_use_table_f)(db_con_t* _h, const char* _t);
20
21
22 /*
23  * Initialize database connection and
24  * obtain the connection handle
25  */
26 typedef db_con_t* (*db_init_f) (const char* _sqlurl);
27
28
29 /*
30  * Close a database connection and free
31  * all memory used
32  */
33 typedef void (*db_close_f) (db_con_t* _h); 
34
35
36 /*
37  * Query table for specified rows
38  * _h: structure representing database connection
39  * _k: key names
40  * _v: values of the keys that must match
41  * _c: column names to return
42  * _n: nmber of key=values pairs to compare
43  * _nc: number of columns to return
44  * _o: order by the specified column
45  * _r: Result will be stored in this variable
46  *     NULL if there is no result
47  */
48 typedef int (*db_query_f) (db_con_t* _h, db_key_t* _k, 
49                            db_val_t* _v, db_key_t* _c, 
50                            int _n, int _nc,
51                            db_key_t _o, db_res_t** _r);
52
53
54 /*
55  * Free a result allocated by db_query
56  * _h: structure representing database connection
57  * _r: db_res structure
58  */
59 typedef int (*db_free_query_f) (db_con_t* _h, db_res_t* _r);
60
61
62 /*
63  * Insert a row into specified table
64  * _h: structure representing database connection
65  * _k: key names
66  * _v: values of the keys
67  * _n: number of key=value pairs
68  */
69 typedef int (*db_insert_f) (db_con_t* _h, db_key_t* _k, db_val_t* _v, int _n);
70
71
72 /*
73  * Delete a row from the specified table
74  * _h: structure representing database connection
75  * _k: key names
76  * _v: values of the keys that must match
77  * _n: number of key=value pairs
78  */
79 typedef int (*db_delete_f) (db_con_t* _h, db_key_t* _k, db_val_t* _v, int _n);
80
81
82 /*
83  * Update some rows in the specified table
84  * _h: structure representing database connection
85  * _k: key names
86  * _v: values of the keys that must match
87  * _uk: updated columns
88  * _uv: updated values of the columns
89  * _n: number of key=value pairs
90  * _un: number of columns to update
91  */
92 typedef int (*db_update_f) (db_con_t* _h, db_key_t* _k, db_val_t* _v,
93                             db_key_t* _uk, db_val_t* _uv, int _n, int _un);
94
95
96
97 typedef struct db_func{
98         db_use_table_f  use_table;   /* Specify table name */
99         db_init_f       init;        /* Initialize dabase connection */
100         db_close_f      close;       /* Close database connection */
101         db_query_f      query;       /* query a table */
102         db_free_query_f free_query;  /* Free a query result */
103         db_insert_f     insert;      /* Insert into table */
104         db_delete_f     delete;      /* Delete from table */ 
105         db_update_f     update;      /* Update table */
106 } db_func_t;
107
108
109 /*
110  * Bind database module functions
111  * returns TRUE if everything went OK
112  * FALSE otherwise
113  */
114
115 extern db_func_t dbf;
116
117
118 #define db_use_table  (dbf.use_table)
119 #define db_init       (dbf.init)
120 #define db_close      (dbf.close)
121 #define db_query      (dbf.query)
122 #define db_free_query (dbf.free_query)
123 #define db_insert     (dbf.insert)
124 #define db_delete     (dbf.delete)
125 #define db_update     (dbf.update)
126
127
128 int bind_dbmod(void);
129  
130
131 #endif /* DB_H */