From 65a8a8960b023bcdbe1d2b798be13daf7ab74f45 Mon Sep 17 00:00:00 2001 From: avsdev-cw Date: Wed, 7 Oct 2020 14:47:24 +0100 Subject: [PATCH] Refactored MODB management --- src/modb_management.c | 44 ++-- src/modb_management_p.c | 526 +++++++++++++++++----------------------- src/modb_management_p.h | 17 +- 3 files changed, 259 insertions(+), 328 deletions(-) diff --git a/src/modb_management.c b/src/modb_management.c index c3ac6e2..8569901 100644 --- a/src/modb_management.c +++ b/src/modb_management.c @@ -16,11 +16,11 @@ int modbUse(stored_conn *sconn, modb_ref *modb, int override) } int modbFindUse(stored_conn *sconn, modb_ref *modb) { - return connectionGetUse(sconn, modb) == 1; + return connectionGetMODB(sconn, modb) == 1; } void modbReleaseUse(stored_conn *sconn) { - connectionReleaseMODB(sconn); + connectionUnuseMODB(sconn); } @@ -30,18 +30,18 @@ int modbCreate(stored_conn *sconn, modb_ref *modb) return 0; } if (createMetaTable(sconn, modb) == (uint64_t)-1) { - destroyTable(sconn, modb, SYS_TABLE, STR_LEN(SYS_TABLE)); + destroyMODBTable(sconn, modb, SYS_TABLE, STR_LEN(SYS_TABLE)); return 0; } if (createObjectsTable(sconn, modb) == (uint64_t)-1) { - destroyTable(sconn, modb, META_TABLE, STR_LEN(META_TABLE)); - destroyTable(sconn, modb, SYS_TABLE, STR_LEN(SYS_TABLE)); + destroyMODBTable(sconn, modb, META_TABLE, STR_LEN(META_TABLE)); + destroyMODBTable(sconn, modb, SYS_TABLE, STR_LEN(SYS_TABLE)); return 0; } if (createMDOGroupsTable(sconn, modb) == (uint64_t)-1) { - destroyTable(sconn, modb, OBJECTS_TABLE, STR_LEN(OBJECTS_TABLE)); - destroyTable(sconn, modb, META_TABLE, STR_LEN(META_TABLE)); - destroyTable(sconn, modb, SYS_TABLE, STR_LEN(SYS_TABLE)); + destroyMODBTable(sconn, modb, OBJECTS_TABLE, STR_LEN(OBJECTS_TABLE)); + destroyMODBTable(sconn, modb, META_TABLE, STR_LEN(META_TABLE)); + destroyMODBTable(sconn, modb, SYS_TABLE, STR_LEN(SYS_TABLE)); return 0; } @@ -49,15 +49,15 @@ int modbCreate(stored_conn *sconn, modb_ref *modb) } int modbExists(stored_conn *sconn, modb_ref *modb) { - return tableExists(sconn, modb, META_TABLE, STR_LEN(META_TABLE)); + return MODBTableExists(sconn, modb, META_TABLE, STR_LEN(META_TABLE)); } int modbDestroy(stored_conn *sconn, modb_ref *modb) { uint64_t err = 0 - | destroyTable(sconn, modb, MDO_GROUPS_TABLE, STR_LEN(MDO_GROUPS_TABLE)) - | destroyTable(sconn, modb, OBJECTS_TABLE, STR_LEN(OBJECTS_TABLE)) - | destroyTable(sconn, modb, META_TABLE, STR_LEN(META_TABLE)) - | destroyTable(sconn, modb, SYS_TABLE, STR_LEN(SYS_TABLE)); + | destroyMODBTable(sconn, modb, MDO_GROUPS_TABLE, STR_LEN(MDO_GROUPS_TABLE)) + | destroyMODBTable(sconn, modb, OBJECTS_TABLE, STR_LEN(OBJECTS_TABLE)) + | destroyMODBTable(sconn, modb, META_TABLE, STR_LEN(META_TABLE)) + | destroyMODBTable(sconn, modb, SYS_TABLE, STR_LEN(SYS_TABLE)); return err == 0; } @@ -67,12 +67,12 @@ int modbAccountingCreate(stored_conn *sconn, modb_ref *modb) return 0; } if (createGroupsTable(sconn, modb) == (uint64_t)-1) { - destroyTable(sconn, modb, USERS_TABLE, STR_LEN(USERS_TABLE)); + destroyMODBTable(sconn, modb, USERS_TABLE, STR_LEN(USERS_TABLE)); return 0; } if (createUserGroupsTable(sconn, modb) == (uint64_t)-1) { - destroyTable(sconn, modb, GROUPS_TABLE, STR_LEN(GROUPS_TABLE)); - destroyTable(sconn, modb, USERS_TABLE, STR_LEN(USERS_TABLE)); + destroyMODBTable(sconn, modb, GROUPS_TABLE, STR_LEN(GROUPS_TABLE)); + destroyMODBTable(sconn, modb, USERS_TABLE, STR_LEN(USERS_TABLE)); return 0; } @@ -80,14 +80,14 @@ int modbAccountingCreate(stored_conn *sconn, modb_ref *modb) } int modbAccountingExists(stored_conn *sconn, modb_ref *modb) { - return tableExists(sconn, modb, USERS_TABLE, STR_LEN(USERS_TABLE)); + return MODBTableExists(sconn, modb, USERS_TABLE, STR_LEN(USERS_TABLE)); } int modbAccountingDestroy(stored_conn *sconn, modb_ref *modb) { uint64_t err = 0 - | destroyTable(sconn, modb, USER_GROUPS_TABLE, STR_LEN(USER_GROUPS_TABLE)) - | destroyTable(sconn, modb, GROUPS_TABLE, STR_LEN(GROUPS_TABLE)) - | destroyTable(sconn, modb, USERS_TABLE, STR_LEN(USERS_TABLE)); + | destroyMODBTable(sconn, modb, USER_GROUPS_TABLE, STR_LEN(USER_GROUPS_TABLE)) + | destroyMODBTable(sconn, modb, GROUPS_TABLE, STR_LEN(GROUPS_TABLE)) + | destroyMODBTable(sconn, modb, USERS_TABLE, STR_LEN(USERS_TABLE)); return err == 0; } @@ -100,11 +100,11 @@ int modbMetaExtCreate(stored_conn *sconn, modb_ref *modb, } int modbMetaExtExists(stored_conn *sconn, modb_ref *modb) { - return tableExists(sconn, modb, META_EXT_TABLE, STR_LEN(META_EXT_TABLE)); + return MODBTableExists(sconn, modb, META_EXT_TABLE, STR_LEN(META_EXT_TABLE)); } int modbMetaExtDestroy(stored_conn *sconn, modb_ref *modb) { uint64_t err = 0 - | destroyTable(sconn, modb, META_EXT_TABLE, STR_LEN(META_EXT_TABLE)); + | destroyMODBTable(sconn, modb, META_EXT_TABLE, STR_LEN(META_EXT_TABLE)); return err == 0; } diff --git a/src/modb_management_p.c b/src/modb_management_p.c index dc07ac1..22499e7 100644 --- a/src/modb_management_p.c +++ b/src/modb_management_p.c @@ -20,302 +20,6 @@ struct sconn_modb_use_t { static struct sconn_modb_use_t *storedUses = 0; -uint64_t createSysTable(stored_conn *sconn, modb_ref *modb) -{ - char *qry; - uint64_t res; - size_t qry_len; - str_builder *sb; - - if ((sb = strbld_create()) == 0) { - return (uint64_t)-1; - } - strbld_str(sb, "CREATE TABLE ", 0); - modbTableName_sb(sb, modb, SYS_TABLE, STR_LEN(SYS_TABLE), '`'); - strbld_str(sb, " (" - "`key` VARCHAR(255) NULL, " - "`value` VARCHAR(255) NULL, " - "UNIQUE(`key`)" - ")", 0); - if (strbld_finalize_or_destroy(&sb, &qry, &qry_len) != 0) { - return (uint64_t)-1; - } - - res = simpleQuery(sconn, qry, qry_len); - free(qry); - - return res; -} -uint64_t createMetaTable(stored_conn *sconn, modb_ref *modb) -{ - char *qry; - uint64_t res; - size_t qry_len; - str_builder *sb; - - if ((sb = strbld_create()) == 0) { - return (uint64_t)-1; - } - strbld_str(sb, "CREATE TABLE ", 0); - modbTableName_sb(sb, modb, META_TABLE, STR_LEN(META_TABLE), '`'); - strbld_str(sb, " (" - "`mdo_id` INT UNSIGNED NOT NULL AUTO_INCREMENT, " - "`title` VARCHAR(255) NOT NULL, " - "`owner` INT UNSIGNED NOT NULL, " - "`created` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, " - "`updated` TIMESTAMP on update CURRENT_TIMESTAMP NULL DEFAULT NULL, " - "`deleted` TIMESTAMP NULL DEFAULT NULL, " - "PRIMARY KEY(`mdo_id`)" - ")", 0); - if (strbld_finalize_or_destroy(&sb, &qry, &qry_len) != 0) { - return (uint64_t)-1; - } - - res = simpleQuery(sconn, qry, qry_len); - free(qry); - - return res; -} -uint64_t createObjectsTable(stored_conn *sconn, modb_ref *modb) -{ - char *qry; - uint64_t res; - size_t qry_len; - str_builder *sb; - - if ((sb = strbld_create()) == 0) { - return (uint64_t)-1; - } - strbld_str(sb, "CREATE TABLE ", 0); - modbTableName_sb(sb, modb, OBJECTS_TABLE, STR_LEN(OBJECTS_TABLE), '`'); - strbld_str(sb, " (" - "`mdo_id` INT UNSIGNED NOT NULL, " - "`object` MEDIUMBLOB NOT NULL, " - "PRIMARY KEY (`mdo_id`)" - ")", 0); - if (strbld_finalize_or_destroy(&sb, &qry, &qry_len) != 0) { - return (uint64_t)-1; - } - - res = simpleQuery(sconn, qry, qry_len); - free(qry); - - return res; -} -uint64_t createMDOGroupsTable(stored_conn *sconn, modb_ref *modb) -{ - char *qry; - uint64_t res; - size_t qry_len; - str_builder *sb; - - if ((sb = strbld_create()) == 0) { - return (uint64_t)-1; - } - strbld_str(sb, "CREATE TABLE ", 0); - modbTableName_sb(sb, modb, MDO_GROUPS_TABLE, STR_LEN(MDO_GROUPS_TABLE), '`'); - strbld_str(sb, " (" - "`mdo_id` INT UNSIGNED NOT NULL, " - "`group_id` INT UNSIGNED NOT NULL, " - "INDEX(`mdo_id`), " - "INDEX(`group_id`)" - ")", 0); - if (strbld_finalize_or_destroy(&sb, &qry, &qry_len) != 0) { - return (uint64_t)-1; - } - - res = simpleQuery(sconn, qry, qry_len); - free(qry); - - return res; -} - -uint64_t createUsersTable(stored_conn *sconn, modb_ref *modb) -{ - char *qry; - uint64_t res; - size_t qry_len; - str_builder *sb; - - if ((sb = strbld_create()) == 0) { - return (uint64_t)-1; - } - strbld_str(sb, "CREATE TABLE ", 0); - modbTableName_sb(sb, modb, USERS_TABLE, STR_LEN(USERS_TABLE), '`'); - strbld_str(sb, " (" - "`id` INT UNSIGNED NOT NULL AUTO_INCREMENT, " - "`username` VARCHAR(255) NOT NULL, " - "`email` VARCHAR(255) NOT NULL, " - "`created` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, " - "`updated` TIMESTAMP on update CURRENT_TIMESTAMP NULL DEFAULT NULL, " - "`deleted` TIMESTAMP NULL DEFAULT NULL, " - "PRIMARY KEY (`id`), " - "UNIQUE(`username`), " - "UNIQUE(`email`)" - ")", 0); - if (strbld_finalize_or_destroy(&sb, &qry, &qry_len) != 0) { - return (uint64_t)-1; - } - - res = simpleQuery(sconn, qry, qry_len); - free(qry); - - return res; -} -uint64_t createGroupsTable(stored_conn *sconn, modb_ref *modb) -{ - char *qry; - uint64_t res; - size_t qry_len; - str_builder *sb; - - if ((sb = strbld_create()) == 0) { - return (uint64_t)-1; - } - strbld_str(sb, "CREATE TABLE ", 0); - modbTableName_sb(sb, modb, GROUPS_TABLE, STR_LEN(GROUPS_TABLE), '`'); - strbld_str(sb, " (" - "`id` INT UNSIGNED NOT NULL AUTO_INCREMENT, " - "`name` VARCHAR(255) NOT NULL, " - "`created` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, " - "`updated` TIMESTAMP on update CURRENT_TIMESTAMP NULL DEFAULT NULL, " - "`deleted` TIMESTAMP NULL DEFAULT NULL, " - "PRIMARY KEY (`id`), " - "UNIQUE(`name`)" - ")", 0); - if (strbld_finalize_or_destroy(&sb, &qry, &qry_len) != 0) { - return (uint64_t)-1; - } - - res = simpleQuery(sconn, qry, qry_len); - free(qry); - - return res; -} -uint64_t createUserGroupsTable(stored_conn *sconn, modb_ref *modb) -{ - char *qry; - uint64_t res; - size_t qry_len; - str_builder *sb; - - if ((sb = strbld_create()) == 0) { - return (uint64_t)-1; - } - strbld_str(sb, "CREATE TABLE ", 0); - modbTableName_sb(sb, modb, USER_GROUPS_TABLE, STR_LEN(USER_GROUPS_TABLE), '`'); - strbld_str(sb, " (" - "`user_id` INT UNSIGNED NOT NULL, " - "`group_id` INT UNSIGNED NOT NULL, " - "INDEX(`user_id`), " - "INDEX(`group_id`)" - ")", 0); - if (strbld_finalize_or_destroy(&sb, &qry, &qry_len) != 0) { - return (uint64_t)-1; - } - - res = simpleQuery(sconn, qry, qry_len); - free(qry); - - return res; -} - - -uint64_t createMetaExtTable(stored_conn *sconn, modb_ref *modb, - column_data **col_data, size_t cols) -{ - char *qry; - uint64_t res; - size_t qry_len; - str_builder *sb; - - if ((sb = strbld_create()) == 0) { - return (uint64_t)-1; - } - strbld_str(sb, "CREATE TABLE ", 0); - modbTableName_sb(sb, modb, META_EXT_TABLE, STR_LEN(META_EXT_TABLE), '`'); - strbld_str(sb, " (" - "`mdo_id` INT UNSIGNED NOT NULL", 0); - for (size_t c = 0; c < cols; c++) { - createColumn_sb(sb, *(col_data + c)); - } - strbld_str(sb, ", INDEX (`mdo_id`))", 0); - if (strbld_finalize_or_destroy(&sb, &qry, &qry_len) != 0) { - return (uint64_t)-1; - } - - res = simpleQuery(sconn, qry, qry_len); - free(qry); - - return res; -} - - -int tableExists(stored_conn *sconn, modb_ref *modb, const char *suffix, size_t suffix_len) -{ - char *qry, *res; - size_t qry_len; - str_builder *sb; - int retval = 0; - - if ((sb = strbld_create()) == 0) { - return -errno; - } - strbld_str(sb, "SHOW TABLES LIKE ", 0); - modbTableName_sb(sb, modb, suffix, suffix_len, '\''); - if (strbld_finalize_or_destroy(&sb, &qry, &qry_len) != 0) { - return -errno; - } - - res = scalarString(sconn, qry, qry_len, "Z"); - /* Result: - * 0: query success, no result returned - * 1: query failed, default ("Z") returned - * 2: query success, result does not match required length - * 3: query success, result matches required length (check content) - */ - if (res == 0) { - retval = 0; - } else if (strlen(res) == 1 && strncmp(res, "Z", 1) == 0) { - retval = -1; - } else if (strlen(res) != (modb->name_len + suffix_len)) { - retval = 0; - } else { - retval = strncmp(res, modb->name, modb->name_len) == 0; - } - - if (res != 0) { - free(res); - } - free(qry); - - return retval; -} - - -uint64_t destroyTable(stored_conn *sconn, modb_ref *modb, const char *suffix, size_t suffix_len) -{ - char *qry; - uint64_t res; - size_t qry_len; - str_builder *sb; - - if ((sb = strbld_create()) == 0) { - return (uint64_t)-1; - } - strbld_str(sb, "DROP TABLE ", 0); - modbTableName_sb(sb, modb, suffix, suffix_len, '`'); - if (strbld_finalize_or_destroy(&sb, &qry, &qry_len) != 0) { - return (uint64_t)-1; - } - - res = simpleQuery(sconn, qry, qry_len); - free(qry); - - return res; -} - - struct sconn_modb_use_t *allocUse(stored_conn *sconn, modb_ref *modb) { struct sconn_modb_use_t *ptr = 0; @@ -408,7 +112,7 @@ int connectionUseMODB(stored_conn *sconn, modb_ref *modb, int override) return 0; } -int connectionGetUse(stored_conn *sconn, modb_ref *modb) +int connectionGetMODB(stored_conn *sconn, modb_ref *modb) { struct sconn_modb_use_t *ptr = storedUses; @@ -425,7 +129,7 @@ int connectionGetUse(stored_conn *sconn, modb_ref *modb) return 0; } -void connectionReleaseMODB(stored_conn *sconn) +void connectionUnuseMODB(stored_conn *sconn) { struct sconn_modb_use_t *ptr = storedUses; @@ -442,3 +146,229 @@ void connectionReleaseMODB(stored_conn *sconn) freeUse(ptr); } + + +uint64_t createMODBTable(stored_conn *sconn, modb_ref *modb, const char *suffix, size_t suffix_len, + const char *table_def, size_t table_def_len) +{ + char *qry; + uint64_t res; + size_t qry_len; + str_builder *sb; + + if ((sb = strbld_create()) == 0) { + return (uint64_t)-1; + } + strbld_str(sb, "CREATE TABLE ", 0); + modbTableName_sb(sb, modb, suffix, suffix_len, '`'); + strbld_char(sb, ' '); + strbld_str(sb, table_def, table_def_len); + if (strbld_finalize_or_destroy(&sb, &qry, &qry_len) != 0) { + return (uint64_t)-1; + } + + res = simpleQuery(sconn, qry, qry_len); + free(qry); + + return res; +} + +int MODBTableExists(stored_conn *sconn, modb_ref *modb, const char *suffix, size_t suffix_len) +{ + char *qry, *res; + size_t qry_len; + str_builder *sb; + int retval = 0; + + if ((sb = strbld_create()) == 0) { + return -errno; + } + strbld_str(sb, "SHOW TABLES LIKE ", 0); + modbTableName_sb(sb, modb, suffix, suffix_len, '\''); + if (strbld_finalize_or_destroy(&sb, &qry, &qry_len) != 0) { + return -errno; + } + + res = scalarString(sconn, qry, qry_len, "Z"); + /* Result: + * 0: query success, no result returned + * 1: query failed, default ("Z") returned + * 2: query success, result does not match required length + * 3: query success, result matches required length (check content) + */ + if (res == 0) { + retval = 0; + } else if (strlen(res) == 1 && strncmp(res, "Z", 1) == 0) { + retval = -1; + } else if (strlen(res) != (modb->name_len + suffix_len)) { + retval = 0; + } else { + retval = strncmp(res, modb->name, modb->name_len) == 0; + } + + if (res != 0) { + free(res); + } + free(qry); + + return retval; +} + +uint64_t destroyMODBTable(stored_conn *sconn, modb_ref *modb, const char *suffix, size_t suffix_len) +{ + char *qry; + uint64_t res; + size_t qry_len; + str_builder *sb; + + if ((sb = strbld_create()) == 0) { + return (uint64_t)-1; + } + strbld_str(sb, "DROP TABLE ", 0); + modbTableName_sb(sb, modb, suffix, suffix_len, '`'); + if (strbld_finalize_or_destroy(&sb, &qry, &qry_len) != 0) { + return (uint64_t)-1; + } + + res = simpleQuery(sconn, qry, qry_len); + free(qry); + + return res; +} + + + +uint64_t createSysTable(stored_conn *sconn, modb_ref *modb) +{ + return createMODBTable( + sconn, modb, + SYS_TABLE, STR_LEN(SYS_TABLE), + "(" + "`key` VARCHAR(255) NULL, " + "`value` VARCHAR(255) NULL, " + "UNIQUE(`key`)" + ")", 0 + ); +} +uint64_t createMetaTable(stored_conn *sconn, modb_ref *modb) +{ + return createMODBTable( + sconn, modb, + META_TABLE, STR_LEN(META_TABLE), + "(" + "`mdo_id` INT UNSIGNED NOT NULL AUTO_INCREMENT, " + "`title` VARCHAR(255) NOT NULL, " + "`owner` INT UNSIGNED NOT NULL, " + "`created` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, " + "`updated` TIMESTAMP on update CURRENT_TIMESTAMP NULL DEFAULT NULL, " + "`deleted` TIMESTAMP NULL DEFAULT NULL, " + "PRIMARY KEY(`mdo_id`)" + ")", 0 + ); +} +uint64_t createObjectsTable(stored_conn *sconn, modb_ref *modb) +{ + return createMODBTable( + sconn, modb, + OBJECTS_TABLE, STR_LEN(OBJECTS_TABLE), + "(" + "`mdo_id` INT UNSIGNED NOT NULL, " + "`object` MEDIUMBLOB NOT NULL, " + "PRIMARY KEY (`mdo_id`)" + ")", 0 + ); +} +uint64_t createMDOGroupsTable(stored_conn *sconn, modb_ref *modb) +{ + return createMODBTable( + sconn, modb, + MDO_GROUPS_TABLE, STR_LEN(MDO_GROUPS_TABLE), + "(" + "`mdo_id` INT UNSIGNED NOT NULL, " + "`group_id` INT UNSIGNED NOT NULL, " + "INDEX(`mdo_id`), " + "INDEX(`group_id`)" + ")", 0 + ); +} + +uint64_t createUsersTable(stored_conn *sconn, modb_ref *modb) +{ + return createMODBTable( + sconn, modb, + USERS_TABLE, STR_LEN(USERS_TABLE), + "(" + "`id` INT UNSIGNED NOT NULL AUTO_INCREMENT, " + "`username` VARCHAR(255) NOT NULL, " + "`email` VARCHAR(255) NOT NULL, " + "`created` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, " + "`updated` TIMESTAMP on update CURRENT_TIMESTAMP NULL DEFAULT NULL, " + "`deleted` TIMESTAMP NULL DEFAULT NULL, " + "PRIMARY KEY (`id`), " + "UNIQUE(`username`), " + "UNIQUE(`email`)" + ")", 0 + ); +} +uint64_t createGroupsTable(stored_conn *sconn, modb_ref *modb) +{ + return createMODBTable( + sconn, modb, + GROUPS_TABLE, STR_LEN(GROUPS_TABLE), + "(" + "`id` INT UNSIGNED NOT NULL AUTO_INCREMENT, " + "`name` VARCHAR(255) NOT NULL, " + "`created` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, " + "`updated` TIMESTAMP on update CURRENT_TIMESTAMP NULL DEFAULT NULL, " + "`deleted` TIMESTAMP NULL DEFAULT NULL, " + "PRIMARY KEY (`id`), " + "UNIQUE(`name`)" + ")", 0 + ); +} +uint64_t createUserGroupsTable(stored_conn *sconn, modb_ref *modb) +{ + return createMODBTable( + sconn, modb, + USER_GROUPS_TABLE, STR_LEN(USER_GROUPS_TABLE), + "(" + "`user_id` INT UNSIGNED NOT NULL, " + "`group_id` INT UNSIGNED NOT NULL, " + "INDEX(`user_id`), " + "INDEX(`group_id`)" + ")", 0 + ); +} + +uint64_t createMetaExtTable(stored_conn *sconn, modb_ref *modb, + column_data **col_data, size_t cols) +{ + char *table_def; + size_t table_def_len; + uint64_t ret_val; + + str_builder *sb; + + if ((sb = strbld_create()) == 0) { + return (uint64_t)-1; + } + strbld_str(sb, "(" + "`mdo_id` INT UNSIGNED NOT NULL", 0); + for (size_t c = 0; c < cols; c++) { + createColumn_sb(sb, *(col_data + c)); + } + strbld_str(sb, ", INDEX (`mdo_id`)" + ")", 0); + if (strbld_finalize_or_destroy(&sb, &table_def, &table_def_len) != 0) { + return (uint64_t)-1; + } + + ret_val = createMODBTable( + sconn, modb, + META_EXT_TABLE, STR_LEN(META_EXT_TABLE), + table_def, table_def_len + ); + free(table_def); + + return ret_val; +} diff --git a/src/modb_management_p.h b/src/modb_management_p.h index 8fbc8aa..451b228 100644 --- a/src/modb_management_p.h +++ b/src/modb_management_p.h @@ -8,6 +8,15 @@ #include "modb_types.h" +int connectionUseMODB(stored_conn *sconn, modb_ref *modb, int override); +int connectionGetMODB(stored_conn *sconn, modb_ref *modb); +void connectionUnuseMODB(stored_conn *sconn); + +uint64_t createMODBTable(stored_conn *sconn, modb_ref *modb, const char *suffix, size_t suffix_len, + const char *table_def, size_t table_def_len); +int MODBTableExists(stored_conn *sconn, modb_ref *modb, const char *suffix, size_t suffix_len); +uint64_t destroyMODBTable(stored_conn *sconn, modb_ref *modb, const char *suffix, size_t suffix_len); + uint64_t createSysTable(stored_conn *sconn, modb_ref *modb); uint64_t createMetaTable(stored_conn *sconn, modb_ref *modb); uint64_t createObjectsTable(stored_conn *sconn, modb_ref *modb); @@ -20,12 +29,4 @@ uint64_t createUserGroupsTable(stored_conn *sconn, modb_ref *modb); uint64_t createMetaExtTable(stored_conn *sconn, modb_ref *modb, column_data **col_data, size_t cols); -int tableExists(stored_conn *sconn, modb_ref *modb, const char *suffix, size_t suffix_len); - -uint64_t destroyTable(stored_conn *sconn, modb_ref *modb, const char *suffix, size_t suffix_len); - -int connectionUseMODB(stored_conn *sconn, modb_ref *modb, int override); -int connectionGetUse(stored_conn *sconn, modb_ref *modb); -void connectionReleaseMODB(stored_conn *sconn); - #endif // H__MODB_MANAGEMENT_P__