added a driver type getter for database implementations
This commit is contained in:
@@ -22,6 +22,7 @@
|
|||||||
#define DATABASE_H_
|
#define DATABASE_H_
|
||||||
|
|
||||||
typedef enum db_type_t db_type_t;
|
typedef enum db_type_t db_type_t;
|
||||||
|
typedef enum db_driver_t db_driver_t;
|
||||||
typedef struct database_t database_t;
|
typedef struct database_t database_t;
|
||||||
|
|
||||||
#include <utils/enumerator.h>
|
#include <utils/enumerator.h>
|
||||||
@@ -44,6 +45,15 @@ enum db_type_t {
|
|||||||
DB_NULL,
|
DB_NULL,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Database implementation type.
|
||||||
|
*/
|
||||||
|
enum db_driver_t {
|
||||||
|
/** SQLite database */
|
||||||
|
DB_SQLITE,
|
||||||
|
/** MySQL database */
|
||||||
|
DB_MYSQL,
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Interface for a database implementation.
|
* Interface for a database implementation.
|
||||||
@@ -94,6 +104,16 @@ struct database_t {
|
|||||||
*/
|
*/
|
||||||
int (*execute)(database_t *this, int *rowid, char *sql, ...);
|
int (*execute)(database_t *this, int *rowid, char *sql, ...);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the database implementation type.
|
||||||
|
*
|
||||||
|
* To allow driver specific SQL or performance optimizations each database
|
||||||
|
* implementations can be queried for its type.
|
||||||
|
*
|
||||||
|
* @return database implementation type
|
||||||
|
*/
|
||||||
|
db_driver_t (*get_driver)(database_t *this);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Destroy a database connection.
|
* Destroy a database connection.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -592,6 +592,14 @@ static int execute(private_mysql_database_t *this, int *rowid, char *sql, ...)
|
|||||||
conn_release(conn);
|
conn_release(conn);
|
||||||
return affected;
|
return affected;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Implementation of database_t.get_driver
|
||||||
|
*/
|
||||||
|
static db_driver_t get_driver(private_mysql_database_t *this)
|
||||||
|
{
|
||||||
|
return DB_MYSQL;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Implementation of database_t.destroy
|
* Implementation of database_t.destroy
|
||||||
@@ -672,6 +680,7 @@ mysql_database_t *mysql_database_create(char *uri)
|
|||||||
|
|
||||||
this->public.db.query = (enumerator_t* (*)(database_t *this, char *sql, ...))query;
|
this->public.db.query = (enumerator_t* (*)(database_t *this, char *sql, ...))query;
|
||||||
this->public.db.execute = (int (*)(database_t *this, int *rowid, char *sql, ...))execute;
|
this->public.db.execute = (int (*)(database_t *this, int *rowid, char *sql, ...))execute;
|
||||||
|
this->public.db.get_driver = (db_driver_t(*)(database_t*))get_driver;
|
||||||
this->public.db.destroy = (void(*)(database_t*))destroy;
|
this->public.db.destroy = (void(*)(database_t*))destroy;
|
||||||
|
|
||||||
if (!parse_uri(this, uri))
|
if (!parse_uri(this, uri))
|
||||||
|
|||||||
@@ -281,6 +281,14 @@ static int execute(private_sqlite_database_t *this, int *rowid, char *sql, ...)
|
|||||||
return affected;
|
return affected;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Implementation of database_t.get_driver
|
||||||
|
*/
|
||||||
|
static db_driver_t get_driver(private_sqlite_database_t *this)
|
||||||
|
{
|
||||||
|
return DB_SQLITE;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Implementation of database_t.destroy
|
* Implementation of database_t.destroy
|
||||||
*/
|
*/
|
||||||
@@ -312,6 +320,7 @@ sqlite_database_t *sqlite_database_create(char *uri)
|
|||||||
|
|
||||||
this->public.db.query = (enumerator_t* (*)(database_t *this, char *sql, ...))query;
|
this->public.db.query = (enumerator_t* (*)(database_t *this, char *sql, ...))query;
|
||||||
this->public.db.execute = (int (*)(database_t *this, int *rowid, char *sql, ...))execute;
|
this->public.db.execute = (int (*)(database_t *this, int *rowid, char *sql, ...))execute;
|
||||||
|
this->public.db.get_driver = (db_driver_t(*)(database_t*))get_driver;
|
||||||
this->public.db.destroy = (void(*)(database_t*))destroy;
|
this->public.db.destroy = (void(*)(database_t*))destroy;
|
||||||
|
|
||||||
this->mutex = mutex_create(MUTEX_RECURSIVE);
|
this->mutex = mutex_create(MUTEX_RECURSIVE);
|
||||||
|
|||||||
Reference in New Issue
Block a user