|
1 |
|
2 #include <event2/event.h> |
|
3 |
|
4 #include "evsql.h" |
|
5 #include "lib/log.h" |
|
6 #include "lib/signals.h" |
|
7 #include "lib/misc.h" |
|
8 |
|
9 #define CONNINFO_DEFAULT "dbname=dbfs port=5433" |
|
10 |
|
11 void db_results (struct evsql_result *result, void *arg) { |
|
12 uint32_t val; |
|
13 |
|
14 static struct evsql_result_info result_info = { |
|
15 0, { |
|
16 { EVSQL_FMT_BINARY, EVSQL_TYPE_UINT32 }, |
|
17 { 0, 0 } |
|
18 } |
|
19 }; |
|
20 |
|
21 |
|
22 } |
|
23 |
|
24 void do_query (struct evsql *db) { |
|
25 struct evsql_query *query = NULL; |
|
26 |
|
27 static struct evsql_query_info query_info = { |
|
28 .sql = "SELECT $1::int4 + 5", |
|
29 |
|
30 .params = { |
|
31 { EVSQL_FMT_BINARY, EVSQL_TYPE_UINT32 }, |
|
32 { 0, 0 } |
|
33 } |
|
34 }; |
|
35 |
|
36 // query |
|
37 assert((query = evsql_query_exec(db, NULL, &query_info, (uint32_t) 4, db_results, NULL)) != NULL); |
|
38 } |
|
39 |
|
40 int main (char argc, char **argv) { |
|
41 struct event_base *ev_base = NULL; |
|
42 struct signals *signals = NULL; |
|
43 struct evsql *db = NULL; |
|
44 |
|
45 const char *db_conninfo; |
|
46 |
|
47 // parse args |
|
48 db_conninfo = CONNINFO_DEFAULT; |
|
49 |
|
50 // init libevent |
|
51 if ((ev_base = event_base_new()) == NULL) |
|
52 ERROR("event_base_new"); |
|
53 |
|
54 // setup signals |
|
55 if ((signals = signals_default(ev_base)) == NULL) |
|
56 ERROR("signals_default"); |
|
57 |
|
58 // setup evsql |
|
59 if ((db = evsql_new_pq(ev_base, db_conninfo, NULL, NULL)) == NULL) |
|
60 ERROR("evsql_new_pq"); |
|
61 |
|
62 // run libevent |
|
63 INFO("running libevent loop"); |
|
64 |
|
65 if (event_base_dispatch(ev_base)) |
|
66 PERROR("event_base_dispatch"); |
|
67 |
|
68 // clean shutdown |
|
69 |
|
70 error : |
|
71 if (db) { |
|
72 /* evsql_close(db); */ |
|
73 } |
|
74 |
|
75 if (signals) |
|
76 signals_free(signals); |
|
77 |
|
78 if (ev_base) |
|
79 event_base_free(ev_base); |
|
80 |
|
81 } |
|
82 |