Make const versions of strings in structs to avoid string copying & pass objects to create/update instead of values
This commit is contained in:
@@ -46,6 +46,7 @@ int tableRowsToGroups(column_data **col_data, size_t n_cols,
|
||||
freeGroups(groups, idx);
|
||||
return -1;
|
||||
}
|
||||
group->name_c = group->name;
|
||||
|
||||
group->created_on = *(col_created->data.ptr_int64 + idx);
|
||||
if (!columnRowIsNull(col_updated, idx)) {
|
||||
@@ -267,8 +268,7 @@ int modbGroupList(stored_conn *sconn, modb_ref *modb, int with_deleted, int with
|
||||
return res;
|
||||
}
|
||||
|
||||
int64_t modbGroupCreate(stored_conn *sconn, modb_ref *modb,
|
||||
unsigned int id, const char *name)
|
||||
int64_t modbGroupCreate(stored_conn *sconn, modb_ref *modb, struct group_t *group)
|
||||
{
|
||||
str_builder *sb;
|
||||
char *table;
|
||||
@@ -277,6 +277,10 @@ int64_t modbGroupCreate(stored_conn *sconn, modb_ref *modb,
|
||||
size_t qry_len;
|
||||
uint64_t qry_ret;
|
||||
|
||||
if (group->name_c == 0) {
|
||||
group->name_c = group->name;
|
||||
}
|
||||
|
||||
if ((sb = strbld_create()) == 0) {
|
||||
return -1;
|
||||
}
|
||||
@@ -285,9 +289,9 @@ int64_t modbGroupCreate(stored_conn *sconn, modb_ref *modb,
|
||||
strbld_str(sb, "INSERT INTO ", 0);
|
||||
escapeTableName_sb(sb, table, table_len);
|
||||
strbld_str(sb, " (`id`, `name`) VALUES (", 0);
|
||||
db_value_sb(sb, TYPE_ID, 1, id);
|
||||
db_value_sb(sb, TYPE_ID, 1, group->id);
|
||||
strbld_char(sb, ',');
|
||||
db_value_sb(sb, TYPE_STRING, 1, name);
|
||||
db_value_sb(sb, TYPE_STRING, 2, group->name_c, group->name_len);
|
||||
strbld_char(sb, ')');
|
||||
|
||||
modbFreeTableName(&table);
|
||||
@@ -300,21 +304,28 @@ int64_t modbGroupCreate(stored_conn *sconn, modb_ref *modb,
|
||||
|
||||
return (int64_t)qry_ret;
|
||||
}
|
||||
int64_t modbGroupUpdate(stored_conn *sconn, modb_ref *modb, unsigned int id,
|
||||
const char *name)
|
||||
int64_t modbGroupUpdate(stored_conn *sconn, modb_ref *modb, unsigned int id, struct group_t *group)
|
||||
{
|
||||
str_builder *sb;
|
||||
char *table, *set;
|
||||
size_t table_len, set_len;
|
||||
int64_t qry_ret;
|
||||
|
||||
if (group->name_c == 0) {
|
||||
group->name_c = group->name;
|
||||
}
|
||||
|
||||
if ((sb = strbld_create()) == 0) {
|
||||
return 0;
|
||||
}
|
||||
columnSetValueStr_sb(sb, "id", TYPE_ID, 1, id);
|
||||
if (name != 0) {
|
||||
if (group->id != 0 && group->id != id) {
|
||||
strbld_char(sb, ',');
|
||||
columnSetValueStr_sb(sb, "name", TYPE_STRING, 1, name);
|
||||
columnSetValueStr_sb(sb, "id", TYPE_ID, 1, group->id);
|
||||
}
|
||||
if (group->name_c != 0) {
|
||||
strbld_char(sb, ',');
|
||||
columnSetValueStr_sb(sb, "name", TYPE_STRING, 2, group->name_c, group->name_len);
|
||||
}
|
||||
if (strbld_finalize_or_destroy(&sb, &set, &set_len) != 0) {
|
||||
return 0;
|
||||
|
||||
@@ -10,6 +10,7 @@ struct group_t {
|
||||
unsigned int id;
|
||||
|
||||
char *name;
|
||||
const char *name_c;
|
||||
size_t name_len;
|
||||
|
||||
int64_t created_on;
|
||||
@@ -36,10 +37,8 @@ int modbGroupByName(stored_conn *sconn, modb_ref *modb, const char *name, int wi
|
||||
int modbGroupList(stored_conn *sconn, modb_ref *modb, int with_deleted, int with_members,
|
||||
struct group_t ***groups, size_t *n_groups);
|
||||
|
||||
int64_t modbGroupCreate(stored_conn *sconn, modb_ref *modb,
|
||||
unsigned int id, const char *name);
|
||||
int64_t modbGroupUpdate(stored_conn *sconn, modb_ref *modb, unsigned int id,
|
||||
const char *name);
|
||||
int64_t modbGroupCreate(stored_conn *sconn, modb_ref *modb, struct group_t *group);
|
||||
int64_t modbGroupUpdate(stored_conn *sconn, modb_ref *modb, unsigned int id, struct group_t *group);
|
||||
int modbGroupDelete(stored_conn *sconn, modb_ref *modb, unsigned int id);
|
||||
int modbGroupDestroy(stored_conn *sconn, modb_ref *modb, unsigned int id);
|
||||
|
||||
|
||||
@@ -14,7 +14,8 @@
|
||||
int tableRowsToMetadataList(column_data **col_data, size_t n_cols,
|
||||
struct metadata_t ***metadata_list, size_t *n_metadatas)
|
||||
{
|
||||
column_data *col_id, *col_title, *col_owner_id, *col_created, *col_updated, *col_deleted;
|
||||
column_data *col_id, *col_type, *col_title, *col_owner_id,
|
||||
*col_created, *col_updated, *col_deleted;
|
||||
size_t n_rows, idx;
|
||||
struct metadata_t *metadata;
|
||||
|
||||
@@ -24,6 +25,7 @@ int tableRowsToMetadataList(column_data **col_data, size_t n_cols,
|
||||
}
|
||||
|
||||
col_id = findColumnByName(col_data, n_cols, "mdo_id");
|
||||
col_type = findColumnByName(col_data, n_cols, "type");
|
||||
col_title = findColumnByName(col_data, n_cols, "title");
|
||||
col_owner_id = findColumnByName(col_data, n_cols, "owner_id");
|
||||
col_created = findColumnByName(col_data, n_cols, "created");
|
||||
@@ -46,10 +48,17 @@ int tableRowsToMetadataList(column_data **col_data, size_t n_cols,
|
||||
|
||||
metadata->id = *(col_id->data.ptr_uint32 + idx);
|
||||
|
||||
if (!moveColumnStrPointer(col_type, idx, 1, &metadata->type, &metadata->type_len)) {
|
||||
freeMetadataList(metadata_list, idx);
|
||||
return -1;
|
||||
}
|
||||
metadata->type_c = metadata->type;
|
||||
|
||||
if (!moveColumnStrPointer(col_title, idx, 1, &metadata->title, &metadata->title_len)) {
|
||||
freeMetadataList(metadata_list, idx);
|
||||
return -1;
|
||||
}
|
||||
metadata->title_c = metadata->title;
|
||||
|
||||
metadata->owner_id = *(col_owner_id->data.ptr_uint32 + idx);
|
||||
|
||||
@@ -304,8 +313,8 @@ int modbMetadataList(stored_conn *sconn, modb_ref *modb, int with_deleted,
|
||||
return res;
|
||||
}
|
||||
|
||||
int64_t modbMetadataCreate(stored_conn *sconn, modb_ref *modb,
|
||||
const struct metadata_t *const metadata)
|
||||
unsigned int modbMetadataCreate(stored_conn *sconn, modb_ref *modb,
|
||||
struct metadata_t *metadata)
|
||||
{
|
||||
str_builder *sb;
|
||||
char *table;
|
||||
@@ -314,6 +323,13 @@ int64_t modbMetadataCreate(stored_conn *sconn, modb_ref *modb,
|
||||
size_t qry_len;
|
||||
uint64_t qry_ret;
|
||||
|
||||
if (metadata->type_c == 0) {
|
||||
metadata->type_c = metadata->type;
|
||||
}
|
||||
if (metadata->title_c == 0) {
|
||||
metadata->title_c = metadata->title;
|
||||
}
|
||||
|
||||
if ((sb = strbld_create()) == 0) {
|
||||
return 0;
|
||||
}
|
||||
@@ -324,9 +340,9 @@ int64_t modbMetadataCreate(stored_conn *sconn, modb_ref *modb,
|
||||
strbld_str(sb, " (`mdo_id`, `type`, `title`, `owner_id`) VALUES (", 0);
|
||||
db_value_sb(sb, TYPE_ID, 1, metadata->id);
|
||||
strbld_char(sb, ',');
|
||||
db_value_sb(sb, TYPE_STRING, 2, metadata->type, metadata->type_len);
|
||||
db_value_sb(sb, TYPE_STRING, 2, metadata->type_c, metadata->type_len);
|
||||
strbld_char(sb, ',');
|
||||
db_value_sb(sb, TYPE_STRING, 2, metadata->title, metadata->title_len);
|
||||
db_value_sb(sb, TYPE_STRING, 2, metadata->title_c, metadata->title_len);
|
||||
strbld_char(sb, ',');
|
||||
if (metadata->owner != 0) {
|
||||
db_value_sb(sb, TYPE_ID, 1, metadata->owner->id);
|
||||
@@ -347,13 +363,20 @@ int64_t modbMetadataCreate(stored_conn *sconn, modb_ref *modb,
|
||||
}
|
||||
|
||||
int64_t modbMetadataReplace(stored_conn *sconn, modb_ref *modb, unsigned int id,
|
||||
const struct metadata_t *const metadata)
|
||||
struct metadata_t *metadata)
|
||||
{
|
||||
str_builder *sb;
|
||||
char *table, *set;
|
||||
size_t table_len, set_len;
|
||||
int64_t qry_ret;
|
||||
|
||||
if (metadata->type_c == 0) {
|
||||
metadata->type_c = metadata->type;
|
||||
}
|
||||
if (metadata->title_c == 0) {
|
||||
metadata->title_c = metadata->title;
|
||||
}
|
||||
|
||||
if ((sb = strbld_create()) == 0) {
|
||||
return 0;
|
||||
}
|
||||
@@ -361,13 +384,13 @@ int64_t modbMetadataReplace(stored_conn *sconn, modb_ref *modb, unsigned int id,
|
||||
strbld_char(sb, ',');
|
||||
columnSetValueStr_sb(sb, "mdo_id", TYPE_ID, 1, metadata->id);
|
||||
}
|
||||
if (metadata->type != 0) {
|
||||
if (metadata->type_c != 0) {
|
||||
strbld_char(sb, ',');
|
||||
columnSetValueStr_sb(sb, "type", TYPE_STRING, 2, metadata->type, metadata->type_len);
|
||||
columnSetValueStr_sb(sb, "type", TYPE_STRING, 2, metadata->type_c, metadata->type_len);
|
||||
}
|
||||
if (metadata->title != 0) {
|
||||
if (metadata->title_c != 0) {
|
||||
strbld_char(sb, ',');
|
||||
columnSetValueStr_sb(sb, "title", TYPE_STRING, 2, metadata->title, metadata->title_len);
|
||||
columnSetValueStr_sb(sb, "title", TYPE_STRING, 2, metadata->title_c, metadata->title_len);
|
||||
}
|
||||
if (metadata->owner != 0) {
|
||||
strbld_char(sb, ',');
|
||||
|
||||
@@ -10,9 +10,11 @@ struct metadata_t {
|
||||
unsigned int id;
|
||||
|
||||
char *type;
|
||||
const char *type_c;
|
||||
size_t type_len;
|
||||
|
||||
char *title;
|
||||
const char *title_c;
|
||||
size_t title_len;
|
||||
|
||||
unsigned int owner_id;
|
||||
@@ -50,11 +52,11 @@ int modbMetadataListByGroupId(stored_conn *sconn, modb_ref *modb, unsigned int g
|
||||
int modbMetadataList(stored_conn *sconn, modb_ref *modb, int with_deleted,
|
||||
struct metadata_t ***metadata_list, size_t *n_metadatas);
|
||||
|
||||
int64_t modbMetadataCreate(stored_conn *sconn, modb_ref *modb,
|
||||
const struct metadata_t *const metadata);
|
||||
unsigned int modbMetadataCreate(stored_conn *sconn, modb_ref *modb,
|
||||
struct metadata_t *metadata);
|
||||
|
||||
int64_t modbMetadataReplace(stored_conn *sconn, modb_ref *modb, unsigned int id,
|
||||
const struct metadata_t *const metadata);
|
||||
struct metadata_t *metadata);
|
||||
int64_t modbMetadataUpdateType(stored_conn *sconn, modb_ref *modb, unsigned int id,
|
||||
const char *type, size_t type_len);
|
||||
int64_t modbMetadataUpdateTitle(stored_conn *sconn, modb_ref *modb, unsigned int id,
|
||||
|
||||
@@ -16,7 +16,6 @@ int tableRowsToMetaExtList(column_data **col_data, size_t n_cols,
|
||||
size_t n_rows, r_idx, c_idx, v_idx;
|
||||
struct meta_ext_t *ext;
|
||||
struct meta_ext_value_t *ext_value;
|
||||
size_t key_len;
|
||||
|
||||
n_rows = (*col_data)->n_values;
|
||||
if (n_rows == 0) {
|
||||
@@ -55,7 +54,7 @@ int tableRowsToMetaExtList(column_data **col_data, size_t n_cols,
|
||||
}
|
||||
ext_value = *(ext->values + v_idx);
|
||||
|
||||
if (strmemcpy(col->name, col->name_len, &ext_value->key, &key_len) != 0) {
|
||||
if (strmemcpy(col->name, col->name_len, &ext_value->key, &ext_value->key_len) != 0) {
|
||||
freeMetaExtList(ext_list, r_idx);
|
||||
return -1;
|
||||
}
|
||||
@@ -418,7 +417,7 @@ int64_t modbMetaExtCreate(stored_conn *sconn, modb_ref *modb, struct meta_ext_t
|
||||
for (idx = 0; idx < meta_ext->n_values; idx++) {
|
||||
ext_value = (*(meta_ext->values + idx));
|
||||
strbld_char(sb, ',');
|
||||
escapeColumnName_sb(sb, 0, 0, ext_value->key_c, 0);
|
||||
escapeColumnName_sb(sb, 0, 0, ext_value->key_c, ext_value->key_len);
|
||||
}
|
||||
strbld_str(sb, ") VALUES (", 0);
|
||||
db_value_sb(sb, TYPE_ID, 1, meta_ext->id);
|
||||
|
||||
@@ -27,7 +27,10 @@ struct meta_ext_t {
|
||||
struct meta_ext_value_t {
|
||||
char *key;
|
||||
const char *key_c;
|
||||
size_t key_len;
|
||||
|
||||
enum e_value_type_t type;
|
||||
|
||||
union {
|
||||
void *raw;
|
||||
int bool;
|
||||
|
||||
@@ -42,6 +42,7 @@ int tableRowsToObjects(column_data **col_data, size_t n_cols,
|
||||
freeObjects(objects, idx);
|
||||
return -1;
|
||||
}
|
||||
object->data_c = object->data;
|
||||
|
||||
*(*objects + idx) = object;
|
||||
}
|
||||
@@ -212,7 +213,7 @@ int modbObjectList(stored_conn *sconn, modb_ref *modb, int with_deleted,
|
||||
}
|
||||
|
||||
int64_t modbObjectCreate(stored_conn *sconn, modb_ref *modb,
|
||||
unsigned int id, const char *data, size_t data_len)
|
||||
struct object_t *object)
|
||||
{
|
||||
str_builder *sb;
|
||||
char *table;
|
||||
@@ -221,6 +222,10 @@ int64_t modbObjectCreate(stored_conn *sconn, modb_ref *modb,
|
||||
size_t qry_len;
|
||||
uint64_t qry_ret;
|
||||
|
||||
if (object->data_c == 0) {
|
||||
object->data_c = object->data;
|
||||
}
|
||||
|
||||
if ((sb = strbld_create()) == 0) {
|
||||
return -1;
|
||||
}
|
||||
@@ -229,9 +234,9 @@ int64_t modbObjectCreate(stored_conn *sconn, modb_ref *modb,
|
||||
strbld_str(sb, "INSERT INTO ", 0);
|
||||
escapeTableName_sb(sb, table, table_len);
|
||||
strbld_str(sb, " (`mdo_id`, `object`) VALUES (", 0);
|
||||
db_value_sb(sb, TYPE_ID, 1, id);
|
||||
db_value_sb(sb, TYPE_ID, 1, object->id);
|
||||
strbld_char(sb, ',');
|
||||
db_value_sb(sb, TYPE_BLOB, 2, data, data_len);
|
||||
db_value_sb(sb, TYPE_BLOB, 2, object->data_c, object->data_len);
|
||||
strbld_char(sb, ')');
|
||||
|
||||
modbFreeTableName(&table);
|
||||
@@ -242,23 +247,31 @@ int64_t modbObjectCreate(stored_conn *sconn, modb_ref *modb,
|
||||
qry_ret = simpleQuery(sconn, qry, qry_len);
|
||||
free(qry);
|
||||
|
||||
return qry_ret == 0 ? id : 0;
|
||||
return qry_ret == 0 ? object->id : 0;
|
||||
}
|
||||
int64_t modbObjectUpdate(stored_conn *sconn, modb_ref *modb, unsigned int id,
|
||||
const char *data, size_t data_len)
|
||||
struct object_t *object)
|
||||
{
|
||||
str_builder *sb;
|
||||
char *table, *set;
|
||||
size_t table_len, set_len;
|
||||
int64_t qry_ret;
|
||||
|
||||
if (object->data_c == 0) {
|
||||
object->data_c = object->data;
|
||||
}
|
||||
|
||||
if ((sb = strbld_create()) == 0) {
|
||||
return 0;
|
||||
}
|
||||
columnSetValueStr_sb(sb, "mdo_id", TYPE_ID, 1, id);
|
||||
if (data != 0) {
|
||||
if (object->id != 0 && object->id != id) {
|
||||
strbld_char(sb, ',');
|
||||
columnSetValueStr_sb(sb, "object", TYPE_BLOB, 2, data, data_len);
|
||||
columnSetValueStr_sb(sb, "mdo_id", TYPE_ID, 1, object->id);
|
||||
}
|
||||
if (object->data_c != 0) {
|
||||
strbld_char(sb, ',');
|
||||
columnSetValueStr_sb(sb, "object", TYPE_BLOB, 2, object->data_c, object->data_len);
|
||||
}
|
||||
if (strbld_finalize_or_destroy(&sb, &set, &set_len) != 0) {
|
||||
return 0;
|
||||
|
||||
@@ -10,6 +10,7 @@ struct object_t {
|
||||
unsigned int id;
|
||||
|
||||
char *data;
|
||||
const char *data_c;
|
||||
size_t data_len;
|
||||
};
|
||||
|
||||
@@ -22,17 +23,13 @@ void freeObjects(struct object_t ***objects_ptr, size_t n_objects);
|
||||
// MODB Objects
|
||||
int modbObjectById(stored_conn *sconn, modb_ref *modb, unsigned int id,
|
||||
struct object_t **object);
|
||||
// Objects by owner
|
||||
// Objects by group
|
||||
// Objects by owner/owner groups
|
||||
|
||||
int modbObjectList(stored_conn *sconn, modb_ref *modb, int with_deleted,
|
||||
struct object_t ***objects, size_t *n_objects);
|
||||
|
||||
int64_t modbObjectCreate(stored_conn *sconn, modb_ref *modb,
|
||||
unsigned int id, const char *data, size_t data_len);
|
||||
int64_t modbObjectCreate(stored_conn *sconn, modb_ref *modb, struct object_t *object);
|
||||
int64_t modbObjectUpdate(stored_conn *sconn, modb_ref *modb, unsigned int id,
|
||||
const char *data, size_t data_len);
|
||||
struct object_t *object);
|
||||
int modbObjectDelete(stored_conn *sconn, modb_ref *modb, unsigned int id);
|
||||
int modbObjectDestroy(stored_conn *sconn, modb_ref *modb, unsigned int id);
|
||||
|
||||
|
||||
@@ -47,11 +47,13 @@ int tableRowsToUsers(column_data **col_data, size_t n_cols,
|
||||
freeUsers(users, idx);
|
||||
return -1;
|
||||
}
|
||||
user->username_c = user->username;
|
||||
|
||||
if (!moveColumnStrPointer(col_email, idx, 1, &user->email, &user->email_len)) {
|
||||
freeUsers(users, idx);
|
||||
return -1;
|
||||
}
|
||||
user->email_c = user->email;
|
||||
|
||||
user->created_on = *(col_created->data.ptr_int64 + idx);
|
||||
if (!columnRowIsNull(col_updated, idx)) {
|
||||
@@ -303,8 +305,7 @@ int modbUserList(stored_conn *sconn, modb_ref *modb, int with_deleted, int with_
|
||||
return res;
|
||||
}
|
||||
|
||||
int64_t modbUserCreate(stored_conn *sconn, modb_ref *modb,
|
||||
unsigned int id, const char *user_name, const char *email)
|
||||
int64_t modbUserCreate(stored_conn *sconn, modb_ref *modb, struct user_t *user)
|
||||
{
|
||||
str_builder *sb;
|
||||
char *table;
|
||||
@@ -313,6 +314,13 @@ int64_t modbUserCreate(stored_conn *sconn, modb_ref *modb,
|
||||
size_t qry_len;
|
||||
uint64_t qry_ret;
|
||||
|
||||
if (user->email_c == 0) {
|
||||
user->email_c = user->email;
|
||||
}
|
||||
if (user->username == 0) {
|
||||
user->username_c = user->username;
|
||||
}
|
||||
|
||||
if ((sb = strbld_create()) == 0) {
|
||||
return -1;
|
||||
}
|
||||
@@ -321,11 +329,11 @@ int64_t modbUserCreate(stored_conn *sconn, modb_ref *modb,
|
||||
strbld_str(sb, "INSERT INTO ", 0);
|
||||
escapeTableName_sb(sb, table, table_len);
|
||||
strbld_str(sb, " (`id`, `username`, `email`) VALUES (", 0);
|
||||
db_value_sb(sb, TYPE_UINT32, 1, id);
|
||||
db_value_sb(sb, TYPE_UINT32, 1, user->id);
|
||||
strbld_char(sb, ',');
|
||||
db_value_sb(sb, TYPE_STRING, 1, user_name);
|
||||
db_value_sb(sb, TYPE_STRING, 2, user->username_c, user->username_len);
|
||||
strbld_char(sb, ',');
|
||||
db_value_sb(sb, TYPE_STRING, 1, email);
|
||||
db_value_sb(sb, TYPE_STRING, 2, user->email_c, user->email_len);
|
||||
strbld_char(sb, ')');
|
||||
|
||||
modbFreeTableName(&table);
|
||||
@@ -338,25 +346,35 @@ int64_t modbUserCreate(stored_conn *sconn, modb_ref *modb,
|
||||
|
||||
return (int64_t)qry_ret;
|
||||
}
|
||||
int64_t modbUserUpdate(stored_conn *sconn, modb_ref *modb, unsigned int id,
|
||||
const char *username, const char *email)
|
||||
int64_t modbUserUpdate(stored_conn *sconn, modb_ref *modb, unsigned int id, struct user_t *user)
|
||||
{
|
||||
str_builder *sb;
|
||||
char *table, *set;
|
||||
size_t table_len, set_len;
|
||||
int64_t qry_ret;
|
||||
|
||||
if (user->email_c == 0) {
|
||||
user->email_c = user->email;
|
||||
}
|
||||
if (user->username == 0) {
|
||||
user->username_c = user->username;
|
||||
}
|
||||
|
||||
if ((sb = strbld_create()) == 0) {
|
||||
return 0;
|
||||
}
|
||||
columnSetValueStr_sb(sb, "id", TYPE_ID, 1, id);
|
||||
if (username != 0) {
|
||||
if (user->id != 0 && user->id != id) {
|
||||
strbld_char(sb, ',');
|
||||
columnSetValueStr_sb(sb, "username", TYPE_STRING, 1, username);
|
||||
columnSetValueStr_sb(sb, "id", TYPE_ID, 1, user->id);
|
||||
}
|
||||
if (email != 0) {
|
||||
if (user->username_c != 0) {
|
||||
strbld_char(sb, ',');
|
||||
columnSetValueStr_sb(sb, "email", TYPE_STRING, 1, email);
|
||||
columnSetValueStr_sb(sb, "username", TYPE_STRING, 2, user->username_c, user->username_len);
|
||||
}
|
||||
if (user->email_c != 0) {
|
||||
strbld_char(sb, ',');
|
||||
columnSetValueStr_sb(sb, "email", TYPE_STRING, 2, user->email_c, user->email_len);
|
||||
}
|
||||
if (strbld_finalize_or_destroy(&sb, &set, &set_len) != 0) {
|
||||
return 0;
|
||||
|
||||
@@ -10,9 +10,11 @@ struct user_t {
|
||||
unsigned int id;
|
||||
|
||||
char *username;
|
||||
const char *username_c;
|
||||
size_t username_len;
|
||||
|
||||
char *email;
|
||||
const char *email_c;
|
||||
size_t email_len;
|
||||
|
||||
int64_t created_on;
|
||||
@@ -43,10 +45,8 @@ int modbUserSearch(stored_conn *sconn, modb_ref *modb, const char *username_emai
|
||||
int modbUserList(stored_conn *sconn, modb_ref *modb, int with_deleted, int with_groups,
|
||||
struct user_t ***users, size_t *n_users);
|
||||
|
||||
int64_t modbUserCreate(stored_conn *sconn, modb_ref *modb,
|
||||
unsigned int id, const char *username, const char *email);
|
||||
int64_t modbUserUpdate(stored_conn *sconn, modb_ref *modb, unsigned int id,
|
||||
const char *username, const char *email);
|
||||
int64_t modbUserCreate(stored_conn *sconn, modb_ref *modb, struct user_t *user);
|
||||
int64_t modbUserUpdate(stored_conn *sconn, modb_ref *modb, unsigned int id, struct user_t *user);
|
||||
int modbUserDelete(stored_conn *sconn, modb_ref *modb, unsigned int id);
|
||||
int modbUserDestroy(stored_conn *sconn, modb_ref *modb, unsigned int id);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user