{"id":26489159,"url":"https://github.com/bur4kbey/jsondb","last_synced_at":"2025-03-20T07:20:09.180Z","repository":{"id":65648974,"uuid":"596459303","full_name":"BUR4KBEY/jsondb","owner":"BUR4KBEY","description":"Simple library for storing datas on JSON files using models.","archived":false,"fork":false,"pushed_at":"2024-07-14T01:54:37.000Z","size":65,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-12T23:32:29.745Z","etag":null,"topics":["db","json","json-db","jsondb","typescript"],"latest_commit_sha":null,"homepage":"https://www.npmjs.com/package/@burakbey/jsondb","language":"TypeScript","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/BUR4KBEY.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":"2023-02-02T08:23:47.000Z","updated_at":"2024-07-14T01:54:40.000Z","dependencies_parsed_at":"2024-10-24T13:07:52.194Z","dependency_job_id":"f729d470-9339-480b-ba3e-336375a034f5","html_url":"https://github.com/BUR4KBEY/jsondb","commit_stats":{"total_commits":16,"total_committers":2,"mean_commits":8.0,"dds":0.125,"last_synced_commit":"e5710b6d56a090f41bb97632b516ea83ca5002fa"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BUR4KBEY%2Fjsondb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BUR4KBEY%2Fjsondb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BUR4KBEY%2Fjsondb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BUR4KBEY%2Fjsondb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/BUR4KBEY","download_url":"https://codeload.github.com/BUR4KBEY/jsondb/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244567005,"owners_count":20473459,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["db","json","json-db","jsondb","typescript"],"created_at":"2025-03-20T07:20:08.584Z","updated_at":"2025-03-20T07:20:09.174Z","avatar_url":"https://github.com/BUR4KBEY.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# JsonDB\n\nSimple library for storing datas on JSON files using models.\n\n## Installation\n\nUsing `npm`:\n\n```\nnpm install @burakbey/jsondb\n```\n\nUsing `yarn`:\n\n```\nyarn add @burakbey/jsondb\n```\n\n## Initialization\n\nCreate `data` folder on root path.\n\n```ts\n// src/index.ts\n\nimport { join } from 'path';\nimport { JsonDB, Store } from '@burakbey/jsondb';\n\nconst store = new Store({\n    mainPath: join(__dirname, '../data')\n});\nnew JsonDB(store);\n```\n\n## Creating a new model\n\nCreate `users.json` in `data` folder with `[]` content.\n\n```json\n// data/users.json\n\n[]\n```\n\n```ts\n// src/models/User.ts\n\n/* eslint-disable no-use-before-define */\nimport { Collection, Item } from '@burakbey/jsondb';\n\nexport class User extends Item\u003cUser\u003e {\n    username: string;\n\n    password: string;\n}\n\nexport const UserCollection = new Collection\u003cUser\u003e(User, 'users');\n```\n\n## Using the methods\n\n```ts\n// src/index.ts\n\nimport { User, UserCollection } from './models/User';\n\n// Create new users\nconst admin = new User({\n    username: 'admin',\n    password: 'password'\n});\n\nconst user = new User({\n    username: 'user',\n    password: 'password'\n});\n\nUserCollection.save(admin, user);\n\n// Get all users\nconst users = UserCollection.find();\n\n// Get all users with filter\nconst users = UserCollection.find(x =\u003e x.password === 'password');\n\n// Get one user\nconst user = UserCollection.findOne(x =\u003e x.username === 'user');\n\n// Update user\nconst user = UserCollection.findOne(x =\u003e x.username === 'user');\nif (user) {\n    user.username = 'user-updated';\n    UserCollection.update(user);\n}\n\n// Delete user\nconst user = UserCollection.findOne(x =\u003e x.username === 'user-updated');\nif (user) {\n    UserCollection.delete(user);\n}\n```\n\n## Usage for FiveM\n\nCreate `data` folder on root path.\n\n```ts\n// server/index.ts\n\nimport { JsonDB, Store } from '@burakbey/jsondb';\n\nconst store = new Store({\n    mainPath: 'data',\n    fetch(collection) {\n        const dataStr = LoadResourceFile(\n            GetCurrentResourceName(),\n            `${this.mainPath}/${collection.name}.json`\n        );\n        const data = JSON.parse(dataStr);\n        return data;\n    },\n    save(collection) {\n        SaveResourceFile(\n            GetCurrentResourceName(),\n            `${this.mainPath}/${collection.name}.json`,\n            JSON.stringify(collection.items, null, 4),\n            -1\n        );\n    }\n});\nnew JsonDB(store);\n\n...\n```\n\n## Change unique id generator\n\nJsonDB uses `uuid` package for generating unique ids. If you want to change this to something else, you can use this example:\n\n```ts\n// src/index.ts\n\nimport { randomBytes } from 'crypto';\nimport { JsonDB, Store } from '@burakbey/jsondb';\n\nconst store = new Store({\n    mainPath: 'somePathHere',\n    getId() {\n        const ms = new Date().getTime().toString();\n        const id = crypto.randomBytes(8).toString('hex');\n\n        return `${ms}-${id}`;\n    }\n});\nnew JsonDB(store);\n\n...\n```\n\n## ☕ Support\n\nIf you find this project useful and would like to support [me](https://github.com/BUR4KBEY), you can do so by visiting [my website](https://burakbey.dev).\n\n\u003ca href=\"https://burakbey.dev\" target=\"_blank\"\u003e\u003cimg src=\"https://burakbey.dev/github_support_snippet.png\" style=\"height: 56px !important;width: 200px !important;\" alt=\"Buy me a coffee\"\u003e\u003c/img\u003e\u003c/a\u003e","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbur4kbey%2Fjsondb","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbur4kbey%2Fjsondb","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbur4kbey%2Fjsondb/lists"}