Metadata Extended handling implemented
This commit is contained in:
@@ -1,48 +1,71 @@
|
||||
#ifndef H__MODB_METADATA_EXT__
|
||||
#define H__MODB_METADATA_EXT__
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#include "database.h"
|
||||
#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;
|
||||
enum e_value_type_t {
|
||||
VTYPE_RAW = 0,
|
||||
VTYPE_BOOL = 1 << 0,
|
||||
VTYPE_INT32 = 1 << 1,
|
||||
VTYPE_DOUBLE = 1 << 2,
|
||||
VTYPE_STRING = 1 << 3,
|
||||
VTYPE_TIMESTAMP = 1 << 4,
|
||||
VTYPE_ID = 1 << 5
|
||||
};
|
||||
|
||||
//struct metadata_ext_value_t {
|
||||
// char *key;
|
||||
// enum e_column_type_t type;
|
||||
// union {
|
||||
// void *vptr;_ptr
|
||||
struct meta_ext_t {
|
||||
unsigned int id;
|
||||
|
||||
// int8_t int8;
|
||||
// uint8_t uint8;
|
||||
struct meta_ext_value_t **values;
|
||||
size_t n_values;
|
||||
};
|
||||
|
||||
// int16_t int16;
|
||||
// uint16_t uint16;
|
||||
struct meta_ext_value_t {
|
||||
char *key;
|
||||
const char *key_c;
|
||||
enum e_value_type_t type;
|
||||
union {
|
||||
void *raw;
|
||||
int bool;
|
||||
int32_t int32;
|
||||
double dbl;
|
||||
char *str;
|
||||
const char *str_c;
|
||||
int64_t ts;
|
||||
uint32_t id;
|
||||
} value;
|
||||
size_t value_len;
|
||||
|
||||
// int32_t int32;
|
||||
// uint32_t uint32;
|
||||
uint32_t is_null :1;
|
||||
uint32_t is_const :1;
|
||||
};
|
||||
|
||||
// int64_t int64;
|
||||
// uint64_t uint64;
|
||||
struct meta_ext_t *allocMetaExt(void);
|
||||
void freeMetaExt(struct meta_ext_t **meta_ext);
|
||||
struct meta_ext_t **allocMetaExtList(size_t n_meta_ext_list);
|
||||
void freeMetaExtList(struct meta_ext_t ***meta_ext_list_ptr, size_t n_meta_exts);
|
||||
|
||||
// float flt;
|
||||
// double dbl;
|
||||
struct meta_ext_value_t *allocMetaExtValue(void);
|
||||
void freeMetaExtValue(struct meta_ext_value_t **meta_ext_value);
|
||||
struct meta_ext_value_t **allocMetaExtValues(size_t n_values, int alloc_values);
|
||||
void freeMetaExtValues(struct meta_ext_value_t ***value_list_ptr, size_t n_values);
|
||||
|
||||
// char *ptr_str;
|
||||
// } value;
|
||||
// size_t value_len;
|
||||
//};
|
||||
// MODB Extended Metadata
|
||||
int modbMetaExtById(stored_conn *sconn, modb_ref *modb, unsigned int id,
|
||||
struct meta_ext_t **meta_ext);
|
||||
|
||||
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);
|
||||
int modbMetaExtList(stored_conn *sconn, modb_ref *modb, int with_deleted,
|
||||
struct meta_ext_t ***meta_exts, size_t *n_meta_exts);
|
||||
|
||||
int64_t modbMetaExtCreate(stored_conn *sconn, modb_ref *modb, struct meta_ext_t *meta_ext);
|
||||
int64_t modbMetaExtReplace(stored_conn *sconn, modb_ref *modb, unsigned int id,
|
||||
struct meta_ext_t *meta_ext);
|
||||
int modbMetaExtDelete(stored_conn *sconn, modb_ref *modb, unsigned int id);
|
||||
int modbMetaExtDestroy(stored_conn *sconn, modb_ref *modb, unsigned int id);
|
||||
|
||||
|
||||
#endif // H__MODB_METADATA_EXT__
|
||||
|
||||
Reference in New Issue
Block a user