]> jfr.im git - irc/quakenet/newserv.git/blob - dbapi2/dbapi2.h
LUA: port luadb to dbapi2 to drop postgres dependency
[irc/quakenet/newserv.git] / dbapi2 / dbapi2.h
1 #ifndef __DBAPI2_H
2 #define __DBAPI2_H
3
4 #define DBNAME_LEN 100
5
6 #include "../config.h"
7
8 #define DBAPI2_DEFAULT NULL
9
10 #include <stdlib.h>
11 #include <stdarg.h>
12
13 struct DBAPIConn;
14
15 #ifndef DBAPI2_HANDLE
16 #define DBAPI2_HANDLE void
17 #endif
18
19 #ifndef DBAPI2_RESULT_HANDLE
20 #define DBAPI2_RESULT_HANDLE void
21 #endif
22
23 typedef void *DBAPIUserData;
24
25 struct DBAPIResult;
26
27 typedef DBAPI2_HANDLE *(*DBAPINew)(const struct DBAPIConn *);
28 typedef void (*DBAPIClose)(struct DBAPIConn *);
29
30 typedef void (*DBAPIQueryCallback)(const struct DBAPIResult *, void *);
31
32 typedef void (*DBAPIQuery)(const struct DBAPIConn *, DBAPIQueryCallback, DBAPIUserData, const char *, ...) __attribute__ ((format (printf, 4, 5)));
33 typedef void (*DBAPISimpleQuery)(const struct DBAPIConn *, const char *, ...) __attribute__ ((format (printf, 2, 3)));
34 typedef void (*DBAPIQueryV)(const struct DBAPIConn *, DBAPIQueryCallback, DBAPIUserData, const char *);
35 typedef void (*DBAPICallV)(const struct DBAPIConn *, DBAPIQueryCallback, DBAPIUserData, const char *, const char *);
36 typedef void (*DBAPICreateTable)(const struct DBAPIConn *, DBAPIQueryCallback, DBAPIUserData, const char *, ...) __attribute__ ((format (printf, 4, 5)));
37 typedef void (*DBAPICreateTableV)(const struct DBAPIConn *, DBAPIQueryCallback, DBAPIUserData, const char *);
38 typedef void (*DBAPILoadTable)(const struct DBAPIConn *, DBAPIQueryCallback, DBAPIQueryCallback, DBAPIQueryCallback, DBAPIUserData, const char *);
39
40 typedef void (*DBAPISafeQuery)(const struct DBAPIConn *, DBAPIQueryCallback, DBAPIUserData, const char *, const char *, ...);
41 typedef void (*DBAPISafeSimpleQuery)(const struct DBAPIConn *, const char *, const char *, ...);
42 typedef void (*DBAPISafeCreateTable)(const struct DBAPIConn *, DBAPIQueryCallback, DBAPIUserData, const char *, const char *, ...);
43
44 typedef void (*DBAPIEscapeString)(const struct DBAPIConn *, char *, const char *, size_t);
45 typedef int (*DBAPIQuoteString)(const struct DBAPIConn *, char *, size_t, const char *, size_t);
46 typedef void (*DBAPICall)(const struct DBAPIConn *, DBAPIQueryCallback, DBAPIUserData, const char *, const char *, const char *, ...);
47 typedef void (*DBAPISimpleCall)(const struct DBAPIConn *, const char *, const char *, const char *, ...);
48
49 typedef char *(*DBAPITableName)(const struct DBAPIConn *, const char *);
50
51 struct DBAPIProviderData;
52
53 typedef struct DBAPIProvider {
54 DBAPINew new;
55 DBAPIClose close;
56
57 DBAPIQueryV query;
58 DBAPICreateTableV createtable;
59 DBAPILoadTable loadtable;
60
61 DBAPITableName tablename;
62
63 DBAPIEscapeString escapestring;
64 DBAPIQuoteString quotestring;
65 DBAPICallV call;
66
67 /* private members */
68 struct DBAPIProviderData *__providerdata;
69 } DBAPIProvider;
70
71 typedef struct DBAPIConn {
72 DBAPIClose close;
73
74 DBAPIQuery unsafequery;
75 DBAPISimpleQuery unsafesquery;
76 DBAPICreateTable unsafecreatetable;
77 DBAPILoadTable loadtable;
78 DBAPIEscapeString escapestring; /* deprecated */
79 DBAPITableName tablename;
80
81 DBAPISafeQuery query;
82 DBAPISafeSimpleQuery squery;
83 DBAPISafeCreateTable createtable;
84
85 DBAPICall call;
86 DBAPISimpleCall scall;
87
88 char name[DBNAME_LEN+1];
89
90 void *handle;
91
92 /* private members */
93 DBAPIClose __close;
94 DBAPIQuoteString __quotestring;
95 DBAPIQueryV __query;
96 DBAPICreateTableV __createtable;
97 DBAPILoadTable __loadtable;
98 DBAPICallV __call;
99 } DBAPIConn;
100
101 typedef char *(*DBAPIResultGet)(const struct DBAPIResult *, unsigned int);
102 typedef int (*DBAPIResultNext)(const struct DBAPIResult *);
103 typedef void (*DBAPIResultClear)(const struct DBAPIResult *);
104
105 typedef struct DBAPIResult {
106 DBAPI2_RESULT_HANDLE *handle;
107
108 unsigned short success, fields, affected;
109
110 DBAPIResultGet get;
111 DBAPIResultNext next;
112 DBAPIResultClear clear;
113 } DBAPIResult;
114
115 int registerdbprovider(const char *, DBAPIProvider *);
116 void deregisterdbprovider(int);
117 DBAPIConn *dbapi2open(const char *, const char *);
118
119 #endif