{"id":21499198,"url":"https://github.com/tripolskypetr/node-basecrud-service","last_synced_at":"2026-05-09T10:02:31.687Z","repository":{"id":264330605,"uuid":"892015878","full_name":"tripolskypetr/node-basecrud-service","owner":"tripolskypetr","description":"The generic repository pattern implementation for NodeJS, aka BaseCRUD","archived":false,"fork":false,"pushed_at":"2024-11-27T18:21:06.000Z","size":36,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-23T22:34:13.406Z","etag":null,"topics":["appwrite","appwrite-database","basecrud","generic","nodejs","repository","repository-pattern","solid"],"latest_commit_sha":null,"homepage":"https://github.com/react-declarative/react-declarative","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/tripolskypetr.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":"2024-11-21T11:13:41.000Z","updated_at":"2024-11-27T18:21:10.000Z","dependencies_parsed_at":null,"dependency_job_id":"33f518fe-bc02-4976-9786-32fd8457b649","html_url":"https://github.com/tripolskypetr/node-basecrud-service","commit_stats":null,"previous_names":["tripolskypetr/node-basecrud-service"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tripolskypetr%2Fnode-basecrud-service","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tripolskypetr%2Fnode-basecrud-service/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tripolskypetr%2Fnode-basecrud-service/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tripolskypetr%2Fnode-basecrud-service/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tripolskypetr","download_url":"https://codeload.github.com/tripolskypetr/node-basecrud-service/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244038324,"owners_count":20387826,"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":["appwrite","appwrite-database","basecrud","generic","nodejs","repository","repository-pattern","solid"],"created_at":"2024-11-23T17:14:47.505Z","updated_at":"2026-05-09T10:02:31.623Z","avatar_url":"https://github.com/tripolskypetr.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# node-basecrud-service\n\n\u003e The generic repository pattern implementation for NodeJS, aka `BaseCRUD`\n\n## Code sample\n\n**BaseCrud.ts**\n\n```typescript\n\nexport const BaseCrud = factory(\n  class {\n    protected readonly appwriteService = inject\u003cAppwriteService\u003e(TYPES.appwriteService);\n    protected readonly loggerService = inject\u003cLoggerService\u003e(TYPES.loggerService);\n\n    constructor(public name: string, public collectionId: string) {}\n\n    protected async findAll() {\n        this.loggerService.log(`${this.name} findAll`);\n        return await resolveDocuments(listDocuments(this.collectionId));\n    };\n\n    protected async findById(id: string) {\n        this.loggerService.log(`${this.name} findById`, { id });\n        return await this.appwriteService.databases.getDocument(\n            CC_APPWRITE_DATABASE_ID,\n            this.collectionId,\n            id,\n        );\n    };\n\n    protected async create(dto: unknown) {\n        this.loggerService.log(`${this.name} create`, { dto });\n        return await this.appwriteService.databases.createDocument(\n            CC_APPWRITE_DATABASE_ID,\n            this.collectionId,\n            this.appwriteService.createId(),\n            dto,\n        );\n    };\n\n    protected async update(id: string, dto: unknown) {\n        this.loggerService.log(`${this.name} update`, { id, dto });\n        return await this.appwriteService.databases.updateDocument(\n            CC_APPWRITE_DATABASE_ID,\n            this.collectionId,\n            id,\n            dto,\n        );\n    };\n\n    protected async remove(id: string) {\n        this.loggerService.log(`${this.name} remove`, { id });\n        return await this.appwriteService.databases.deleteDocument(\n            CC_APPWRITE_DATABASE_ID,\n            this.collectionId,\n            id,\n        );\n    };\n  }\n);\n```\n\n**TodoDbService.ts**\n\n```typescript\nexport class TodoDbService extends BaseCrud(\"todoDbService\", CC_APPWRITE_TODO_COLLECTION_ID) {\n\n    public findAll = async () =\u003e {\n        return \u003cITodoRow[]\u003e await super.findAll();\n    };\n\n    public findById = async (id: string) =\u003e {\n        return \u003cITodoRow\u003e await super.findById(id);\n    };\n\n    public create = async (dto: ITodoDto) =\u003e {\n        return \u003cITodoRow\u003e await super.create(dto);\n    };\n\n    public update = async (id: string, dto: ITodoDto) =\u003e {\n        return \u003cITodoRow\u003e await super.update(id, dto);\n    };\n\n    public remove = async (id: string) =\u003e {\n        return \u003cITodoRow\u003e await super.remove(id);\n    };\n};\n\nexport default TodoDbService;\n\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftripolskypetr%2Fnode-basecrud-service","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftripolskypetr%2Fnode-basecrud-service","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftripolskypetr%2Fnode-basecrud-service/lists"}