src/evsql_test.c
branchnew-evsql
changeset 44 9e76ee9729b6
child 45 424ce5ab82fd
equal deleted inserted replaced
43:5776ace903b5 44:9e76ee9729b6
       
     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