From a397347001c6cf9e5276389e18d4a8da57f286d3 Mon Sep 17 00:00:00 2001 From: Xory Date: Wed, 24 Sep 2025 16:16:45 +0300 Subject: [PATCH] this code is a disgrace --- .gitignore | 2 ++ README.md | 8 +++++++- flake.nix | 17 +++++++++++++++++ main.cpp | 41 ++++++++++++++++++++++++++++++++++++++--- shell.nix | 8 ++++++++ 5 files changed, 72 insertions(+), 4 deletions(-) create mode 100644 flake.nix create mode 100644 shell.nix diff --git a/.gitignore b/.gitignore index cba7efc..2cd363a 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ a.out +flake.lock +/.ccls-cache diff --git a/README.md b/README.md index 52565d9..4147786 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,10 @@ # bluedis Redis, but worse in every conceivable manner. -And also written in C++. +And also my first serious C++ project. + +## Roadmap +- [X] Basic K/V store +- [ ] Remove/add entries +- [ ] Serialisation and saving +- [ ] Networking diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..023d97b --- /dev/null +++ b/flake.nix @@ -0,0 +1,17 @@ +{ + description = "Development flake for bluedis"; + + inputs = { + nixpkgs.url = "github:nixos/nixpkgs/release-25.05"; + flake-utils.url = "github:numtide/flake-utils"; + }; + + outputs = { self, nixpkgs, flake-utils }: + flake-utils.lib.eachDefaultSystem + (system: + let pkgs = nixpkgs.legacyPackages.${system}; in + { + devShells.default = import ./shell.nix { inherit pkgs; }; + } + ); +} diff --git a/main.cpp b/main.cpp index ba8fd06..fb4daf3 100644 --- a/main.cpp +++ b/main.cpp @@ -2,6 +2,38 @@ #include #include +void add_entry(std::vector>& database, std::string key, std::string value) { + database.push_back({key, value}); +} + +void remove_entry(std::vector>& 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(std::vector>& 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 { + prompt_user(database); + } +} + int main() { std::vector> database; @@ -10,8 +42,11 @@ int main() { { "john", "unwanted_guest"}, { "laith", "ducc" } }; - - for (std::vector entry: database) { - std::cout << entry[0] << " | " << entry[1] << std::endl; + + while (true) { + for (std::vector entry: database) { + std::cout << entry[0] << " | " << entry[1] << std::endl; + } + prompt_user(database); } } diff --git a/shell.nix b/shell.nix new file mode 100644 index 0000000..0cf68ef --- /dev/null +++ b/shell.nix @@ -0,0 +1,8 @@ +{ pkgs ? import }: +with pkgs; +mkShell { + buildInputs = with pkgs; [ + gcc + ccls + ]; +}