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)
|
CPPFLAGS := $(CFLAGS)
|
||||||
|
|
||||||
# Opciones de linkado
|
# 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
|
# Ficheros objetos
|
||||||
OBJS := ../../Includes/Database.o sources/ogAdmServer.o
|
OBJS := ../../Includes/Database.o sources/ogAdmServer.o sources/dbi.o
|
||||||
|
|
||||||
|
|
||||||
all: $(PROYECTO)
|
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