{"_id":"@denis_bruns/base-database-service","_rev":"7-1304e7637749f9d6dd91a52c27135631","name":"@denis_bruns/base-database-service","dist-tags":{"latest":"1.0.0"},"versions":{"0.1.0":{"name":"@denis_bruns/base-database-service","version":"0.1.0","keywords":["clean-architecture","typescript","gateway"],"author":{"name":"bruns6077@gmail.com"},"license":"MIT","_id":"@denis_bruns/base-database-service@0.1.0","maintainers":[{"name":"denis_bruns","email":"denis_bruns@protonmail.com"}],"dist":{"shasum":"9372e381683cdea97ef27f79eb821b6ccf1d0cea","tarball":"https://registry.npmjs.org/@denis_bruns/base-database-service/-/base-database-service-0.1.0.tgz","fileCount":10,"integrity":"sha512-ezLRCRRe3NnwqYE7JU07JB0A4rZNf0UPaWAOmJAuL78WkxwzXsUWBaDmp2EpLJlG9f7w16vdS+1E8QzcKFUeQQ==","signatures":[{"sig":"MEUCICHY0T2HcLTXYpyj4PhAXXnom6lKGfjkxzl1SKgEBrEDAiEAxULBG6TeuDWzJb4nj48z7YszRWqgzIwi0/mFLxkiQn0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":9000},"main":"index.js","types":"types/index.d.ts","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"scripts":{"jest":"jest","lint":"eslint src/lib --ext .ts","test":"jest src/tests --detectOpenHandles --forceExit","build":"tsc && npm run postbuild","clean":"rimraf dist","release":"bash release.sh patch","postbuild":"cp package.json README.md dist/","release:major":"bash release.sh major","release:minor":"bash release.sh minor","release:patch":"bash release.sh patch","prepublishOnly":"npm cache clean && npm run build","release:premajor":"bash release.sh premajor","release:prepatch":"bash release.sh prepatch","release:premminor":"bash release.sh preminor","release:prerelease":"bash release.sh prerelease"},"_npmUser":{"name":"denis_bruns","email":"denis_bruns@protonmail.com"},"_npmVersion":"10.8.2","description":"","directories":{},"_nodeVersion":"18.20.5","dependencies":{"@denis_bruns/foundation":"^0.5.0"},"_hasShrinkwrap":false,"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/base-database-service_0.1.0_1736892575745_0.7110853538611566","host":"s3://npm-registry-packages-npm-production"},"deprecated":"This package is deprecated."},"0.2.0":{"name":"@denis_bruns/base-database-service","version":"0.2.0","keywords":["clean-architecture","typescript","gateway"],"author":{"name":"bruns6077@gmail.com"},"license":"MIT","_id":"@denis_bruns/base-database-service@0.2.0","maintainers":[{"name":"denis_bruns","email":"denis_bruns@protonmail.com"}],"dist":{"shasum":"0dc5c700c777fda7f863ea64f83f4520253b802d","tarball":"https://registry.npmjs.org/@denis_bruns/base-database-service/-/base-database-service-0.2.0.tgz","fileCount":10,"integrity":"sha512-Kxt1Tq4eKyicoTG7rlyX+UQUPL2b/PdSgtkHm5GDXePXYyWLRT9ym7BmqImaQM/MUtmCyiia5H+GQAp1+5D7vA==","signatures":[{"sig":"MEUCIQDzG+WOyk3oCj/dkAFyNBRl3SE1q//Kh8tDUn34sWOmRgIgbW5UpJyfmeZZhvyTkTv/lTNrZd9LHx9abnQ3MNhj8co=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":10879},"main":"index.js","types":"types/index.d.ts","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"scripts":{"jest":"jest","lint":"eslint src/lib --ext .ts","test":"jest src/tests --detectOpenHandles --forceExit","build":"tsc && npm run postbuild","clean":"rimraf dist","release":"bash release.sh patch","postbuild":"cp package.json README.md dist/","release:major":"bash release.sh major","release:minor":"bash release.sh minor","release:patch":"bash release.sh patch","prepublishOnly":"npm cache clean && npm run build","release:premajor":"bash release.sh premajor","release:prepatch":"bash release.sh prepatch","release:premminor":"bash release.sh preminor","release:prerelease":"bash release.sh prerelease"},"_npmUser":{"name":"denis_bruns","email":"denis_bruns@protonmail.com"},"_npmVersion":"10.8.2","description":"","directories":{},"_nodeVersion":"18.20.5","dependencies":{"@denis_bruns/foundation":"^0.6.0"},"_hasShrinkwrap":false,"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/base-database-service_0.2.0_1736893408548_0.8315502825349239","host":"s3://npm-registry-packages-npm-production"},"deprecated":"This package is deprecated."},"0.3.0":{"name":"@denis_bruns/base-database-service","version":"0.3.0","keywords":["clean-architecture","typescript","gateway"],"author":{"name":"bruns6077@gmail.com"},"license":"MIT","_id":"@denis_bruns/base-database-service@0.3.0","maintainers":[{"name":"denis_bruns","email":"denis_bruns@protonmail.com"}],"dist":{"shasum":"1b66bc78345573673eb295e5784cc3611fcde73c","tarball":"https://registry.npmjs.org/@denis_bruns/base-database-service/-/base-database-service-0.3.0.tgz","fileCount":10,"integrity":"sha512-2k0VKhHoLXY597J2SwN2K4S7ImJcqbgcD9MyjD+dghBiOCSizXRLJGrtl9pLpRK2C5UI0WEM/MO98BwXUaUyBg==","signatures":[{"sig":"MEYCIQCQjXgNc1/PvLNy/C36uY0L5fm0BuTUx75IqI+EHeWNngIhAIt6RFNUfCCibtZBgw04jdgsAI1gYuMzAi9A7hvw9aUm","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":13998},"main":"index.js","types":"types/index.d.ts","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"scripts":{"jest":"jest","lint":"eslint src/lib --ext .ts","test":"jest src/tests --detectOpenHandles --forceExit","build":"tsc && npm run postbuild","clean":"rimraf dist","release":"bash release.sh patch","postbuild":"cp package.json README.md dist/","release:major":"bash release.sh major","release:minor":"bash release.sh minor","release:patch":"bash release.sh patch","prepublishOnly":"npm cache clean && npm run build","release:premajor":"bash release.sh premajor","release:prepatch":"bash release.sh prepatch","release:premminor":"bash release.sh preminor","release:prerelease":"bash release.sh prerelease"},"_npmUser":{"name":"denis_bruns","email":"denis_bruns@protonmail.com"},"_npmVersion":"10.8.2","description":"","directories":{},"_nodeVersion":"18.20.5","dependencies":{"@denis_bruns/foundation":"^0.6.0"},"_hasShrinkwrap":false,"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/base-database-service_0.3.0_1736893533049_0.08468764566643516","host":"s3://npm-registry-packages-npm-production"},"deprecated":"This package is deprecated."},"0.4.0":{"name":"@denis_bruns/base-database-service","version":"0.4.0","keywords":["clean-architecture","typescript","gateway"],"author":{"name":"bruns6077@gmail.com"},"license":"MIT","_id":"@denis_bruns/base-database-service@0.4.0","maintainers":[{"name":"denis_bruns","email":"denis_bruns@protonmail.com"}],"dist":{"shasum":"a11ffb260221e39692dc575009a18b812b03cc2c","tarball":"https://registry.npmjs.org/@denis_bruns/base-database-service/-/base-database-service-0.4.0.tgz","fileCount":13,"integrity":"sha512-uNLVr3vx9k/OZthjF/fbTo6ptVdnGI0+IPcsdhe+TW1c+AHt2xfSqJvToHJC8WBqKtzQa7IGH/dqO2O4qJ6WWw==","signatures":[{"sig":"MEYCIQDEhps+IToKtYobR2ASa+UGnHsQpAT0rmfnTU/WEkJ9XwIhAJ24HjuECSAo2h5QFrx+jcZxaFhMwLR7fiHrghiTYibg","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":15206},"main":"index.js","types":"types/index.d.ts","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"scripts":{"jest":"jest","lint":"eslint src/lib --ext .ts","test":"jest src/tests --detectOpenHandles --forceExit","build":"tsc && npm run postbuild","clean":"rimraf dist","release":"bash release.sh patch","postbuild":"cp package.json README.md dist/","release:major":"bash release.sh major","release:minor":"bash release.sh minor","release:patch":"bash release.sh patch","prepublishOnly":"npm cache clean && npm run build","release:premajor":"bash release.sh premajor","release:prepatch":"bash release.sh prepatch","release:premminor":"bash release.sh preminor","release:prerelease":"bash release.sh prerelease"},"_npmUser":{"name":"denis_bruns","email":"denis_bruns@protonmail.com"},"_npmVersion":"10.8.2","description":"","directories":{},"_nodeVersion":"18.20.5","dependencies":{"@denis_bruns/foundation":"^0.6.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.7.2"},"_npmOperationalInternal":{"tmp":"tmp/base-database-service_0.4.0_1736897354139_0.6263070408675766","host":"s3://npm-registry-packages-npm-production"},"deprecated":"This package is deprecated."},"0.6.0":{"name":"@denis_bruns/base-database-service","version":"0.6.0","keywords":["clean-architecture","typescript","gateway"],"author":{"name":"bruns6077@gmail.com"},"license":"MIT","_id":"@denis_bruns/base-database-service@0.6.0","maintainers":[{"name":"denis_bruns","email":"denis_bruns@protonmail.com"}],"dist":{"shasum":"2ae0e22b81a2835e9df7a293ecc54e3493b72a8e","tarball":"https://registry.npmjs.org/@denis_bruns/base-database-service/-/base-database-service-0.6.0.tgz","fileCount":13,"integrity":"sha512-hrQhvz6Nr0ogs+WtVE7mnQ59YYtuv9pngwsDFSC67CYnwVesu2MbtYNwJNJvLbf7DT4iT7wpBCVstnAL3pELaw==","signatures":[{"sig":"MEUCIQC+G/K8Q5jnW1uaNLeeYFbfutGuH4owWwmUFthIYSERSQIgNWRQWxB656ZSinWbgHWtZJ7viIopJCGIlhw6z7mwk+s=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":15046},"main":"index.js","types":"types/index.d.ts","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"scripts":{"jest":"jest","lint":"eslint src/lib --ext .ts","test":"jest src/tests --detectOpenHandles --forceExit","build":"tsc && npm run postbuild","clean":"rimraf dist","release":"bash release.sh patch","postbuild":"cp package.json README.md dist/","release:major":"bash release.sh major","release:minor":"bash release.sh minor","release:patch":"bash release.sh patch","prepublishOnly":"npm cache clean && npm run build","release:premajor":"bash release.sh premajor","release:prepatch":"bash release.sh prepatch","release:premminor":"bash release.sh preminor","release:prerelease":"bash release.sh prerelease"},"_npmUser":{"name":"denis_bruns","email":"denis_bruns@protonmail.com"},"_npmVersion":"10.8.2","description":"","directories":{},"_nodeVersion":"18.20.5","dependencies":{"@denis_bruns/foundation":"^0.7.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.7.2"},"_npmOperationalInternal":{"tmp":"tmp/base-database-service_0.6.0_1736897531168_0.5279805068295553","host":"s3://npm-registry-packages-npm-production"},"deprecated":"This package is deprecated."},"0.7.0":{"name":"@denis_bruns/base-database-service","version":"0.7.0","keywords":["clean-architecture","typescript","gateway"],"author":{"name":"bruns6077@gmail.com"},"license":"MIT","_id":"@denis_bruns/base-database-service@0.7.0","maintainers":[{"name":"denis_bruns","email":"denis_bruns@protonmail.com"}],"dist":{"shasum":"12300840d1a1a1a1a7a040e4bc738800894a53e2","tarball":"https://registry.npmjs.org/@denis_bruns/base-database-service/-/base-database-service-0.7.0.tgz","fileCount":13,"integrity":"sha512-YXzd4ZFp4uO/iqhA+zcnNV6/Zcmvc2MbwiKnU/VilNr9yPRZYr8heAgQBkQiXYIT6lxYie6MToOqvRcOX1Kh0w==","signatures":[{"sig":"MEUCIQDK41SgGvq7ONLcFNKzY3CB6EB0YvwXd7jMRYQrdpyqEAIgMNdV61aV809QkInAYyjauMyS5Uitqd4rrm2Kc/QCfyA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":15286},"main":"./dist/index.js","types":"./dist/types/index.d.ts","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"8f4b289cca4e6381e7c7aff3712c5a65ccbd5a44","scripts":{"jest":"jest","lint":"eslint src/lib --ext .ts","test":"jest src/tests --detectOpenHandles --forceExit","build":"tsc && npm run postbuild","clean":"rimraf dist","release":"bash release.sh patch","postbuild":"cp package.json README.md dist/","release:major":"bash release.sh major","release:minor":"bash release.sh minor","release:patch":"bash release.sh patch","prepublishOnly":"npm cache clean && npm run build","release:premajor":"bash release.sh premajor","release:prepatch":"bash release.sh prepatch","release:premminor":"bash release.sh preminor","release:prerelease":"bash release.sh prerelease"},"_npmUser":{"name":"denis_bruns","email":"denis_bruns@protonmail.com"},"_npmVersion":"10.8.2","description":"","directories":{},"_nodeVersion":"18.20.5","dependencies":{"@denis_bruns/foundation":"^0.8.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.2.5","ts-node":"^10.9.2","typescript":"^5.7.2","@types/jest":"^29.5.14"},"_npmOperationalInternal":{"tmp":"tmp/base-database-service_0.7.0_1736923940996_0.9432338048726965","host":"s3://npm-registry-packages-npm-production"},"deprecated":"This package is deprecated."},"1.0.0":{"name":"@denis_bruns/base-database-service","version":"1.0.0","keywords":["clean-architecture","typescript","gateway"],"author":{"name":"denis_bruns@protonmail.com"},"license":"MIT","_id":"@denis_bruns/base-database-service@1.0.0","maintainers":[{"name":"denis_bruns","email":"denis_bruns@protonmail.com"}],"dist":{"shasum":"44be43c69d610e7d2647d2b12132bbb43b654d34","tarball":"https://registry.npmjs.org/@denis_bruns/base-database-service/-/base-database-service-1.0.0.tgz","fileCount":13,"integrity":"sha512-qOLESXbpw7V6BMPNu4UxEPNcdawMgBDoGi4fHi8d8VIdx5oYjK+VvB1cXsP591yRuawGVzGo057L90JTKrJncA==","signatures":[{"sig":"MEQCIB2/rWH09OVJ66UHGY/7fw4/Jfp+fk4OdmgN4Ov6VlNvAiB6tme1n1M1Y3ZLEjyXTSJwQU86TT773/ZcdaBEQa5DDw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":31199},"main":"./dist/index.js","types":"./dist/types/index.d.ts","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"69f7c0b777ab6cdb47343db9c88806bcec537788","scripts":{"jest":"jest","lint":"eslint src/lib --ext .ts","test":"jest src/tests --detectOpenHandles --forceExit","build":"tsc && npm run postbuild","clean":"rimraf dist","release":"bash release.sh patch","postbuild":"cp package.json README.md dist/","release:major":"bash release.sh major","release:minor":"bash release.sh minor","release:patch":"bash release.sh patch","prepublishOnly":"npm cache clean && npm run build","release:premajor":"bash release.sh premajor","release:prepatch":"bash release.sh prepatch","release:premminor":"bash release.sh preminor","release:prerelease":"bash release.sh prerelease"},"_npmUser":{"name":"denis_bruns","email":"denis_bruns@protonmail.com"},"_npmVersion":"10.8.2","description":"> **A foundational TypeScript library for building customizable database services with typed queries, filter expressions, and pagination.**","directories":{},"_nodeVersion":"18.20.5","dependencies":{"@denis_bruns/web-core-ts":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.2.5","ts-node":"^10.9.2","typescript":"^5.7.2","@types/jest":"^29.5.14"},"_npmOperationalInternal":{"tmp":"tmp/base-database-service_1.0.0_1736952158382_0.617486587654595","host":"s3://npm-registry-packages-npm-production"},"deprecated":"This package is deprecated."}},"time":{"created":"2025-01-14T22:09:35.614Z","modified":"2025-01-23T21:00:07.572Z","0.1.0":"2025-01-14T22:09:35.910Z","0.2.0":"2025-01-14T22:23:28.727Z","0.3.0":"2025-01-14T22:25:33.235Z","0.4.0":"2025-01-14T23:29:14.361Z","0.6.0":"2025-01-14T23:32:11.363Z","0.7.0":"2025-01-15T06:52:21.224Z","1.0.0":"2025-01-15T14:42:38.603Z"},"author":{"name":"denis_bruns@protonmail.com"},"license":"MIT","keywords":["clean-architecture","typescript","gateway"],"description":"> **A foundational TypeScript library for building customizable database services with typed queries, filter expressions, and pagination.**","maintainers":[{"name":"denis_bruns","email":"denis_bruns@protonmail.com"}],"readme":"# @denis_bruns/base-database-service\n\n> **A foundational TypeScript library for building customizable database services with typed queries, filter expressions, and pagination.**\n\n[![NPM Version](https://img.shields.io/npm/v/@denis_bruns/base-database-service?style=flat-square&logo=npm)](https://www.npmjs.com/package/@denis_bruns/base-database-service)\n[![TypeScript](https://img.shields.io/badge/TypeScript-5.0-blue?style=flat-square&logo=typescript)](https://www.typescriptlang.org/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg?style=flat-square)](https://opensource.org/licenses/MIT)\n[![GitHub](https://img.shields.io/badge/GitHub--181717.svg?style=flat-square&logo=github)](https://github.com/h3llf1r33/base-database-service)\n\n---\n\n## Overview\n\n`@denis_bruns/base-database-service` provides an **abstract base class** and **utility functions** to help developers implement clean, consistent database access layers across various data stores (e.g., SQL, NoSQL). It leverages **filter expressions**, **pagination**, and **type-safe queries** for a robust, extensible approach.\n\nThis package is part of the larger `@denis_bruns` ecosystem of libraries that emphasize **clean architecture**, **testability**, and **modularity**.\n\n---\n\n## Key Features\n\n1. **Base Database Service**\n    - An abstract class to derive your own database services.\n    - Handles pagination, filtering, and query preparation.\n\n2. **Filter Expression Builder**\n    - An abstract class for translating filters (`IFilterQuery`) into a store-specific query format.\n    - Extendable for DynamoDB, MongoDB, SQL, or other implementations.\n\n3. **Pagination and Validation**\n    - Built-in helpers (`calculatePaginationValues`, `validatePagination`) to keep pagination safe and consistent.\n    - `validateValue` function to detect potential NoSQL injections or invalid fields.\n\n4. **Separation of Concerns**\n    - `IQueryExecutor` interface to separate *query building* from *query execution*.\n    - Clean architecture approach that fosters testability and maintainability.\n\n---\n\n## Installation\n\nInstall via **npm**:\n\n```bash\nnpm install @denis_bruns/base-database-service\n```\n\nOr via **yarn**:\n\n```bash\nyarn add @denis_bruns/base-database-service\n```\n\n---\n\n## Basic Usage\n\nBelow is a **simplified** example showing how to extend `BaseDatabaseService` and build a custom expression builder.\n\n### 1. Create Your Expression Builder\n\n```ts\nimport {\n  BaseExpressionBuilder,\n  IFilterQuery,\n  IDatabaseExpression,\n} from '@denis_bruns/web-core-ts';\n\n// Custom expression interface\nexport interface MyExpression extends IDatabaseExpression {\n  filterExpression: string;\n  expressionValues: Record<string, any>;\n}\n\n// Extend the base expression builder to handle your filters\nexport class MyExpressionBuilder extends BaseExpressionBuilder<MyExpression> {\n  buildFilterExpression(filters: IFilterQuery[]): MyExpression {\n    // Example of building a simple 'field = value' expression\n    const filterExpression = filters\n      .map((f, idx) => `${f.field} ${f.operator} :val${idx}`)\n      .join(' AND ');\n\n    const expressionValues = filters.reduce((acc, f, idx) => {\n      return { ...acc, [`:val${idx}`]: f.value };\n    }, {});\n\n    return { filterExpression, expressionValues };\n  }\n}\n```\n\n### 2. Create Your Query Executor\n\n```ts\nimport { IQueryExecutor } from '@denis_bruns/web-core-ts';\nimport { MyExpression } from './MyExpressionBuilder';\n\nexport class MyQueryExecutor implements IQueryExecutor<MyExpression, any> {\n  constructor(private readonly dataSource: any[]) {\n    // 'dataSource' could be an array (for testing) or a real database client\n  }\n\n  async executeQuery(params: MyExpression, _client: any): Promise<any[]> {\n    // This is just a mock example; you'd integrate with your real DB logic\n    // For demonstration, let's just return the full dataSource:\n    return this.dataSource;\n  }\n}\n```\n\n### 3. Extend `BaseDatabaseService`\n\n```ts\nimport {\n  BaseDatabaseService,\n  IGenericFilterQuery,\n  IPaginationQuery,\n} from '@denis_bruns/base-database-service';\nimport { MyExpressionBuilder, MyExpression } from './MyExpressionBuilder';\nimport { MyQueryExecutor } from './MyQueryExecutor';\n\nexport class MyDatabaseService extends BaseDatabaseService<MyExpression, any> {\n  constructor(\n    tableName: string,\n    private readonly mockData: any[]\n  ) {\n    super(\n      tableName,\n      'id', // primary key name\n      new MyExpressionBuilder(),\n      new MyQueryExecutor(mockData)\n    );\n  }\n\n  protected async prepareQueryParameters(query: IGenericFilterQuery) {\n    const { filters = [], pagination = {} } = query;\n    const { limit, offset, page } = this.calculatePaginationValues(pagination as IPaginationQuery);\n\n    // Build the expression using our custom builder\n    const params = this.expressionBuilder.buildFilterExpression(filters);\n\n    return {\n      params,\n      limit,\n      offset,\n      page,\n      pagination\n    };\n  }\n\n  protected processResults<T>(\n    items: any[],\n    limit: number,\n    offset: number\n  ): T[] {\n    // Example: slice items for pagination\n    return items.slice(offset, offset + limit) as T[];\n  }\n\n  protected handleError(error: any): void {\n    console.error('Database error:', error);\n  }\n}\n```\n\n### 4. Use Your Derived Service\n\n```ts\nimport { IGenericFilterQuery } from '@denis_bruns/web-core-ts';\n\nasync function example() {\n  // Sample data to simulate a store\n  const dataSource = [\n    { id: '1', name: 'Item 1' },\n    { id: '2', name: 'Item 2' },\n    { id: '3', name: 'Item 3' },\n  ];\n\n  const dbService = new MyDatabaseService('my-table', dataSource);\n\n  const query: IGenericFilterQuery = {\n    filters: [{ field: 'name', operator: '=', value: 'Item 1' }],\n    pagination: { page: 1, limit: 10 },\n  };\n\n  const results = await dbService.fetchWithFiltersAndPagination(query, null);\n  console.log('Paginated and filtered results:', results);\n}\n```\n\n---\n\n## Additional Utilities\n\n- **`validatePagination`**: Ensures page/limit/offset are integers.\n- **`validateValue`**: Checks for forbidden patterns (`$where`, `$regex`, etc.) to prevent potential NoSQL injection.\n- **`calculatePaginationValues`**: Converts `page`, `limit`, and optional `offset` to final integers used by your database queries.\n\n---\n\n## Related Packages\n\n- **@denis_bruns/web-core-ts**  \n  [![NPM](https://img.shields.io/npm/v/@denis_bruns/web-core-ts?style=flat-square&logo=npm)](https://www.npmjs.com/package/@denis_bruns/web-core-ts)  \n  [![GitHub](https://img.shields.io/badge/GitHub--181717.svg?style=flat-square&logo=github)](https://github.com/h3llf1r33/web-core-ts)  \n  *Foundational interfaces and types for building modular, testable web applications.*\n\n- **@denis_bruns/nosql-mongodb-service**  \n  [![NPM](https://img.shields.io/npm/v/@denis_bruns/nosql-mongodb-service?style=flat-square&logo=npm)](https://www.npmjs.com/package/@denis_bruns/nosql-mongodb-service)\n  [![GitHub](https://img.shields.io/badge/GitHub--181717.svg?style=flat-square&logo=github)](https://github.com/h3llf1r33/nosql-mongodb-service)  \n  *Ready-to-use NoSQL data service built on MongoDB.*\n\n- **@denis_bruns/nosql-dynamodb-service**  \n  [![NPM](https://img.shields.io/npm/v/@denis_bruns/nosql-dynamodb-service?style=flat-square&logo=npm)](https://www.npmjs.com/package/@denis_bruns/nosql-dynamodb-service)\n  [![GitHub](https://img.shields.io/badge/GitHub--181717.svg?style=flat-square&logo=github)](https://github.com/h3llf1r33/nosql-dynamodb-service)  \n  *A DynamoDB-specific implementation leveraging expression builders and typed queries.*\n\n---\n\n## Contributing\n\nContributions are always welcome! If you have an idea, bug report, or improvement, please open an issue or submit a Pull Request on [GitHub](https://github.com/h3llf1r33/base-database-service).\n\n---\n\n## License\n\nThis project is licensed under the [MIT License](LICENSE).\n\n---\n\n<p align=\"center\">\n  Built with ❤️ by <a href=\"https://github.com/h3llf1r33\">h3llf1r33</a>\n</p>","readmeFilename":"README.md"}