src/evsql_test.c
author Tero Marttila <terom@fixme.fi>
Thu, 20 Nov 2008 01:16:24 +0200
branchnew-evsql
changeset 44 9e76ee9729b6
child 45 424ce5ab82fd
permissions -rw-r--r--
more work on the new evsql interface

#include <event2/event.h>

#include "evsql.h"
#include "lib/log.h"
#include "lib/signals.h"
#include "lib/misc.h"

#define CONNINFO_DEFAULT "dbname=dbfs port=5433"

void db_results (struct evsql_result *result, void *arg) {
    uint32_t val;

    static struct evsql_result_info result_info = {
        0, {
            {   EVSQL_FMT_BINARY,   EVSQL_TYPE_UINT32   },
            {   0,                  0                   }
        }
    };


}

void do_query (struct evsql *db) {
    struct evsql_query *query = NULL;

    static struct evsql_query_info query_info = {
        .sql    = "SELECT $1::int4 + 5",

        .params = {
            {   EVSQL_FMT_BINARY,   EVSQL_TYPE_UINT32   },
            {   0,                  0                   }
        }
    };

    // query
    assert((query = evsql_query_exec(db, NULL, &query_info, (uint32_t) 4, db_results, NULL)) != NULL);
}

int main (char argc, char **argv) {
    struct event_base *ev_base = NULL;
    struct signals *signals = NULL;
    struct evsql *db = NULL;

    const char *db_conninfo;
    
    // parse args
    db_conninfo = CONNINFO_DEFAULT;
    
    // init libevent
    if ((ev_base = event_base_new()) == NULL)
        ERROR("event_base_new");
    
    // setup signals
    if ((signals = signals_default(ev_base)) == NULL)
        ERROR("signals_default");

    // setup evsql
    if ((db = evsql_new_pq(ev_base, db_conninfo, NULL, NULL)) == NULL)
        ERROR("evsql_new_pq");

    // run libevent
    INFO("running libevent loop");

    if (event_base_dispatch(ev_base))
        PERROR("event_base_dispatch");
    
    // clean shutdown

error :
    if (db) {
        /* evsql_close(db); */
    }

    if (signals)
        signals_free(signals);

    if (ev_base)
        event_base_free(ev_base);
    
}