00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef DUI_INITDB_P_H
00025 #define DUI_INITDB_P_H
00026
00027 #include "dui-initdb.h"
00028
00035 typedef struct DuiDBPlugin_s DuiDBPlugin;
00036
00037 struct DuiDBConnection_s
00038 {
00039 DuiDBPlugin *provider;
00040 };
00041
00042 struct DuiDBRecordSet_s
00043 {
00044 DuiDBPlugin *provider;
00045 };
00046
00047 struct DuiDBPlugin_s
00048 {
00049 const char * db_provider_name;
00050 void (*plugin_free) (DuiDBPlugin *);
00051 DuiDBConnection * (*connection_new) (const char * dbname,
00052 const char * username,
00053 const char * authentication_token);
00054 void (*connection_free) (DuiDBConnection *);
00055 struct timespec (*get_now) (DuiDBConnection *);
00056 void (*lock) (DuiDBConnection *, const char *);
00057 void (*unlock) (DuiDBConnection *, const char *);
00058
00059 DuiDBRecordSet * (*connection_exec) (DuiDBConnection *, const char *);
00060 DuiDBRecordSet * (*connection_tables) (DuiDBConnection *);
00061 DuiDBRecordSet * (*connection_table_columns) (DuiDBConnection *, const char *);
00062 void (*recordset_free) (DuiDBRecordSet *rs);
00063 int (*recordset_rewind ) (DuiDBRecordSet *);
00064 int (*recordset_fetch_row) (DuiDBRecordSet *rs);
00065 const char * (*recordset_get_value) (DuiDBRecordSet *, const char *);
00066 int (*recordset_get_error) (DuiDBRecordSet *, char **);
00067 };
00068
00069 void dui_db_provider_register (DuiDBPlugin *);
00070
00071 #endif
00072