#941 add basic database-independent abstraction (dbi)

Add basic infrastructure to support for the independent database layer.
master
OpenGnSys Support Team 2019-05-17 12:26:26 +02:00
parent a245411ab2
commit 2629906b6d
3 changed files with 60 additions and 2 deletions

View File

@ -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)

37
sources/dbi.cpp 100644
View File

@ -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);
}

21
sources/dbi.h 100644
View File

@ -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