38 lines
807 B
C
38 lines
807 B
C
#include "dbi.h"
|
|
|
|
struct og_dbi *og_dbi_open(struct og_dbi_config *config)
|
|
{
|
|
struct og_dbi *dbi;
|
|
|
|
dbi = (struct og_dbi *)malloc(sizeof(struct og_dbi));
|
|
if (!dbi)
|
|
return NULL;
|
|
|
|
dbi_initialize_r(NULL, &dbi->inst);
|
|
dbi->conn = dbi_conn_new_r("mysql", dbi->inst);
|
|
if (!dbi->conn) {
|
|
free(dbi);
|
|
return NULL;
|
|
}
|
|
|
|
dbi_conn_set_option(dbi->conn, "host", config->host);
|
|
dbi_conn_set_option(dbi->conn, "username", config->user);
|
|
dbi_conn_set_option(dbi->conn, "password", config->passwd);
|
|
dbi_conn_set_option(dbi->conn, "dbname", config->database);
|
|
dbi_conn_set_option(dbi->conn, "encoding", "UTF-8");
|
|
|
|
if (dbi_conn_connect(dbi->conn) < 0) {
|
|
free(dbi);
|
|
return NULL;
|
|
}
|
|
|
|
return dbi;
|
|
}
|
|
|
|
void og_dbi_close(struct og_dbi *dbi)
|
|
{
|
|
dbi_conn_close(dbi->conn);
|
|
dbi_shutdown_r(dbi->inst);
|
|
free(dbi);
|
|
}
|