mirror of https://git.48k.eu/ogserver
#941 add basic database-independent abstraction (dbi)
Add basic infrastructure to support for the independent database layer.master
parent
a245411ab2
commit
2629906b6d
4
Makefile
4
Makefile
|
@ -12,10 +12,10 @@ CFLAGS += -g -Wall -I../../Includes
|
|||
CPPFLAGS := $(CFLAGS)
|
||||
|
||||
# Opciones de linkado
|
||||
LDFLAGS := -Wl,--no-as-needed $(shell mysql_config --libs) -lev -ljansson
|
||||
LDFLAGS := -Wl,--no-as-needed $(shell mysql_config --libs) -lev -ljansson -ldbi
|
||||
|
||||
# Ficheros objetos
|
||||
OBJS := ../../Includes/Database.o sources/ogAdmServer.o
|
||||
OBJS := ../../Includes/Database.o sources/ogAdmServer.o sources/dbi.o
|
||||
|
||||
|
||||
all: $(PROYECTO)
|
||||
|
|
|
@ -0,0 +1,37 @@
|
|||
#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);
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
#ifndef __OG_DBI
|
||||
#define __OG_DBI
|
||||
|
||||
#include <dbi/dbi.h>
|
||||
|
||||
struct og_dbi_config {
|
||||
const char *user;
|
||||
const char *passwd;
|
||||
const char *host;
|
||||
const char *database;
|
||||
};
|
||||
|
||||
struct og_dbi {
|
||||
dbi_conn conn;
|
||||
dbi_inst inst;
|
||||
};
|
||||
|
||||
struct og_dbi *og_dbi_open(struct og_dbi_config *config);
|
||||
void og_dbi_close(struct og_dbi *db);
|
||||
|
||||
#endif
|
Loading…
Reference in New Issue