79 lines
2.1 KiB
C
79 lines
2.1 KiB
C
#ifndef H__MODB_METADATA_EXT__
|
|
#define H__MODB_METADATA_EXT__
|
|
|
|
#include <stdint.h>
|
|
|
|
#include "database.h"
|
|
#include "modb_ref.h"
|
|
|
|
|
|
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 meta_ext_t {
|
|
unsigned int id;
|
|
|
|
struct meta_ext_value_t **values;
|
|
size_t n_values;
|
|
};
|
|
|
|
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 boolVal;
|
|
int32_t int32;
|
|
double dbl;
|
|
char *str;
|
|
const char *str_c;
|
|
int64_t ts;
|
|
uint32_t id;
|
|
} value;
|
|
size_t value_len;
|
|
|
|
uint32_t is_null :1;
|
|
uint32_t is_const :1;
|
|
};
|
|
|
|
|
|
int tableRowToMetaExt(column_data **col_data, size_t n_cols, size_t row_idx,
|
|
struct meta_ext_t **ext_ptr);
|
|
|
|
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);
|
|
|
|
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);
|
|
|
|
// MODB Extended Metadata
|
|
int modbMetaExtById(stored_conn *sconn, modb_ref *modb, unsigned int id,
|
|
struct meta_ext_t **meta_ext);
|
|
|
|
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__
|