#include #include #include #include #include "json.hpp" using Db = std::vector>; void save_database(Db& database, std::string file_name) { nlohmann::json json_data = database; std::string serialised_json_data = json_data.dump(); std::ofstream db_file(file_name); db_file << serialised_json_data; db_file.close(); } void load_database(Db& database, std::string file_name) { std::ifstream db_file(file_name); std::string raw_file_text; db_file >> raw_file_text; db_file.close(); database = nlohmann::json::parse(raw_file_text); } void add_entry(Db& database, std::string key, std::string value) { database.push_back({key, value}); } void remove_entry(Db& database, std::string key) { int index = 0; for (std::vector& entry : database) { index++; if (entry[0] == key) { database.erase(database.begin() + index); } } } void prompt_user(Db& database) { std::string mode; std::cin >> mode; if (mode == "add") { std::string key; std::string value; std::cin >> key; std::cin >> value; add_entry(database, key, value); } else if (mode == "rem") { std::string key; std::cin >> key; remove_entry(database, key); } else if (mode == "save") { std::string file; std::cin >> file; save_database(database, file); } else if (mode == "load") { std::string file; std::cin >> file; load_database(database, file); } else { prompt_user(database); } } int main() { Db database; while (true) { for (std::vector entry: database) { std::cout << entry[0] << " | " << entry[1] << std::endl; } prompt_user(database); } }