提交 0e6881d9 编写于 作者: X Xu Peng 提交者: xj.lin

refactor(db): change get_group and add_group apis


Former-commit-id: 1b542b4b99af0ba88c7093584d9fc11fc3919560
上级 09359247
...@@ -17,10 +17,8 @@ class DB { ...@@ -17,10 +17,8 @@ class DB {
public: public:
static DB* Open(const Options& options); static DB* Open(const Options& options);
virtual Status add_group(const GroupOptions& options_, virtual Status add_group(meta::GroupSchema& group_info_) = 0;
const std::string& group_id_, virtual Status get_group(meta::GroupSchema& group_info_) = 0;
meta::GroupSchema& group_info_) = 0;
virtual Status get_group(const std::string& group_id_, meta::GroupSchema& group_info_) = 0;
virtual Status has_group(const std::string& group_id_, bool& has_or_not_) = 0; virtual Status has_group(const std::string& group_id_, bool& has_or_not_) = 0;
virtual Status get_group_files(const std::string& group_id_, virtual Status get_group_files(const std::string& group_id_,
const int date_delta_, const int date_delta_,
......
...@@ -26,17 +26,12 @@ DBImpl::DBImpl(const Options& options) ...@@ -26,17 +26,12 @@ DBImpl::DBImpl(const Options& options)
start_timer_task(_options.memory_sync_interval); start_timer_task(_options.memory_sync_interval);
} }
Status DBImpl::add_group(const GroupOptions& options, Status DBImpl::add_group(meta::GroupSchema& group_info) {
const std::string& group_id, return _pMeta->add_group(group_info);
meta::GroupSchema& group_info) {
assert((!options.has_id) ||
(options.has_id && ("" != group_id)));
return _pMeta->add_group(options, group_id, group_info);
} }
Status DBImpl::get_group(const std::string& group_id_, meta::GroupSchema& group_info_) { Status DBImpl::get_group(meta::GroupSchema& group_info) {
return _pMeta->get_group(group_id_, group_info_); return _pMeta->get_group(group_info);
} }
Status DBImpl::has_group(const std::string& group_id_, bool& has_or_not_) { Status DBImpl::has_group(const std::string& group_id_, bool& has_or_not_) {
......
...@@ -22,10 +22,8 @@ class DBImpl : public DB { ...@@ -22,10 +22,8 @@ class DBImpl : public DB {
public: public:
DBImpl(const Options& options); DBImpl(const Options& options);
virtual Status add_group(const GroupOptions& options_, virtual Status add_group(meta::GroupSchema& group_info) override;
const std::string& group_id_, virtual Status get_group(meta::GroupSchema& group_info) override;
meta::GroupSchema& group_info_) override;
virtual Status get_group(const std::string& group_id_, meta::GroupSchema& group_info_) override;
virtual Status has_group(const std::string& group_id_, bool& has_or_not_) override; virtual Status has_group(const std::string& group_id_, bool& has_or_not_) override;
virtual Status get_group_files(const std::string& group_id_, virtual Status get_group_files(const std::string& group_id_,
......
...@@ -52,25 +52,26 @@ Status DBMetaImpl::initialize() { ...@@ -52,25 +52,26 @@ Status DBMetaImpl::initialize() {
return Status::OK(); return Status::OK();
} }
Status DBMetaImpl::add_group(const GroupOptions& options_, Status DBMetaImpl::add_group(GroupSchema& group_info) {
const std::string& group_id_, if (group_info.group_id == "") {
GroupSchema& group_info_) { std::stringstream ss;
SimpleIDGenerator g;
group_info_.dimension = options_.dimension; ss << g.getNextIDNumber();
group_info_.group_id = group_id_; group_info.group_id = ss.str();
group_info_.files_cnt = 0; }
group_info_.id = -1; group_info.files_cnt = 0;
group_info.id = -1;
try { try {
auto id = ConnectorPtr->insert(group_info_); auto id = ConnectorPtr->insert(group_info);
std::cout << "id=" << id << std::endl; std::cout << "id=" << id << std::endl;
group_info_.id = id; group_info.id = id;
} catch(std::system_error& e) { } catch(std::system_error& e) {
return Status::GroupError("Add Group " + group_id_ + " Error"); return Status::GroupError("Add Group " + group_info.group_id + " Error");
} }
return Status::OK(); return Status::OK();
} }
Status DBMetaImpl::get_group(const std::string& group_id_, GroupSchema& group_info_) { Status DBMetaImpl::get_group(GroupSchema& group_info_) {
return Status::OK(); return Status::OK();
} }
......
...@@ -15,10 +15,8 @@ class DBMetaImpl : public Meta { ...@@ -15,10 +15,8 @@ class DBMetaImpl : public Meta {
public: public:
DBMetaImpl(const DBMetaOptions& options_); DBMetaImpl(const DBMetaOptions& options_);
virtual Status add_group(const GroupOptions& options_, virtual Status add_group(GroupSchema& group_info) override;
const std::string& group_id_, virtual Status get_group(GroupSchema& group_info_) override;
GroupSchema& group_info_) override;
virtual Status get_group(const std::string& group_id_, GroupSchema& group_info_) override;
virtual Status has_group(const std::string& group_id_, bool& has_or_not_) override; virtual Status has_group(const std::string& group_id_, bool& has_or_not_) override;
virtual Status add_group_file(const std::string& group_id, virtual Status add_group_file(const std::string& group_id,
......
...@@ -85,17 +85,15 @@ Status LocalMetaImpl::initialize() { ...@@ -85,17 +85,15 @@ Status LocalMetaImpl::initialize() {
return Status::OK(); return Status::OK();
} }
Status LocalMetaImpl::add_group(const GroupOptions& options, Status LocalMetaImpl::add_group(GroupSchema& group_info) {
const std::string& group_id,
GroupSchema& group_info) {
std::string real_gid; std::string real_gid;
size_t id = SimpleIDGenerator().getNextIDNumber(); size_t id = SimpleIDGenerator().getNextIDNumber();
if (group_id == "") { if (group_info.group_id == "") {
std::stringstream ss; std::stringstream ss;
ss << id; ss << id;
real_gid = ss.str(); real_gid = ss.str();
} else { } else {
real_gid = group_id; real_gid = group_info.group_id;
} }
bool group_exist; bool group_exist;
...@@ -111,7 +109,6 @@ Status LocalMetaImpl::add_group(const GroupOptions& options, ...@@ -111,7 +109,6 @@ Status LocalMetaImpl::add_group(const GroupOptions& options,
group_info.files_cnt = 0; group_info.files_cnt = 0;
group_info.id = 0; group_info.id = 0;
group_info.location = GetGroupPath(real_gid); group_info.location = GetGroupPath(real_gid);
group_info.dimension = options.dimension;
boost::property_tree::ptree out; boost::property_tree::ptree out;
out.put("files_cnt", group_info.files_cnt); out.put("files_cnt", group_info.files_cnt);
...@@ -121,14 +118,14 @@ Status LocalMetaImpl::add_group(const GroupOptions& options, ...@@ -121,14 +118,14 @@ Status LocalMetaImpl::add_group(const GroupOptions& options,
return Status::OK(); return Status::OK();
} }
Status LocalMetaImpl::get_group(const std::string& group_id, GroupSchema& group_info) { Status LocalMetaImpl::get_group(GroupSchema& group_info) {
bool group_exist; bool group_exist;
has_group(group_id, group_exist); has_group(group_info.group_id, group_exist);
if (!group_exist) { if (!group_exist) {
return Status::NotFound("Group " + group_id + " Not Found"); return Status::NotFound("Group " + group_info.group_id + " Not Found");
} }
return GetGroupMetaInfo(group_id, group_info); return GetGroupMetaInfo(group_info.group_id, group_info);
} }
Status LocalMetaImpl::has_group(const std::string& group_id, bool& has_or_not) { Status LocalMetaImpl::has_group(const std::string& group_id, bool& has_or_not) {
...@@ -147,7 +144,7 @@ Status LocalMetaImpl::add_group_file(const std::string& group_id, ...@@ -147,7 +144,7 @@ Status LocalMetaImpl::add_group_file(const std::string& group_id,
GroupFileSchema& group_file_info, GroupFileSchema& group_file_info,
GroupFileSchema::FILE_TYPE file_type) { GroupFileSchema::FILE_TYPE file_type) {
GroupSchema group_info; GroupSchema group_info;
auto status = get_group(group_id, group_info); auto status = get_group(group_info);
if (!status.ok()) { if (!status.ok()) {
return status; return status;
} }
......
...@@ -14,10 +14,8 @@ public: ...@@ -14,10 +14,8 @@ public:
const size_t INDEX_TRIGGER_SIZE = 1024*1024*500; const size_t INDEX_TRIGGER_SIZE = 1024*1024*500;
LocalMetaImpl(const DBMetaOptions& options_); LocalMetaImpl(const DBMetaOptions& options_);
virtual Status add_group(const GroupOptions& options_, virtual Status add_group(GroupSchema& group_info_) override;
const std::string& group_id_, virtual Status get_group(GroupSchema& group_info_) override;
GroupSchema& group_info_) override;
virtual Status get_group(const std::string& group_id_, GroupSchema& group_info_) override;
virtual Status has_group(const std::string& group_id_, bool& has_or_not_) override; virtual Status has_group(const std::string& group_id_, bool& has_or_not_) override;
virtual Status add_group_file(const std::string& group_id, virtual Status add_group_file(const std::string& group_id,
......
...@@ -48,10 +48,8 @@ typedef std::map<DateT, GroupFilesSchema> DatePartionedGroupFilesSchema; ...@@ -48,10 +48,8 @@ typedef std::map<DateT, GroupFilesSchema> DatePartionedGroupFilesSchema;
class Meta { class Meta {
public: public:
virtual Status add_group(const GroupOptions& options_, virtual Status add_group(GroupSchema& group_info) = 0;
const std::string& group_id_, virtual Status get_group(GroupSchema& group_info) = 0;
GroupSchema& group_info_) = 0;
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 has_group(const std::string& group_id_, bool& has_or_not_) = 0;
virtual Status add_group_file(const std::string& group_id_, virtual Status add_group_file(const std::string& group_id_,
......
...@@ -43,11 +43,10 @@ VecServiceHandler::add_group(const VecGroup &group) { ...@@ -43,11 +43,10 @@ VecServiceHandler::add_group(const VecGroup &group) {
<< ", group.index_type = " << group.index_type; << ", group.index_type = " << group.index_type;
try { try {
engine::GroupOptions gopt;
gopt.dimension = (size_t)group.dimension;
gopt.has_id = !group.id.empty();
engine::meta::GroupSchema group_info; engine::meta::GroupSchema group_info;
engine::Status stat = DB()->add_group(gopt, group.id, group_info); group_info.dimension = (size_t)group.dimension;
group_info.group_id = group.id;
engine::Status stat = DB()->add_group(group_info);
if(!stat.ok()) { if(!stat.ok()) {
SERVER_LOG_ERROR << "Engine failed: " << stat.ToString(); SERVER_LOG_ERROR << "Engine failed: " << stat.ToString();
} }
...@@ -65,7 +64,8 @@ VecServiceHandler::get_group(VecGroup &_return, const std::string &group_id) { ...@@ -65,7 +64,8 @@ VecServiceHandler::get_group(VecGroup &_return, const std::string &group_id) {
try { try {
engine::meta::GroupSchema group_info; engine::meta::GroupSchema group_info;
engine::Status stat = DB()->get_group(group_id, group_info); group_info.group_id = group_id;
engine::Status stat = DB()->get_group(group_info);
if(!stat.ok()) { if(!stat.ok()) {
SERVER_LOG_ERROR << "Engine failed: " << stat.ToString(); SERVER_LOG_ERROR << "Engine failed: " << stat.ToString();
} else { } else {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册