mirror of
https://github.com/YuhangQ/InvoDB.git
synced 2025-01-26 22:50:56 +00:00
增加数据库 console 用于体验数据库。
This commit is contained in:
parent
6c538caaab
commit
c49cb450ce
@ -6,9 +6,9 @@
|
|||||||
|
|
||||||
std::vector<nlohmann::json> Collection::query(const nlohmann::json &json) {
|
std::vector<nlohmann::json> Collection::query(const nlohmann::json &json) {
|
||||||
std::vector<nlohmann::json> res;
|
std::vector<nlohmann::json> res;
|
||||||
|
for(auto& json : innerQuery("", json)) {
|
||||||
innerQuery("", json);
|
res.push_back(json);
|
||||||
|
}
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -26,7 +26,7 @@ std::vector<nlohmann::json> Collection::query(const nlohmann::json &json) {
|
|||||||
|
|
||||||
std::set<nlohmann::json> Collection::queryRange(const std::string &prefix, const nlohmann::json &json) {
|
std::set<nlohmann::json> Collection::queryRange(const std::string &prefix, const nlohmann::json &json) {
|
||||||
|
|
||||||
printf(">> queryRange prefix: %s query: %s\n", prefix.c_str(), json.dump().c_str());
|
//printf(">> queryRange prefix: %s query: %s\n", prefix.c_str(), json.dump().c_str());
|
||||||
|
|
||||||
std::set<nlohmann::json> set;
|
std::set<nlohmann::json> set;
|
||||||
|
|
||||||
|
@ -7,6 +7,52 @@
|
|||||||
|
|
||||||
void testAndBenchmark(int n);
|
void testAndBenchmark(int n);
|
||||||
|
|
||||||
|
Collection *col;
|
||||||
|
|
||||||
|
void terminal() {
|
||||||
|
printf("--------INVODB TERMINAL--------\n");
|
||||||
|
printf("insert\t<JSON>\tinsert a one line json to database.\n");
|
||||||
|
printf("query\t<JSON>\tquery all jsons satisfying the query json.\n");
|
||||||
|
printf("-------------------------------\n");
|
||||||
|
|
||||||
|
while(true) {
|
||||||
|
std::string input;
|
||||||
|
printf("INVODB > ");
|
||||||
|
std::getline(std::cin, input);
|
||||||
|
if(input.size() == 0) continue;
|
||||||
|
if(input.find("insert ") == 0) {
|
||||||
|
input = input.substr(7, input.size());
|
||||||
|
|
||||||
|
nlohmann::json json;
|
||||||
|
try {
|
||||||
|
json = nlohmann::json::parse(input);
|
||||||
|
} catch(...) {
|
||||||
|
printf("ERROR: your insert input isn't a json.\n");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
col->insert(json);
|
||||||
|
printf("You insert json: %s\n", json.dump().c_str());
|
||||||
|
|
||||||
|
} else if(input.find("query ") == 0) {
|
||||||
|
input = input.substr(6, input.size());
|
||||||
|
nlohmann::json json;
|
||||||
|
try {
|
||||||
|
json = nlohmann::json::parse(input);
|
||||||
|
} catch(...) {
|
||||||
|
printf("ERROR: your query input isn't a json.\n");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto res = col->query(json);
|
||||||
|
|
||||||
|
printf("query result: \n");
|
||||||
|
for(auto& j : res) {
|
||||||
|
printf(" - %s\n", j.dump().c_str());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
int t = time(0);
|
int t = time(0);
|
||||||
srand(1635418590);
|
srand(1635418590);
|
||||||
@ -21,7 +67,6 @@ int main() {
|
|||||||
|
|
||||||
PageManager& manager = PageManager::Instance();
|
PageManager& manager = PageManager::Instance();
|
||||||
|
|
||||||
Collection *col;
|
|
||||||
try {
|
try {
|
||||||
col = &Collection::getCollection("hello");
|
col = &Collection::getCollection("hello");
|
||||||
} catch(const char *error) {
|
} catch(const char *error) {
|
||||||
@ -29,32 +74,34 @@ int main() {
|
|||||||
col = &Collection::getCollection("hello");
|
col = &Collection::getCollection("hello");
|
||||||
}
|
}
|
||||||
|
|
||||||
nlohmann::json j = nlohmann::json::parse(R"(
|
// nlohmann::json j = nlohmann::json::parse(R"(
|
||||||
{
|
//{
|
||||||
"title" : "MongoDB 教程",
|
// "title" : "MongoDB 教程",
|
||||||
"description" : "MongoDB 是一个 Nosql 数据库",
|
// "description" : "MongoDB 是一个 Nosql 数据库",
|
||||||
"by" : "菜鸟教程",
|
// "by" : "菜鸟教程",
|
||||||
"url" : "http://www.runoob.com",
|
// "url" : "http://www.runoob.com",
|
||||||
"tags" : [
|
// "tags" : [
|
||||||
"mongodb",
|
// "mongodb",
|
||||||
"database",
|
// "database",
|
||||||
"NoSQL"
|
// "NoSQL"
|
||||||
],
|
// ],
|
||||||
"likes" : 100
|
// "likes" : 100
|
||||||
}
|
//}
|
||||||
)");
|
// )");
|
||||||
|
//
|
||||||
|
// col->insert(j);
|
||||||
|
//
|
||||||
|
// col->query(nlohmann::json::parse(R"(
|
||||||
|
//{
|
||||||
|
// "likes": {"$gt":50},
|
||||||
|
// "$or": [
|
||||||
|
// {"by": "菜鸟教程"},
|
||||||
|
// {"title": "MongoDB 教程"}
|
||||||
|
// ]
|
||||||
|
//}
|
||||||
|
// )"));
|
||||||
|
|
||||||
col->insert(j);
|
terminal();
|
||||||
|
|
||||||
col->query(nlohmann::json::parse(R"(
|
|
||||||
{
|
|
||||||
"likes": {"$gt":50},
|
|
||||||
"$or": [
|
|
||||||
{"by": "菜鸟教程"},
|
|
||||||
{"title": "MongoDB 教程"}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
)"));
|
|
||||||
|
|
||||||
|
|
||||||
// freopen("qq.txt", "r", stdin);
|
// freopen("qq.txt", "r", stdin);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user