From 51791ce9e4936b649e9331c6581a85868c97e3b0 Mon Sep 17 00:00:00 2001 From: The Arrayser <68914060+TheArrayser@users.noreply.github.com> Date: Mon, 29 Aug 2022 14:58:36 +0200 Subject: [PATCH] main DB file, yay :party: --- cringeDB.h | 73 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 cringeDB.h diff --git a/cringeDB.h b/cringeDB.h new file mode 100644 index 0000000..f71a5e9 --- /dev/null +++ b/cringeDB.h @@ -0,0 +1,73 @@ +//v1 +//Copyright Cringe Studios + +#ifndef _H_CRINGE_DB +#define _H_CRINGE_DB + +typedef int cdb_error; + +//connections +//---------------- +typedef struct cdb_connection_impl * cdb_connection; + +//cdb_connection cdb_databaseConnect(unsigned char ip1, unsigned char ip2, unsigned char ip3, unsigned char ip4, unsigned short port); +cdb_connection cdb_databaseConnect(unsigned char ip[4], unsigned short port, char * username, char * password); +cdb_connection cdb_databaseConnect6(unsigned char ip[16], unsigned short port, char * username, char * password); +cdb_connection cdb_databaseOpen(char * filePath); +void cdb_databaseClose(cdb_connection connection); +//---------------- + + +//transactions +//---------------- +typedef struct cdb_transaction_impl * cdb_transaction; + +cdb_transaction cdb_transactionCreate(cdb_connection connection); +cdb_error cdb_transactionFlush(cdb_transaction transaction); +void cdb_transactionClear(cdb_transaction transaction); +cdb_error cdb_transactionClose(cdb_transaction cdb_transaction); // also flushes the transaction queue +//---------------- + +//DDL +//---------------- +typedef struct cdb_table_impl * cdb_table; + +cdb_error cdb_tableCreate(cdb_transaction transaction, char * tableName); //tableName can only consist of [a-z|A-Z|0-9|_] +cdb_table cdb_tableOpen(cdb_transaction transaction, char * tableName); +cdb_error cdb_tableClose(cdb_transaction transaction, cdb_table table); +cdb_error cdb_tableDelete(cdb_transaction transaction, cdb_table table); +cdb_error cdb_tableRename(cdb_transaction transaction, cdb_table table, char * newTableName); +//---------------- + +//DML +//---------------- +typedef struct cdb_data_impl * cdb_data; + +cdb_error cdb_tableClear(cdb_transaction transaction, cdb_table table); +cdb_error cdb_tableSize(cdb_transaction transaction, cdb_table table); +cdb_error cdb_tableEntryAdd(cdb_transaction transaction, cdb_table table, cdb_data data); +//cdb_tableEntryRemoveBy(); +//---------------- + +//DCL only for network based connection +//---------------- +#define CDB_TABLE_READ (1u) +#define CDB_TABLE_WRITE (1u << 1) +#define CDB_TABLE_MODIFY (1u << 2) +typedef unsigned long cdb_permissions; + +typedef struct cdb_user_impl * cdb_user; + +//Table specific permissions +cdb_error cdb_userSetTablePermissions(cdb_connection connection, cdb_table table, cdb_user user, cdb_permissions permissions); +cdb_permissions cdb_userGetTablePermissions(cdb_connection connection, cdb_table table, cdb_user user); + +//general permissions +cdb_error cdb_userSetGeneralPermissions(cdb_connection connection, cdb_user user, cdb_permissions permissions); +cdb_permissions cdb_userGetGeneralPermissions(cdb_connection connection, cdb_user user); +cdb_user cdb_userCreate(cdb_connection connection, char * username, char * password); +cdb_user cdb_userGet(cdb_connection connection, char * username); +cdb_error cdb_userDelete(cdb_connection connection, cdb_user deleter); +//---------------- + +#endif // _H_CRINGE_DB \ No newline at end of file