{"_id":"@arunvaradharajalu/common.mongodb-paginator","name":"@arunvaradharajalu/common.mongodb-paginator","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@arunvaradharajalu/common.mongodb-paginator","version":"1.0.0","description":"This package contains mongodb pagination for retrieving large data in parts.","main":"./build/index.js","types":"./build/index.d.ts","scripts":{"clean":"rimraf build","build":"npm run clean && tsc --project tsconfig.build.json","test":"jest --watchAll --verbose --no-cache --detectOpenHandles --env=node --coverage"},"jest":{"preset":"ts-jest","testEnvironment":"node","globalSetup":"./test/global-setup.ts","globalTeardown":"./test/global-teardown.ts","setupFilesAfterEnv":["./test/setup.ts"],"roots":["<rootDir>/test"],"clearMocks":true,"reporters":["default",["./node_modules/jest-html-reporter",{"pageTitle":"MongoDB Paginator Test Report"}]]},"repository":{"type":"git","url":"git+https://github.com/arunv11u/common.mongodb-paginator.git"},"keywords":["mongodb-paginator"],"author":{"name":"Arun Varadharajalu"},"license":"ISC","bugs":{"url":"https://github.com/arunv11u/common.mongodb-paginator/issues"},"homepage":"https://github.com/arunv11u/common.mongodb-paginator#readme","devDependencies":{"@faker-js/faker":"^7.6.0","@types/jest":"^29.5.12","jest-html-reporter":"^3.10.2","mongodb-memory-server":"^8.12.2","rimraf":"^5.0.7","ts-jest":"^29.1.4"},"dependencies":{"@arunvaradharajalu/common.errors":"^1.1.0","@arunvaradharajalu/common.mongodb-api":"^1.1.1","mongodb":"^6.7.0"},"_id":"@arunvaradharajalu/common.mongodb-paginator@1.0.0","_nodeVersion":"20.11.0","_npmVersion":"10.2.4","dist":{"integrity":"sha512-5NBxtZt20mZdP40wQL8P9zDtOm6FN990igqlN6IQynRFv2EYBaNCkQBw6jq4/OFR5EBqawblpDzMr48b72AyBA==","shasum":"82dc5da155cbde1eaaaf982988bee982a923ed46","tarball":"https://registry.npmjs.org/@arunvaradharajalu/common.mongodb-paginator/-/common.mongodb-paginator-1.0.0.tgz","fileCount":19,"unpackedSize":35514,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFM09syhPY6HXU3QhOOQlI1kiOeUvjQ8ey957yK0d5/AAiB3cMFOZTp8ASQGCMrI8Y0TWHLewM5NyihdrO6a3PmILw=="}]},"_npmUser":{"name":"arunvaradharajalu","email":"arunvaradharajalu@gmail.com"},"directories":{},"maintainers":[{"name":"arunvaradharajalu","email":"arunvaradharajalu@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/common.mongodb-paginator_1.0.0_1720394053392_0.22318286195816506"},"_hasShrinkwrap":false}},"time":{"created":"2024-07-07T23:14:13.302Z","1.0.0":"2024-07-07T23:14:13.577Z","modified":"2024-07-07T23:14:13.831Z"},"maintainers":[{"name":"arunvaradharajalu","email":"arunvaradharajalu@gmail.com"}],"description":"This package contains mongodb pagination for retrieving large data in parts.","homepage":"https://github.com/arunv11u/common.mongodb-paginator#readme","keywords":["mongodb-paginator"],"repository":{"type":"git","url":"git+https://github.com/arunv11u/common.mongodb-paginator.git"},"author":{"name":"Arun Varadharajalu"},"bugs":{"url":"https://github.com/arunv11u/common.mongodb-paginator/issues"},"license":"ISC","readme":"# @arunvaradharajalu/common.mongodb-paginator\n\n[![npm version](https://badge.fury.io/js/%40arunvaradharajalu%2Fcommon.mongodb-paginator.svg)](https://badge.fury.io/js/%40arunvaradharajalu%2Fcommon.mongodb-paginator)\n[![GitHub issues](https://img.shields.io/github/issues/arunv11u/common.mongodb-paginator)](https://github.com/arunv11u/common.errors/mongodb-paginator)\n[![GitHub license](https://img.shields.io/github/license/arunv11u/common.mongodb-paginator)](https://github.com/arunv11u/common.mongodb-paginator/blob/master/LICENSE)\n\nThis package provides MongoDB pagination utilities for efficiently retrieving large datasets in parts. \n\n## Installation\n\nTo install the package, use npm:\n\n```bash\nnpm install @arunvaradharajalu/common.mongodb-paginator\n```\n\n## Usage\n\n### Basic Usage\n\nHere is an example of how to use the MongoDB paginator in your project:\n\n```typescript\nimport { MongoDBPaginatorImpl, PaginationOptions, PaginationWithIdOptions } from '@arunvaradharajalu/common.mongodb-paginator';\nimport { MongoDBRepository } from '@arunvaradharajalu/common.mongodb-api';\n\n// Initialize MongoDB repository\nconst mongodbRepository = new MongoDBRepository(/* MongoDB connection details */);\n\n// Initialize paginator\nconst paginator = new MongoDBPaginatorImpl(mongodbRepository);\n\n// Define pagination options\nconst options = new PaginationOptions();\noptions.pageIndex = 0; // Page number\noptions.pageSize = 10; // Number of documents per page\noptions.sortField = 'name'; // Field to sort by\noptions.sortType = SortTypes.ASC; // Sort order (ascending or descending)\n\n// Define a filter\nconst filter = { /* your filter criteria */ };\n\n// Retrieve paginated data\npaginator.find('yourCollectionName', filter, options)\n  .then(result => {\n    console.log('Documents:', result.docs);\n    console.log('Total Count:', result.count);\n  })\n  .catch(error => {\n    console.error('Error fetching paginated data:', error);\n  });\n```\n\n### Advanced Usage with Aggregation\n\nThe paginator also supports MongoDB aggregation with pagination:\n\n```typescript\nconst pipeline = [\n  { $match: { /* your match criteria */ } },\n  { $group: { _id: '$field', total: { $sum: '$value' } } }\n];\n\npaginator.aggregate('yourCollectionName', pipeline, options)\n  .then(result => {\n    console.log('Documents:', result.docs);\n    console.log('Total Count:', result.count);\n  })\n  .catch(error => {\n    console.error('Error fetching aggregated paginated data:', error);\n  });\n```\n\n### Pagination with Index\n\nYou can also paginate using an index field other than `_id`:\n\n```typescript\nconst paginationWithIdOptions = new PaginationWithIdOptions();\npaginationWithIdOptions.pageSize = 5;\npaginationWithIdOptions.sortField = 'name';\npaginationWithIdOptions.sortType = SortTypes.ASC;\n\npaginator.findWithIndex('yourCollectionName', filter, paginationWithIdOptions)\n  .then(result => {\n    console.log('Documents:', result.docs);\n    console.log('Total Count:', result.count);\n  })\n  .catch(error => {\n    console.error('Error fetching paginated data with index:', error);\n  });\n```\n\n## API Reference\n\n### Classes\n\n`MongoDBPaginatorImpl`:\n- Constructor: `new MongoDBPaginatorImpl(mongodbRepository: MongoDBRepository)`\n- Methods: \n\t- `find(collectionName: string, filter: Filter<Document>, options: PaginationOptions): Promise<{ docs: Document[], count: number }>`\n\t- `aggregate(collectionName: string, pipeline: Document[], options: PaginationOptions): Promise<{ docs: any[], count: number }>`\n\t- `findWithIndex(collectionName: string, filter: Filter<Document>[], options: PaginationWithIdOptions): Promise<{ docs: Document[], count: number }>`\n\t- `aggregateWithIndex(collectionName: string, pipeline: Document[], options: PaginationWithIdOptions): Promise<{ docs: any[], count: number }>`\n\n`PaginationOptions`:\n- Properties:\n\t- `pageIndex: number` (default: 0)\n\t- `pageSize: number` (default: 10)\n\t- `sortType: SortTypes` (default: SortTypes.DESC)\n\t- `sortField: string` (default: '_id')\n\t- `collationOptions: CollationOptions | null` (default: null)\n\n`PaginationWithIdOptions`:\n- Properties:\n\t- `type: PaginatorTypes` (default: PaginatorTypes.FORWARD)\n\t- `pageSize: number` (default: 5)\n\t- `sortType: SortTypes` (default: SortTypes.ASC)\n\t- `sortField: string` (default: '_id')\n\t- `sortFieldValue: string | null` (default: null)\n\t- `id: string | null` (default: null)\n\t- `collationOptions: CollationOptions | null` (default: null)\n\n\n## Running Tests\n\nTo run the tests, use:\n\n```bash\nnpm test\n```\n\nThe test results will be generated in an HTML report with the title \"MongoDB Paginator Test Report\".\n\n## Contributing\n\nContributions are welcome! Please feel free to submit a pull request or open an issue for bug fixes, improvements, or new features.\n\n## Author\n\nArun Varadharajalu\n\n## License\n\nThis project is licensed under the ISC License.","readmeFilename":"README.md"}