Meta.h 2.6 KB
Newer Older
X
Xu Peng 已提交
1 2 3 4 5
#pragma once

#include <string>
#include <cstddef>
#include <vector>
6 7
#include <map>
#include <ctime>
X
Xu Peng 已提交
8 9
#include "Options.h"
#include "Status.h"
X
Xu Peng 已提交
10 11 12 13

namespace zilliz {
namespace vecwise {
namespace engine {
14 15 16
namespace meta {

typedef int DateT;
X
Xu Peng 已提交
17 18 19 20 21 22 23

struct GroupSchema {
    size_t id;
    std::string group_id;
    size_t files_cnt = 0;
    uint16_t dimension;
    std::string location = "";
24
    std::string next_file_location = "";
X
Xu Peng 已提交
25 26 27 28 29
}; // GroupSchema


struct GroupFileSchema {
    typedef enum {
30
        NEW,
X
Xu Peng 已提交
31
        RAW,
32 33
        INDEX,
        TO_DELETE,
X
Xu Peng 已提交
34 35 36 37 38
    } FILE_TYPE;

    size_t id;
    std::string group_id;
    std::string file_id;
39
    int file_type = NEW;
X
Xu Peng 已提交
40
    size_t rows;
41 42
    DateT date;
    uint16_t dimension;
X
Xu Peng 已提交
43 44 45 46
    std::string location = "";
}; // GroupFileSchema

typedef std::vector<GroupFileSchema> GroupFilesSchema;
47
typedef std::map<DateT, GroupFilesSchema> DatePartionedGroupFilesSchema;
X
Xu Peng 已提交
48 49 50 51


class Meta {
public:
X
Xu Peng 已提交
52 53 54
    virtual Status add_group(const GroupOptions& options_,
            const std::string& group_id_,
            GroupSchema& group_info_) = 0;
55 56 57 58 59
    virtual Status get_group(const std::string& group_id_, GroupSchema& group_info_) = 0;
    virtual Status has_group(const std::string& group_id_, bool& has_or_not_) = 0;

    virtual Status add_group_file(const std::string& group_id_,
                                  GroupFileSchema& group_file_info_) = 0;
60 61 62
    virtual Status add_group_file(const std::string& group_id,
                                  DateT date,
                                  GroupFileSchema& group_file_info) = 0;
63 64 65 66 67 68
    virtual Status has_group_file(const std::string& group_id_,
                                  const std::string& file_id_,
                                  bool& has_or_not_) = 0;
    virtual Status get_group_file(const std::string& group_id_,
                                  const std::string& file_id_,
                                  GroupFileSchema& group_file_info_) = 0;
X
Xu Peng 已提交
69
    virtual Status update_group_file(const GroupFileSchema& group_file_) = 0;
70 71

    virtual Status get_group_files(const std::string& group_id_,
72
                                   const int date_delta_,
73
                                   GroupFilesSchema& group_files_info_) = 0;
X
Xu Peng 已提交
74

75 76
    virtual Status update_files(const GroupFilesSchema& files) = 0;

X
Xu Peng 已提交
77 78 79
    virtual Status files_to_merge(const std::string& group_id,
            DatePartionedGroupFilesSchema& files) = 0;

X
Xu Peng 已提交
80 81
    virtual Status files_to_index(GroupFilesSchema&) = 0;

82 83 84
    static DateT GetDate(const std::time_t& t);
    static DateT GetDate();

X
Xu Peng 已提交
85 86
}; // MetaData

87
} // namespace meta
X
Xu Peng 已提交
88 89 90
} // namespace engine
} // namespace vecwise
} // namespace zilliz