{"id":22168934,"url":"https://github.com/cau777/multithreaded-json-database-server","last_synced_at":"2026-04-28T21:01:48.845Z","repository":{"id":150017667,"uuid":"393695185","full_name":"cau777/Multithreaded-JSON-Database-Server","owner":"cau777","description":"This project includes a server that controls a database based on Maps and Json, allowing GET, SET and DELETE operations. The server uses executors to control multiple threads. It takes advantage of the command pattern to organize requests. This project also includes a client that read requests from the command line or a file and send them to the server using Sockets. ","archived":false,"fork":false,"pushed_at":"2021-08-07T13:44:52.000Z","size":8,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-24T17:21:23.933Z","etag":null,"topics":["command-pattern","executor","gson","java","json","multithreading","socket"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cau777.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-08-07T13:44:50.000Z","updated_at":"2021-08-07T13:46:36.000Z","dependencies_parsed_at":"2023-04-17T05:40:00.630Z","dependency_job_id":null,"html_url":"https://github.com/cau777/Multithreaded-JSON-Database-Server","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/cau777/Multithreaded-JSON-Database-Server","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cau777%2FMultithreaded-JSON-Database-Server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cau777%2FMultithreaded-JSON-Database-Server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cau777%2FMultithreaded-JSON-Database-Server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cau777%2FMultithreaded-JSON-Database-Server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cau777","download_url":"https://codeload.github.com/cau777/Multithreaded-JSON-Database-Server/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cau777%2FMultithreaded-JSON-Database-Server/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32399010,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-28T19:38:08.556Z","status":"ssl_error","status_checked_at":"2026-04-28T19:37:55.688Z","response_time":56,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["command-pattern","executor","gson","java","json","multithreading","socket"],"created_at":"2024-12-02T06:27:51.652Z","updated_at":"2026-04-28T21:01:48.810Z","avatar_url":"https://github.com/cau777.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Multithreaded-JSON-Database-Server\n\nThis project includes a server that controls a database based on Maps and Json, allowing GET, SET and DELETE operations.\nThe server uses executors to control multiple threads. It takes advantage of the command pattern to organize requests.\nThis project also includes a client that read requests from the command line or a file and send them to the server using\nSockets. \n\n## Requests\n- The available request types are: get, set, delete, and exit.\n- To specify the key to the record, the user should type the full path to this field in a form of a JSON array.\n- The value can be either a string, or a JSON object.\n\n## Examples\n\n```\n\u003e java Main -t set -k 1 -v \"Hello world!\" \nClient started!\nSent: {\"type\":\"set\",\"key\":\"1\",\"value\":\"Hello world!\"}\nReceived: {\"response\":\"OK\"}\n```\n\n```\n\u003e java Main -in setFile.json \nClient started!\nSent:\n{\n   \"type\":\"set\",\n   \"key\":\"person\",\n   \"value\":{\n      \"name\":\"Elon Musk\",\n      \"car\":{\n         \"model\":\"Tesla Roadster\",\n         \"year\":\"2018\"\n      },\n      \"rocket\":{\n         \"name\":\"Falcon 9\",\n         \"launches\":\"87\"\n      }\n   }\n}\nReceived: {\"response\":\"OK\"}\n```\n\n```\n\u003e java Main -in getFile.json \nClient started!\nSent: {\"type\":\"get\",\"key\":[\"person\",\"name\"]}\nReceived: {\"response\":\"OK\",\"value\":\"Elon Musk\"}\n```\n\n```\n\u003e java Main -in updateFile.json \nClient started!\nSent: {\"type\":\"set\",\"key\":[\"person\",\"rocket\",\"launches\"],\"value\":\"88\"}\nReceived: {\"response\":\"OK\"}\n```\n\n```\n\u003e java Main -in secondGetFile.json \nClient started!\nSent: {\"type\":\"get\",\"key\":[\"person\"]}\nReceived:\n{\n   \"response\":\"OK\",\n   \"value\":{\n      \"name\":\"Elon Musk\",\n      \"car\":{\n         \"model\":\"Tesla Roadster\",\n         \"year\":\"2018\"\n      },\n      \"rocket\":{\n         \"name\":\"Falcon 9\",\n         \"launches\":\"88\"\n      }\n   }\n}\n```\n\n```\n\u003e java Main -in deleteFile.json \nClient started!\nSent: {\"type\":\"delete\",\"key\":[\"person\",\"car\",\"year\"]}\nReceived: {\"response\":\"OK\"}\n```\n\n```\n\u003e java Main -in secondGetFile.json \nClient started!\nSent: {\"type\":\"get\",\"key\":[\"person\"]}\nReceived:\n{\n   \"response\":\"OK\",\n   \"value\":{\n      \"name\":\"Elon Musk\",\n      \"car\":{\n         \"model\":\"Tesla Roadster\"\n      },\n      \"rocket\":{\n         \"name\":\"Falcon 9\",\n         \"launches\":\"88\"\n      }\n   }\n}\n```\n\n```\n\u003e java Main -t exit \nClient started!\nSent: {\"type\":\"exit\"}\nReceived: {\"response\":\"OK\"}\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcau777%2Fmultithreaded-json-database-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcau777%2Fmultithreaded-json-database-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcau777%2Fmultithreaded-json-database-server/lists"}