@nest-extended/mongoose 0.0.2-beta-13 → 0.0.2-beta-15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,17 +1,62 @@
1
1
  # @nest-extended/mongoose
2
2
 
3
- This package provides powerful Mongoose integrations for the **NestExtended** ecosystem, offering a robust service layer with built-in pagination, filtering, and soft delete capabilities.
3
+ This package provides powerful Mongoose integrations for the **NestExtended** ecosystem, offering a robust service layer with built-in pagination, filtering, soft delete capabilities, exception filters, and query utilities.
4
4
 
5
5
  ## Key Features
6
6
 
7
- - **NestService**: A generic service class (`NestService<DTO, Document>`) that provides:
8
- - **CRUD Operations**: `_find`, `_get`, `_create`, `_patch`, `_remove`.
9
- - **Advanced Querying**: Support for `$regex`, `$or`, and standard MongoDB operators.
10
- - **Pagination**: Built-in pagination logic using `skip` and `limit`.
11
- - **Soft Delete**: Configurable soft delete support (requires `@nest-extended/core` integration).
12
- - **Utilities**:
13
- - `ensureObjectId`: Helper to validate and convert strings to MongoDB ObjectIds.
14
- - `nestify`: Query helper for applying filters, sorting, and pagination.
7
+ ### NestService
8
+
9
+ A generic service class (`NestService<M, D>`) that provides:
10
+
11
+ - **CRUD Operations**: `_find`, `_get`, `_create`, `_patch`, `_remove`
12
+ - **Advanced Querying**: Support for `$regex`, `$or`, `$in`, `$nin`, `$lt`, `$lte`, `$gt`, `$gte`, `$ne` and standard MongoDB operators
13
+ - **Pagination**: Built-in pagination logic using `$skip` and `$limit` with configurable defaults (limit: 20, skip: 0)
14
+ - **Soft Delete**: Configurable soft delete support — marks documents as deleted instead of removing, with user tracking via CLS context
15
+ - **Bulk Operations**: Optional multi-document create via `insertMany` (enable with `multi: true`)
16
+ - **Count**: `getCount(filter)` for counting documents matching a filter
17
+ - **Conditional Pagination**: `_find` accepts `{ pagination: false }` to return raw arrays instead of paginated responses
18
+
19
+ **Constructor Options** (`NestServiceOptions`):
20
+ - `multi` (default: `false`) — allow bulk create with arrays
21
+ - `softDelete` (default: `true`) — enable soft delete behavior
22
+ - `pagination` (default: `true`) — enable paginated responses
23
+
24
+ ### Query Utilities
25
+
26
+ - **`nestify(query, filters, options)`**: Applies `$select`, `$populate`, `$sort`, `$limit`, `$skip` to a Mongoose query
27
+ - **`rawQuery(query)`**: Converts query params to MongoDB query with auto-ObjectId conversion, `$regex` support, and recursive `$or` handling
28
+ - **`assignFilters`**: Extracts known filter keys (`$sort`, `$limit`, `$skip`, `$select`, `$populate`) from query params
29
+ - **`filterQuery`**: Full query parsing — separates filters from query and validates operators
30
+ - **`cleanQuery`**: Validates query operators and throws `BadRequestException` for invalid `$` params
31
+
32
+ ### Helper Utilities
33
+
34
+ - **`EnsureObjectId(id)`**: Validates and converts string to `Types.ObjectId`, throws `Error` on invalid ID
35
+ - **`ensureObjectId`**: Alias export for the same utility
36
+
37
+ ### Exception Filters
38
+
39
+ - **`GlobalExceptionFilter`**: Catch-all exception filter that handles:
40
+ - `HttpException` — returns standard NestJS error response
41
+ - `MongooseError` — wraps as `BadRequestException`
42
+ - `ZodError` — wraps as `BadRequestException`
43
+ - `MongoServerError` — parses specific error codes with human-readable messages
44
+ - Unhandled errors — returns 500 with stack trace (stack hidden in production)
45
+
46
+ - **`handleMongoError(exception)`**: Translates MongoDB error codes to user-friendly messages:
47
+ - `11000` — Duplicate key violation
48
+ - `121` — Document validation failure
49
+ - `66` — Immutable field modification
50
+ - `50` — Operation timeout
51
+ - `16755` — Invalid aggregation pipeline
52
+ - `40324` — Invalid index options
53
+ - `8000` — Transaction error
54
+ - `31` — Memory limit exceeded
55
+
56
+ ### Types
57
+
58
+ - **`NestifyFilters`**: `$select`, `$populate`, `$sort`, `$limit`, `$skip`
59
+ - **`NestifyOptions`**: `defaultLimit`, `defaultSkip`, `defaultPagination`
15
60
 
16
61
  ## Usage
17
62
 
@@ -33,6 +78,12 @@ export class CatsService extends NestService<Cat, CatDocument> {
33
78
  }
34
79
  ```
35
80
 
81
+ With custom options:
82
+
83
+ ```typescript
84
+ super(catModel, { multi: true, softDelete: false, pagination: false });
85
+ ```
86
+
36
87
  ### Querying
37
88
 
38
89
  You can use the `_find` method with query objects:
@@ -45,3 +96,46 @@ const results = await this.catsService._find({
45
96
  $limit: 10
46
97
  });
47
98
  ```
99
+
100
+ Disable pagination for a single query:
101
+
102
+ ```typescript
103
+ const allCats = await this.catsService._find({}, { pagination: false });
104
+ ```
105
+
106
+ ### GlobalExceptionFilter
107
+
108
+ Register globally in `app.module.ts`:
109
+
110
+ ```typescript
111
+ import { GlobalExceptionFilter } from '@nest-extended/mongoose';
112
+ import { APP_FILTER } from '@nestjs/core';
113
+
114
+ providers: [
115
+ { provide: APP_FILTER, useClass: GlobalExceptionFilter },
116
+ ]
117
+ ```
118
+
119
+ ### EnsureObjectId
120
+
121
+ ```typescript
122
+ import { EnsureObjectId } from '@nest-extended/mongoose';
123
+
124
+ const objectId = EnsureObjectId('507f1f77bcf86cd799439011');
125
+ ```
126
+
127
+ ## Exported API
128
+
129
+ | Export | Type | Description |
130
+ |---|---|---|
131
+ | `NestService` | Class | Generic CRUD service with pagination & soft delete |
132
+ | `nestify` | Function | Apply filters/pagination to Mongoose query |
133
+ | `rawQuery` | Function | Convert query params to MongoDB filter |
134
+ | `assignFilters` | Function | Extract filter params from query |
135
+ | `filterQuery` | Function | Full query parsing with operator validation |
136
+ | `cleanQuery` | Function | Validate query operators |
137
+ | `EnsureObjectId` | Function | Validate & convert to ObjectId |
138
+ | `GlobalExceptionFilter` | Filter | Catch-all exception handler |
139
+ | `handleMongoError` | Function | MongoDB error code translator |
140
+ | `NestifyFilters` | Interface | Filter type definition |
141
+ | `NestifyOptions` | Interface | Options type definition |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nest-extended/mongoose",
3
- "version": "0.0.2-beta-13",
3
+ "version": "0.0.2-beta-15",
4
4
  "private": false,
5
5
  "type": "commonjs",
6
6
  "contributors": [
@@ -19,7 +19,7 @@
19
19
  "types": "./src/index.d.ts",
20
20
  "dependencies": {
21
21
  "tslib": "^2.3.0",
22
- "@nest-extended/core": "0.0.2-beta-13",
22
+ "@nest-extended/core": "0.0.2-beta-15",
23
23
  "zod": "^3.22.4"
24
24
  }
25
25
  }
@@ -125,7 +125,7 @@ class NestService {
125
125
  }
126
126
  _getOrFind(isSingleUpdate, searchQuery, data) {
127
127
  if (isSingleUpdate) {
128
- return this.model.findOneAndUpdate(searchQuery, data, { new: true });
128
+ return this.model.findOneAndUpdate(searchQuery, data, { returnDocument: 'after' });
129
129
  }
130
130
  return this.model.updateMany(searchQuery, data);
131
131
  }
@@ -1 +1 @@
1
- {"version":3,"file":"nest.service.js","sourceRoot":"","sources":["../../../../../packages/mongoose/src/lib/nest.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"nest.service.js","sourceRoot":"","sources":["../../../../../packages/mongoose/src/lib/nest.service.ts"],"names":[],"mappings":"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"}