Removed types file and put each type struct with the code for that type
This commit is contained in:
@@ -2,7 +2,7 @@
|
|||||||
#define H__MODB_DATABASE__
|
#define H__MODB_DATABASE__
|
||||||
|
|
||||||
#include "database.h"
|
#include "database.h"
|
||||||
#include "modb_types.h"
|
#include "modb_ref.h"
|
||||||
|
|
||||||
|
|
||||||
// Connection reference
|
// Connection reference
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
|
|
||||||
#include "database.h"
|
#include "database.h"
|
||||||
#include "modb_types.h"
|
#include "modb_ref.h"
|
||||||
|
|
||||||
|
|
||||||
int connectionUseMODB(stored_conn *sconn, modb_ref *modb, int override);
|
int connectionUseMODB(stored_conn *sconn, modb_ref *modb, int override);
|
||||||
|
|||||||
@@ -2,7 +2,8 @@
|
|||||||
#define H__MODB_GROUPS__
|
#define H__MODB_GROUPS__
|
||||||
|
|
||||||
#include "database.h"
|
#include "database.h"
|
||||||
#include "modb_types.h"
|
#include "modb_ref.h"
|
||||||
|
|
||||||
|
|
||||||
// Group object
|
// Group object
|
||||||
struct group_t {
|
struct group_t {
|
||||||
|
|||||||
@@ -3,11 +3,14 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
#include "modb_metadata.h"
|
#include "modb_metadata.h"
|
||||||
|
#include "modb_objects.h"
|
||||||
|
#include "modb_metadata_ext.h"
|
||||||
#include "modb_users.h"
|
#include "modb_users.h"
|
||||||
#include "modb_groups.h"
|
#include "modb_groups.h"
|
||||||
#include "modb_p.h"
|
#include "modb_p.h"
|
||||||
|
|
||||||
|
|
||||||
|
// ##### PRIVATE
|
||||||
int tableRowsToMetadataList(column_data **col_data, size_t n_cols,
|
int tableRowsToMetadataList(column_data **col_data, size_t n_cols,
|
||||||
struct metadata_t ***metadata_list, size_t *n_metadatas)
|
struct metadata_t ***metadata_list, size_t *n_metadatas)
|
||||||
{
|
{
|
||||||
@@ -141,6 +144,83 @@ int doScalarMetadataListQuery(stored_conn *sconn, modb_ref *modb,
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// ##### PUBLIC
|
||||||
|
struct metadata_t *allocMetadata(void)
|
||||||
|
{
|
||||||
|
struct metadata_t *metadata;
|
||||||
|
|
||||||
|
metadata = malloc(sizeof(struct metadata_t));
|
||||||
|
if (metadata == 0) {
|
||||||
|
fprintf(stderr, "[%d]malloc: (%d) %s\n", __LINE__, errno, strerror(errno));
|
||||||
|
}
|
||||||
|
memset(metadata, 0, sizeof(struct metadata_t));
|
||||||
|
|
||||||
|
return metadata;
|
||||||
|
}
|
||||||
|
struct metadata_t **allocMetadataList(size_t n_metadatas)
|
||||||
|
{
|
||||||
|
struct metadata_t **metadatas;
|
||||||
|
|
||||||
|
metadatas = (struct metadata_t **)malloc(sizeof(struct metadata_t *) * n_metadatas);
|
||||||
|
if (metadatas == 0) {
|
||||||
|
fprintf(stderr, "[%d]malloc: (%d) %s\n", __LINE__, errno, strerror(errno));
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
memset(metadatas, 0, sizeof(struct metadata_t *) * n_metadatas);
|
||||||
|
|
||||||
|
return metadatas;
|
||||||
|
}
|
||||||
|
void freeMetadata(struct metadata_t **metadata_ptr)
|
||||||
|
{
|
||||||
|
struct metadata_t *metadata = *metadata_ptr;
|
||||||
|
|
||||||
|
if (metadata->ext != 0) {
|
||||||
|
freeMetadataExt(&metadata->ext);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (metadata->object != 0) {
|
||||||
|
freeObject(&metadata->object);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (metadata->n_groups > 0) {
|
||||||
|
if (metadata->group_ids != 0) {
|
||||||
|
free(metadata->group_ids);
|
||||||
|
metadata->group_ids = 0;
|
||||||
|
}
|
||||||
|
if (metadata->groups != 0) {
|
||||||
|
freeGroups(&metadata->groups, metadata->n_groups);
|
||||||
|
}
|
||||||
|
metadata->n_groups = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (metadata->owner != 0) {
|
||||||
|
freeUser(&metadata->owner);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (metadata->title != 0) {
|
||||||
|
free(metadata->title);
|
||||||
|
metadata->title = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
free(metadata);
|
||||||
|
*metadata_ptr = 0;
|
||||||
|
}
|
||||||
|
void freeMetadataList(struct metadata_t ***metadata_list_ptr, size_t n_metadatas)
|
||||||
|
{
|
||||||
|
size_t idx;
|
||||||
|
struct metadata_t **metadatas_list= *metadata_list_ptr;
|
||||||
|
|
||||||
|
for (idx = 0; idx < n_metadatas; idx++) {
|
||||||
|
if (*(metadatas_list + idx) != 0) {
|
||||||
|
freeMetadata((metadatas_list + idx));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
free(metadatas_list);
|
||||||
|
*metadata_list_ptr = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
int modbMetadataById(stored_conn *sconn, modb_ref *modb, unsigned int id,
|
int modbMetadataById(stored_conn *sconn, modb_ref *modb, unsigned int id,
|
||||||
struct metadata_t **metadata)
|
struct metadata_t **metadata)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -2,9 +2,41 @@
|
|||||||
#define H__MODB_METADATA__
|
#define H__MODB_METADATA__
|
||||||
|
|
||||||
#include "database.h"
|
#include "database.h"
|
||||||
#include "modb_types.h"
|
#include "modb_ref.h"
|
||||||
|
|
||||||
// MODB MetadataList
|
|
||||||
|
// Metadata object
|
||||||
|
struct metadata_t {
|
||||||
|
unsigned int id;
|
||||||
|
|
||||||
|
char *type;
|
||||||
|
size_t type_len;
|
||||||
|
|
||||||
|
char *title;
|
||||||
|
size_t title_len;
|
||||||
|
|
||||||
|
unsigned int owner_id;
|
||||||
|
struct user_t *owner;
|
||||||
|
|
||||||
|
int64_t created_on;
|
||||||
|
int64_t updated_on;
|
||||||
|
int64_t deleted_on;
|
||||||
|
|
||||||
|
unsigned int *group_ids;
|
||||||
|
struct group_t **groups;
|
||||||
|
size_t n_groups;
|
||||||
|
|
||||||
|
struct object_t *object;
|
||||||
|
struct metadata_ext_t *ext;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct metadata_t *allocMetadata(void);
|
||||||
|
struct metadata_t **allocMetadataList(size_t n_metadatas);
|
||||||
|
void freeMetadata(struct metadata_t **metadata);
|
||||||
|
void freeMetadataList(struct metadata_t ***metadata_list_ptr, size_t n_metadatas);
|
||||||
|
|
||||||
|
|
||||||
|
// MODB Metadata
|
||||||
int modbMetadataById(stored_conn *sconn, modb_ref *modb, unsigned int id,
|
int modbMetadataById(stored_conn *sconn, modb_ref *modb, unsigned int id,
|
||||||
struct metadata_t **metadata);
|
struct metadata_t **metadata);
|
||||||
// MetadataList by owner
|
// MetadataList by owner
|
||||||
|
|||||||
54
src/modb_metadata_ext.c
Normal file
54
src/modb_metadata_ext.c
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <errno.h>
|
||||||
|
|
||||||
|
#include "modb_metadata_ext.h"
|
||||||
|
|
||||||
|
|
||||||
|
struct metadata_ext_t *allocMetadataExt(void)
|
||||||
|
{
|
||||||
|
struct metadata_ext_t *metadata_ext;
|
||||||
|
|
||||||
|
metadata_ext = malloc(sizeof(struct metadata_ext_t));
|
||||||
|
if (metadata_ext == 0) {
|
||||||
|
fprintf(stderr, "[%d]malloc: (%d) %s\n", __LINE__, errno, strerror(errno));
|
||||||
|
}
|
||||||
|
memset(metadata_ext, 0, sizeof(struct metadata_ext_t));
|
||||||
|
|
||||||
|
return metadata_ext;
|
||||||
|
}
|
||||||
|
struct metadata_ext_t **allocMetadataExts(size_t n_metadata_exts)
|
||||||
|
{
|
||||||
|
struct metadata_ext_t **metadata_exts;
|
||||||
|
|
||||||
|
metadata_exts = (struct metadata_ext_t **)malloc(sizeof(struct metadata_ext_t *) * n_metadata_exts);
|
||||||
|
if (metadata_exts == 0) {
|
||||||
|
fprintf(stderr, "[%d]malloc: (%d) %s\n", __LINE__, errno, strerror(errno));
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
memset(metadata_exts, 0, sizeof(struct metadata_ext_t *) * n_metadata_exts);
|
||||||
|
|
||||||
|
return metadata_exts;
|
||||||
|
}
|
||||||
|
void freeMetadataExt(struct metadata_ext_t **metadata_ext_ptr)
|
||||||
|
{
|
||||||
|
struct metadata_ext_t *metadata_ext = *metadata_ext_ptr;
|
||||||
|
|
||||||
|
free(metadata_ext);
|
||||||
|
*metadata_ext_ptr = 0;
|
||||||
|
}
|
||||||
|
void freeMetadataExts(struct metadata_ext_t ***metadata_exts_ptr, size_t n_metadata_exts)
|
||||||
|
{
|
||||||
|
size_t idx;
|
||||||
|
struct metadata_ext_t **metadata_exts = *metadata_exts_ptr;
|
||||||
|
|
||||||
|
for (idx = 0; idx < n_metadata_exts; idx++) {
|
||||||
|
if (*(metadata_exts + idx) != 0) {
|
||||||
|
freeMetadataExt(metadata_exts + idx);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
free(metadata_exts);
|
||||||
|
*metadata_exts_ptr = 0;
|
||||||
|
}
|
||||||
48
src/modb_metadata_ext.h
Normal file
48
src/modb_metadata_ext.h
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
#ifndef H__MODB_METADATA_EXT__
|
||||||
|
#define H__MODB_METADATA_EXT__
|
||||||
|
|
||||||
|
#include "modb_ref.h"
|
||||||
|
|
||||||
|
|
||||||
|
// MetadataExtended object
|
||||||
|
struct metadata_ext_t {
|
||||||
|
unsigned int id;
|
||||||
|
|
||||||
|
// TODO: dynamic extended metadata definition
|
||||||
|
// struct metadata_ext_value_t **meta_ext;
|
||||||
|
// size_t n_meta_ext;
|
||||||
|
};
|
||||||
|
|
||||||
|
//struct metadata_ext_value_t {
|
||||||
|
// char *key;
|
||||||
|
// enum e_column_type_t type;
|
||||||
|
// union {
|
||||||
|
// void *vptr;_ptr
|
||||||
|
|
||||||
|
// int8_t int8;
|
||||||
|
// uint8_t uint8;
|
||||||
|
|
||||||
|
// int16_t int16;
|
||||||
|
// uint16_t uint16;
|
||||||
|
|
||||||
|
// int32_t int32;
|
||||||
|
// uint32_t uint32;
|
||||||
|
|
||||||
|
// int64_t int64;
|
||||||
|
// uint64_t uint64;
|
||||||
|
|
||||||
|
// float flt;
|
||||||
|
// double dbl;
|
||||||
|
|
||||||
|
// char *ptr_str;
|
||||||
|
// } value;
|
||||||
|
// size_t value_len;
|
||||||
|
//};
|
||||||
|
|
||||||
|
struct metadata_ext_t *allocMetadataExt(void);
|
||||||
|
struct metadata_ext_t **allocMetadataExts(size_t n_metadata_exts);
|
||||||
|
void freeMetadataExt(struct metadata_ext_t **metadata_ext);
|
||||||
|
void freeMetadataExts(struct metadata_ext_t ***metadata_exts_ptr, size_t n_metadata_exts);
|
||||||
|
|
||||||
|
|
||||||
|
#endif // H__MODB_METADATA_EXT__
|
||||||
@@ -6,6 +6,7 @@
|
|||||||
#include "modb_p.h"
|
#include "modb_p.h"
|
||||||
|
|
||||||
|
|
||||||
|
// ##### PRIVATE
|
||||||
int tableRowsToObjects(column_data **col_data, size_t n_cols,
|
int tableRowsToObjects(column_data **col_data, size_t n_cols,
|
||||||
struct object_t ***objects, size_t *n_objects)
|
struct object_t ***objects, size_t *n_objects)
|
||||||
{
|
{
|
||||||
@@ -124,6 +125,59 @@ int doScalarObjectsQuery(stored_conn *sconn, modb_ref *modb,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ##### PUBLIC
|
||||||
|
struct object_t *allocObject(void)
|
||||||
|
{
|
||||||
|
struct object_t *object;
|
||||||
|
|
||||||
|
object = malloc(sizeof(struct object_t));
|
||||||
|
if (object == 0) {
|
||||||
|
fprintf(stderr, "[%d]malloc: (%d) %s\n", __LINE__, errno, strerror(errno));
|
||||||
|
}
|
||||||
|
memset(object, 0, sizeof(struct object_t));
|
||||||
|
|
||||||
|
return object;
|
||||||
|
}
|
||||||
|
struct object_t **allocObjects(size_t n_objects)
|
||||||
|
{
|
||||||
|
struct object_t **objects;
|
||||||
|
|
||||||
|
objects = (struct object_t **)malloc(sizeof(struct object_t *) * n_objects);
|
||||||
|
if (objects == 0) {
|
||||||
|
fprintf(stderr, "[%d]malloc: (%d) %s\n", __LINE__, errno, strerror(errno));
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
memset(objects, 0, sizeof(struct object_t *) * n_objects);
|
||||||
|
|
||||||
|
return objects;
|
||||||
|
}
|
||||||
|
void freeObject(struct object_t **object_ptr)
|
||||||
|
{
|
||||||
|
struct object_t *object = *object_ptr;
|
||||||
|
|
||||||
|
if (object->data != 0) {
|
||||||
|
free(object->data);
|
||||||
|
object->data = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
free(object);
|
||||||
|
*object_ptr = 0;
|
||||||
|
}
|
||||||
|
void freeObjects(struct object_t ***objects_ptr, size_t n_objects)
|
||||||
|
{
|
||||||
|
size_t idx;
|
||||||
|
struct object_t **objects = *objects_ptr;
|
||||||
|
|
||||||
|
for (idx = 0; idx < n_objects; idx++) {
|
||||||
|
if (*(objects + idx) != 0) {
|
||||||
|
freeObject(objects + idx);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
free(objects);
|
||||||
|
*objects_ptr = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
int modbObjectById(stored_conn *sconn, modb_ref *modb, unsigned int id,
|
int modbObjectById(stored_conn *sconn, modb_ref *modb, unsigned int id,
|
||||||
struct object_t **object)
|
struct object_t **object)
|
||||||
|
|||||||
@@ -2,9 +2,22 @@
|
|||||||
#define H__MODB_OBJECTS__
|
#define H__MODB_OBJECTS__
|
||||||
|
|
||||||
#include "database.h"
|
#include "database.h"
|
||||||
#include "modb_types.h"
|
#include "modb_ref.h"
|
||||||
|
|
||||||
|
|
||||||
|
// Object object
|
||||||
|
struct object_t {
|
||||||
|
unsigned int id;
|
||||||
|
|
||||||
|
char *data;
|
||||||
|
size_t data_len;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct object_t *allocObject(void);
|
||||||
|
struct object_t **allocObjects(size_t n_objects);
|
||||||
|
void freeObject(struct object_t **object);
|
||||||
|
void freeObjects(struct object_t ***objects_ptr, size_t n_objects);
|
||||||
|
|
||||||
// object from row
|
|
||||||
|
|
||||||
// MODB Objects
|
// MODB Objects
|
||||||
int modbObjectById(stored_conn *sconn, modb_ref *modb, unsigned int id,
|
int modbObjectById(stored_conn *sconn, modb_ref *modb, unsigned int id,
|
||||||
|
|||||||
@@ -3,9 +3,9 @@
|
|||||||
|
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
|
|
||||||
#include "modb_types.h"
|
|
||||||
#include "database.h"
|
#include "database.h"
|
||||||
#include "strext.h"
|
#include "strext.h"
|
||||||
|
#include "modb_ref.h"
|
||||||
|
|
||||||
|
|
||||||
#define SYS_TABLE "_sys"
|
#define SYS_TABLE "_sys"
|
||||||
|
|||||||
12
src/modb_ref.h
Normal file
12
src/modb_ref.h
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
#ifndef H__MODB_REF__
|
||||||
|
#define H__MODB_REF__
|
||||||
|
|
||||||
|
#include <stddef.h>
|
||||||
|
|
||||||
|
struct modb_ref_t {
|
||||||
|
const char *name;
|
||||||
|
size_t name_len;
|
||||||
|
};
|
||||||
|
typedef struct modb_ref_t modb_ref;
|
||||||
|
|
||||||
|
#endif // H__MODB_REF__
|
||||||
184
src/modb_types.c
184
src/modb_types.c
@@ -1,184 +0,0 @@
|
|||||||
#include <stdlib.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <errno.h>
|
|
||||||
|
|
||||||
#include "modb_types.h"
|
|
||||||
#include "modb_groups.h"
|
|
||||||
#include "modb_users.h"
|
|
||||||
#include "strext.h"
|
|
||||||
|
|
||||||
|
|
||||||
struct metadata_t *allocMetadata(void)
|
|
||||||
{
|
|
||||||
struct metadata_t *metadata;
|
|
||||||
|
|
||||||
metadata = malloc(sizeof(struct metadata_t));
|
|
||||||
if (metadata == 0) {
|
|
||||||
fprintf(stderr, "[%d]malloc: (%d) %s\n", __LINE__, errno, strerror(errno));
|
|
||||||
}
|
|
||||||
memset(metadata, 0, sizeof(struct metadata_t));
|
|
||||||
|
|
||||||
return metadata;
|
|
||||||
}
|
|
||||||
struct metadata_t **allocMetadataList(size_t n_metadatas)
|
|
||||||
{
|
|
||||||
struct metadata_t **metadatas;
|
|
||||||
|
|
||||||
metadatas = (struct metadata_t **)malloc(sizeof(struct metadata_t *) * n_metadatas);
|
|
||||||
if (metadatas == 0) {
|
|
||||||
fprintf(stderr, "[%d]malloc: (%d) %s\n", __LINE__, errno, strerror(errno));
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
memset(metadatas, 0, sizeof(struct metadata_t *) * n_metadatas);
|
|
||||||
|
|
||||||
return metadatas;
|
|
||||||
}
|
|
||||||
void freeMetadata(struct metadata_t **metadata_ptr)
|
|
||||||
{
|
|
||||||
struct metadata_t *metadata = *metadata_ptr;
|
|
||||||
|
|
||||||
if (metadata->ext != 0) {
|
|
||||||
freeMetadataExt(&metadata->ext);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (metadata->object != 0) {
|
|
||||||
freeObject(&metadata->object);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (metadata->n_groups > 0) {
|
|
||||||
if (metadata->group_ids != 0) {
|
|
||||||
free(metadata->group_ids);
|
|
||||||
metadata->group_ids = 0;
|
|
||||||
}
|
|
||||||
if (metadata->groups != 0) {
|
|
||||||
freeGroups(&metadata->groups, metadata->n_groups);
|
|
||||||
}
|
|
||||||
metadata->n_groups = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (metadata->owner != 0) {
|
|
||||||
freeUser(&metadata->owner);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (metadata->title != 0) {
|
|
||||||
free(metadata->title);
|
|
||||||
metadata->title = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
free(metadata);
|
|
||||||
*metadata_ptr = 0;
|
|
||||||
}
|
|
||||||
void freeMetadataList(struct metadata_t ***metadata_list_ptr, size_t n_metadatas)
|
|
||||||
{
|
|
||||||
size_t idx;
|
|
||||||
struct metadata_t **metadatas_list= *metadata_list_ptr;
|
|
||||||
|
|
||||||
for (idx = 0; idx < n_metadatas; idx++) {
|
|
||||||
if (*(metadatas_list + idx) != 0) {
|
|
||||||
freeMetadata((metadatas_list + idx));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
free(metadatas_list);
|
|
||||||
*metadata_list_ptr = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
struct object_t *allocObject(void)
|
|
||||||
{
|
|
||||||
struct object_t *object;
|
|
||||||
|
|
||||||
object = malloc(sizeof(struct object_t));
|
|
||||||
if (object == 0) {
|
|
||||||
fprintf(stderr, "[%d]malloc: (%d) %s\n", __LINE__, errno, strerror(errno));
|
|
||||||
}
|
|
||||||
memset(object, 0, sizeof(struct object_t));
|
|
||||||
|
|
||||||
return object;
|
|
||||||
}
|
|
||||||
struct object_t **allocObjects(size_t n_objects)
|
|
||||||
{
|
|
||||||
struct object_t **objects;
|
|
||||||
|
|
||||||
objects = (struct object_t **)malloc(sizeof(struct object_t *) * n_objects);
|
|
||||||
if (objects == 0) {
|
|
||||||
fprintf(stderr, "[%d]malloc: (%d) %s\n", __LINE__, errno, strerror(errno));
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
memset(objects, 0, sizeof(struct object_t *) * n_objects);
|
|
||||||
|
|
||||||
return objects;
|
|
||||||
}
|
|
||||||
void freeObject(struct object_t **object_ptr)
|
|
||||||
{
|
|
||||||
struct object_t *object = *object_ptr;
|
|
||||||
|
|
||||||
if (object->data != 0) {
|
|
||||||
free(object->data);
|
|
||||||
object->data = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
free(object);
|
|
||||||
*object_ptr = 0;
|
|
||||||
}
|
|
||||||
void freeObjects(struct object_t ***objects_ptr, size_t n_objects)
|
|
||||||
{
|
|
||||||
size_t idx;
|
|
||||||
struct object_t **objects = *objects_ptr;
|
|
||||||
|
|
||||||
for (idx = 0; idx < n_objects; idx++) {
|
|
||||||
if (*(objects + idx) != 0) {
|
|
||||||
freeObject(objects + idx);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
free(objects);
|
|
||||||
*objects_ptr = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
struct metadata_ext_t *allocMetadataExt(void)
|
|
||||||
{
|
|
||||||
struct metadata_ext_t *metadata_ext;
|
|
||||||
|
|
||||||
metadata_ext = malloc(sizeof(struct metadata_ext_t));
|
|
||||||
if (metadata_ext == 0) {
|
|
||||||
fprintf(stderr, "[%d]malloc: (%d) %s\n", __LINE__, errno, strerror(errno));
|
|
||||||
}
|
|
||||||
memset(metadata_ext, 0, sizeof(struct metadata_ext_t));
|
|
||||||
|
|
||||||
return metadata_ext;
|
|
||||||
}
|
|
||||||
struct metadata_ext_t **allocMetadataExts(size_t n_metadata_exts)
|
|
||||||
{
|
|
||||||
struct metadata_ext_t **metadata_exts;
|
|
||||||
|
|
||||||
metadata_exts = (struct metadata_ext_t **)malloc(sizeof(struct metadata_ext_t *) * n_metadata_exts);
|
|
||||||
if (metadata_exts == 0) {
|
|
||||||
fprintf(stderr, "[%d]malloc: (%d) %s\n", __LINE__, errno, strerror(errno));
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
memset(metadata_exts, 0, sizeof(struct metadata_ext_t *) * n_metadata_exts);
|
|
||||||
|
|
||||||
return metadata_exts;
|
|
||||||
}
|
|
||||||
void freeMetadataExt(struct metadata_ext_t **metadata_ext_ptr)
|
|
||||||
{
|
|
||||||
struct metadata_ext_t *metadata_ext = *metadata_ext_ptr;
|
|
||||||
|
|
||||||
free(metadata_ext);
|
|
||||||
*metadata_ext_ptr = 0;
|
|
||||||
}
|
|
||||||
void freeMetadataExts(struct metadata_ext_t ***metadata_exts_ptr, size_t n_metadata_exts)
|
|
||||||
{
|
|
||||||
size_t idx;
|
|
||||||
struct metadata_ext_t **metadata_exts = *metadata_exts_ptr;
|
|
||||||
|
|
||||||
for (idx = 0; idx < n_metadata_exts; idx++) {
|
|
||||||
if (*(metadata_exts + idx) != 0) {
|
|
||||||
freeMetadataExt(metadata_exts + idx);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
free(metadata_exts);
|
|
||||||
*metadata_exts_ptr = 0;
|
|
||||||
}
|
|
||||||
@@ -1,94 +0,0 @@
|
|||||||
#ifndef H__MODB_TYPES__
|
|
||||||
#define H__MODB_TYPES__
|
|
||||||
|
|
||||||
#include <stddef.h>
|
|
||||||
#include <stdint.h>
|
|
||||||
|
|
||||||
struct modb_ref_t {
|
|
||||||
const char *name;
|
|
||||||
size_t name_len;
|
|
||||||
};
|
|
||||||
typedef struct modb_ref_t modb_ref;
|
|
||||||
|
|
||||||
struct metadata_t {
|
|
||||||
unsigned int id;
|
|
||||||
|
|
||||||
char *type;
|
|
||||||
size_t type_len;
|
|
||||||
|
|
||||||
char *title;
|
|
||||||
size_t title_len;
|
|
||||||
|
|
||||||
unsigned int owner_id;
|
|
||||||
struct user_t *owner;
|
|
||||||
|
|
||||||
int64_t created_on;
|
|
||||||
int64_t updated_on;
|
|
||||||
int64_t deleted_on;
|
|
||||||
|
|
||||||
unsigned int *group_ids;
|
|
||||||
struct group_t **groups;
|
|
||||||
size_t n_groups;
|
|
||||||
|
|
||||||
struct object_t *object;
|
|
||||||
struct metadata_ext_t *ext;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct object_t {
|
|
||||||
unsigned int id;
|
|
||||||
|
|
||||||
char *data;
|
|
||||||
size_t data_len;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct metadata_ext_t {
|
|
||||||
unsigned int id;
|
|
||||||
|
|
||||||
// TODO: dynamic extended metadata definition
|
|
||||||
// struct metadata_ext_value_t **meta_ext;
|
|
||||||
// size_t n_meta_ext;
|
|
||||||
};
|
|
||||||
|
|
||||||
//struct metadata_ext_value_t {
|
|
||||||
// char *key;
|
|
||||||
// enum e_column_type_t type;
|
|
||||||
// union {
|
|
||||||
// void *vptr;_ptr
|
|
||||||
|
|
||||||
// int8_t int8;
|
|
||||||
// uint8_t uint8;
|
|
||||||
|
|
||||||
// int16_t int16;
|
|
||||||
// uint16_t uint16;
|
|
||||||
|
|
||||||
// int32_t int32;
|
|
||||||
// uint32_t uint32;
|
|
||||||
|
|
||||||
// int64_t int64;
|
|
||||||
// uint64_t uint64;
|
|
||||||
|
|
||||||
// float flt;
|
|
||||||
// double dbl;
|
|
||||||
|
|
||||||
// char *ptr_str;
|
|
||||||
// } value;
|
|
||||||
// size_t value_len;
|
|
||||||
//};
|
|
||||||
|
|
||||||
struct metadata_t *allocMetadata(void);
|
|
||||||
struct metadata_t **allocMetadataList(size_t n_metadatas);
|
|
||||||
void freeMetadata(struct metadata_t **metadata);
|
|
||||||
void freeMetadataList(struct metadata_t ***metadata_list_ptr, size_t n_metadatas);
|
|
||||||
|
|
||||||
struct object_t *allocObject(void);
|
|
||||||
struct object_t **allocObjects(size_t n_objects);
|
|
||||||
void freeObject(struct object_t **object);
|
|
||||||
void freeObjects(struct object_t ***objects_ptr, size_t n_objects);
|
|
||||||
|
|
||||||
struct metadata_ext_t *allocMetadataExt(void);
|
|
||||||
struct metadata_ext_t **allocMetadataExts(size_t n_metadata_exts);
|
|
||||||
void freeMetadataExt(struct metadata_ext_t **metadata_ext);
|
|
||||||
void freeMetadataExts(struct metadata_ext_t ***metadata_exts_ptr, size_t n_metadata_exts);
|
|
||||||
|
|
||||||
|
|
||||||
#endif // H__MODB_TYPES__
|
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
#define H__MODB_USERS__
|
#define H__MODB_USERS__
|
||||||
|
|
||||||
#include "database.h"
|
#include "database.h"
|
||||||
#include "modb_types.h"
|
#include "modb_ref.h"
|
||||||
|
|
||||||
|
|
||||||
// User object
|
// User object
|
||||||
|
|||||||
Reference in New Issue
Block a user