@bedrockio/model 0.19.3 → 0.20.1
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/.claude/settings.local.json +22 -1
- package/CHANGELOG.md +8 -0
- package/README.md +29 -0
- package/dist/cjs/schema.js +9 -3
- package/package.json +3 -3
- package/src/schema.js +9 -3
- package/tsconfig.validate.json +8 -0
- package/types/generated/access.d.ts.map +1 -0
- package/types/{assign.d.ts.map → generated/assign.d.ts.map} +1 -1
- package/types/{cache.d.ts.map → generated/cache.d.ts.map} +1 -1
- package/types/{clone.d.ts.map → generated/clone.d.ts.map} +1 -1
- package/types/generated/const.d.ts.map +1 -0
- package/types/generated/delete-hooks.d.ts.map +1 -0
- package/types/{disallowed.d.ts.map → generated/disallowed.d.ts.map} +1 -1
- package/types/generated/env.d.ts.map +1 -0
- package/types/generated/errors.d.ts.map +1 -0
- package/types/{export.d.ts.map → generated/export.d.ts.map} +1 -1
- package/types/{hydrate.d.ts.map → generated/hydrate.d.ts.map} +1 -1
- package/types/generated/include.d.ts.map +1 -0
- package/types/generated/index.d.ts +7 -0
- package/types/{index.d.ts.map → generated/index.d.ts.map} +1 -1
- package/types/generated/load.d.ts.map +1 -0
- package/types/{query.d.ts.map → generated/query.d.ts.map} +1 -1
- package/types/{reload.d.ts.map → generated/reload.d.ts.map} +1 -1
- package/types/generated/schema.d.ts +12 -0
- package/types/generated/schema.d.ts.map +1 -0
- package/types/{search.d.ts → generated/search.d.ts} +7 -2
- package/types/generated/search.d.ts.map +1 -0
- package/types/generated/serialization.d.ts.map +1 -0
- package/types/generated/slug.d.ts.map +1 -0
- package/types/generated/soft-delete.d.ts.map +1 -0
- package/types/generated/testing.d.ts.map +1 -0
- package/types/{upsert.d.ts.map → generated/upsert.d.ts.map} +1 -1
- package/types/generated/utils.d.ts.map +1 -0
- package/types/{validation-schemas.d.ts → generated/validation-schemas.d.ts} +28 -8
- package/types/generated/validation-schemas.d.ts.map +1 -0
- package/types/generated/validation.d.ts.map +1 -0
- package/types/generated/warn.d.ts.map +1 -0
- package/types/index.d.ts +22 -7
- package/types/modules/assign.d.ts +22 -0
- package/types/modules/cache.d.ts +31 -0
- package/types/modules/clone.d.ts +18 -0
- package/types/modules/delete-hooks.d.ts +33 -0
- package/types/modules/export.d.ts +17 -0
- package/types/modules/hydrate.d.ts +37 -0
- package/types/modules/include.d.ts +92 -0
- package/types/modules/reload.d.ts +17 -0
- package/types/modules/search.d.ts +137 -0
- package/types/modules/slug.d.ts +80 -0
- package/types/modules/soft-delete.d.ts +458 -0
- package/types/modules/upsert.d.ts +67 -0
- package/types/modules/validation.d.ts +145 -0
- package/types/access.d.ts.map +0 -1
- package/types/const.d.ts.map +0 -1
- package/types/delete-hooks.d.ts.map +0 -1
- package/types/env.d.ts.map +0 -1
- package/types/errors.d.ts.map +0 -1
- package/types/include.d.ts.map +0 -1
- package/types/load.d.ts.map +0 -1
- package/types/references.d.ts +0 -2
- package/types/references.d.ts.map +0 -1
- package/types/schema.d.ts +0 -76
- package/types/schema.d.ts.map +0 -1
- package/types/search.d.ts.map +0 -1
- package/types/serialization.d.ts.map +0 -1
- package/types/slug.d.ts.map +0 -1
- package/types/soft-delete.d.ts.map +0 -1
- package/types/testing.d.ts.map +0 -1
- package/types/utils.d.ts.map +0 -1
- package/types/validation-schemas.d.ts.map +0 -1
- package/types/validation.d.ts.map +0 -1
- package/types/warn.d.ts.map +0 -1
- /package/types/{access.d.ts → generated/access.d.ts} +0 -0
- /package/types/{assign.d.ts → generated/assign.d.ts} +0 -0
- /package/types/{cache.d.ts → generated/cache.d.ts} +0 -0
- /package/types/{clone.d.ts → generated/clone.d.ts} +0 -0
- /package/types/{const.d.ts → generated/const.d.ts} +0 -0
- /package/types/{delete-hooks.d.ts → generated/delete-hooks.d.ts} +0 -0
- /package/types/{disallowed.d.ts → generated/disallowed.d.ts} +0 -0
- /package/types/{env.d.ts → generated/env.d.ts} +0 -0
- /package/types/{errors.d.ts → generated/errors.d.ts} +0 -0
- /package/types/{export.d.ts → generated/export.d.ts} +0 -0
- /package/types/{hydrate.d.ts → generated/hydrate.d.ts} +0 -0
- /package/types/{include.d.ts → generated/include.d.ts} +0 -0
- /package/types/{load.d.ts → generated/load.d.ts} +0 -0
- /package/types/{query.d.ts → generated/query.d.ts} +0 -0
- /package/types/{reload.d.ts → generated/reload.d.ts} +0 -0
- /package/types/{serialization.d.ts → generated/serialization.d.ts} +0 -0
- /package/types/{slug.d.ts → generated/slug.d.ts} +0 -0
- /package/types/{soft-delete.d.ts → generated/soft-delete.d.ts} +0 -0
- /package/types/{testing.d.ts → generated/testing.d.ts} +0 -0
- /package/types/{upsert.d.ts → generated/upsert.d.ts} +0 -0
- /package/types/{utils.d.ts → generated/utils.d.ts} +0 -0
- /package/types/{validation.d.ts → generated/validation.d.ts} +0 -0
- /package/types/{warn.d.ts → generated/warn.d.ts} +0 -0
|
@@ -0,0 +1,458 @@
|
|
|
1
|
+
import type { HydratedDocument } from 'mongoose';
|
|
2
|
+
|
|
3
|
+
declare module 'mongoose' {
|
|
4
|
+
interface Model<
|
|
5
|
+
TRawDocType,
|
|
6
|
+
TQueryHelpers = {},
|
|
7
|
+
TInstanceMethods = {},
|
|
8
|
+
TVirtuals = {},
|
|
9
|
+
THydratedDocumentType = HydratedDocument<
|
|
10
|
+
TRawDocType,
|
|
11
|
+
TVirtuals & TInstanceMethods,
|
|
12
|
+
TQueryHelpers,
|
|
13
|
+
TVirtuals
|
|
14
|
+
>,
|
|
15
|
+
TSchema = any,
|
|
16
|
+
> {
|
|
17
|
+
/**
|
|
18
|
+
* Soft deletes one document by setting deleted=true and deletedAt timestamp.
|
|
19
|
+
*
|
|
20
|
+
* @param {Object} filter - Query filter
|
|
21
|
+
* @param {Object} [options] - MongoDB options
|
|
22
|
+
*
|
|
23
|
+
* @returns {Promise<Object>}
|
|
24
|
+
*
|
|
25
|
+
* | | | |
|
|
26
|
+
* |---|---|---|
|
|
27
|
+
* | `acknowledged` | `boolean` | Whether the operation was acknowledged |
|
|
28
|
+
* | `deletedCount` | `number` | Number of documents deleted |
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* ```js
|
|
32
|
+
* const result = await User.deleteOne({
|
|
33
|
+
* email: 'user@example.com'
|
|
34
|
+
* });
|
|
35
|
+
* ```
|
|
36
|
+
*
|
|
37
|
+
* @see {@link https://github.com/bedrockio/model#soft-delete}
|
|
38
|
+
*/
|
|
39
|
+
deleteOne(
|
|
40
|
+
filter: any,
|
|
41
|
+
options?: any,
|
|
42
|
+
): Promise<{ acknowledged: boolean; deletedCount: number }>;
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Soft deletes multiple documents by setting deleted=true and deletedAt timestamp.
|
|
46
|
+
*
|
|
47
|
+
* @param {Object} filter - Query filter
|
|
48
|
+
* @param {Object} [options] - MongoDB options
|
|
49
|
+
*
|
|
50
|
+
* @returns {Promise<Object>}
|
|
51
|
+
*
|
|
52
|
+
* | | | |
|
|
53
|
+
* |---|---|---|
|
|
54
|
+
* | `acknowledged` | `boolean` | Whether the operation was acknowledged |
|
|
55
|
+
* | `deletedCount` | `number` | Number of documents deleted |
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* ```js
|
|
59
|
+
* const result = await User.deleteMany({
|
|
60
|
+
* inactive: true
|
|
61
|
+
* });
|
|
62
|
+
* ```
|
|
63
|
+
*
|
|
64
|
+
* @see {@link https://github.com/bedrockio/model#soft-delete}
|
|
65
|
+
*/
|
|
66
|
+
deleteMany(
|
|
67
|
+
filter: any,
|
|
68
|
+
options?: any,
|
|
69
|
+
): Promise<{ acknowledged: boolean; deletedCount: number }>;
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Finds and soft deletes one document, returning the deleted document.
|
|
73
|
+
*
|
|
74
|
+
* @param {Object} filter - Query filter
|
|
75
|
+
* @param {Object} [options] - MongoDB options
|
|
76
|
+
*
|
|
77
|
+
* @returns {Promise<Document|null>} - The deleted document or null
|
|
78
|
+
*
|
|
79
|
+
* @example
|
|
80
|
+
* ```js
|
|
81
|
+
* const user = await User.findOneAndDelete({
|
|
82
|
+
* email: 'user@example.com'
|
|
83
|
+
* });
|
|
84
|
+
* ```
|
|
85
|
+
*
|
|
86
|
+
* @see {@link https://github.com/bedrockio/model#soft-delete}
|
|
87
|
+
*/
|
|
88
|
+
findOneAndDelete(filter: any, options?: any): Promise<any>;
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Restores one soft-deleted document by setting deleted=false and unsetting deletedAt.
|
|
92
|
+
*
|
|
93
|
+
* @param {Object} filter - Query filter
|
|
94
|
+
* @param {Object} [options] - MongoDB options
|
|
95
|
+
*
|
|
96
|
+
* @returns {Promise<Object>}
|
|
97
|
+
*
|
|
98
|
+
* | | | |
|
|
99
|
+
* |---|---|---|
|
|
100
|
+
* | `acknowledged` | `boolean` | Whether the operation was acknowledged |
|
|
101
|
+
* | `restoredCount` | `number` | Number of documents restored |
|
|
102
|
+
*
|
|
103
|
+
* @example
|
|
104
|
+
* ```js
|
|
105
|
+
* const result = await User.restoreOne({
|
|
106
|
+
* email: 'user@example.com'
|
|
107
|
+
* });
|
|
108
|
+
* ```
|
|
109
|
+
*
|
|
110
|
+
* @see {@link https://github.com/bedrockio/model#soft-delete}
|
|
111
|
+
*/
|
|
112
|
+
restoreOne(
|
|
113
|
+
filter: any,
|
|
114
|
+
options?: any,
|
|
115
|
+
): Promise<{ acknowledged: boolean; restoredCount: number }>;
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* Restores multiple soft-deleted documents by setting deleted=false and unsetting deletedAt.
|
|
119
|
+
*
|
|
120
|
+
* @param {Object} filter - Query filter
|
|
121
|
+
* @param {Object} [options] - MongoDB options
|
|
122
|
+
*
|
|
123
|
+
* @returns {Promise<Object>}
|
|
124
|
+
*
|
|
125
|
+
* | | | |
|
|
126
|
+
* |---|---|---|
|
|
127
|
+
* | `acknowledged` | `boolean` | Whether the operation was acknowledged |
|
|
128
|
+
* | `restoredCount` | `number` | Number of documents restored |
|
|
129
|
+
*
|
|
130
|
+
* @example
|
|
131
|
+
* ```js
|
|
132
|
+
* const result = await User.restoreMany({
|
|
133
|
+
* deletedAt: {
|
|
134
|
+
* $gte: oneWeekAgo
|
|
135
|
+
* }
|
|
136
|
+
* });
|
|
137
|
+
* ```
|
|
138
|
+
*
|
|
139
|
+
* @see {@link https://github.com/bedrockio/model#soft-delete}
|
|
140
|
+
*/
|
|
141
|
+
restoreMany(
|
|
142
|
+
filter: any,
|
|
143
|
+
options?: any,
|
|
144
|
+
): Promise<{ acknowledged: boolean; restoredCount: number }>;
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* Permanently deletes one document from the database (hard delete).
|
|
148
|
+
*
|
|
149
|
+
* @param {Object} conditions - Query conditions
|
|
150
|
+
* @param {Object} [options] - MongoDB options
|
|
151
|
+
*
|
|
152
|
+
* @returns {Promise<Object>}
|
|
153
|
+
*
|
|
154
|
+
* | | | |
|
|
155
|
+
* |---|---|---|
|
|
156
|
+
* | `acknowledged` | `boolean` | Whether the operation was acknowledged |
|
|
157
|
+
* | `destroyedCount` | `number` | Number of documents destroyed |
|
|
158
|
+
*
|
|
159
|
+
* @example
|
|
160
|
+
* ```js
|
|
161
|
+
* const result = await User.destroyOne({
|
|
162
|
+
* email: 'user@example.com'
|
|
163
|
+
* });
|
|
164
|
+
* ```
|
|
165
|
+
*
|
|
166
|
+
* @see {@link https://github.com/bedrockio/model#soft-delete}
|
|
167
|
+
*/
|
|
168
|
+
destroyOne(
|
|
169
|
+
conditions: any,
|
|
170
|
+
options?: any,
|
|
171
|
+
): Promise<{ acknowledged: boolean; destroyedCount: number }>;
|
|
172
|
+
|
|
173
|
+
/**
|
|
174
|
+
* Permanently deletes multiple documents from the database (hard delete).
|
|
175
|
+
*
|
|
176
|
+
* @param {Object} conditions - Query conditions
|
|
177
|
+
* @param {Object} [options] - MongoDB options
|
|
178
|
+
*
|
|
179
|
+
* @returns {Promise<Object>}
|
|
180
|
+
*
|
|
181
|
+
* | | | |
|
|
182
|
+
* |---|---|---|
|
|
183
|
+
* | `acknowledged` | `boolean` | Whether the operation was acknowledged |
|
|
184
|
+
* | `destroyedCount` | `number` | Number of documents destroyed |
|
|
185
|
+
*
|
|
186
|
+
* @example
|
|
187
|
+
* ```js
|
|
188
|
+
* const result = await User.destroyMany({
|
|
189
|
+
* deletedAt: {
|
|
190
|
+
* $lt: sixMonthsAgo
|
|
191
|
+
* }
|
|
192
|
+
* });
|
|
193
|
+
* ```
|
|
194
|
+
*
|
|
195
|
+
* @see {@link https://github.com/bedrockio/model#soft-delete}
|
|
196
|
+
*/
|
|
197
|
+
destroyMany(
|
|
198
|
+
conditions: any,
|
|
199
|
+
options?: any,
|
|
200
|
+
): Promise<{ acknowledged: boolean; destroyedCount: number }>;
|
|
201
|
+
|
|
202
|
+
/**
|
|
203
|
+
* Finds documents that have been soft-deleted (deleted=true).
|
|
204
|
+
*
|
|
205
|
+
* @param {Object} filter - Query filter
|
|
206
|
+
* @param {Object} [projection] - Fields to include/exclude
|
|
207
|
+
* @param {Object} [options] - MongoDB options
|
|
208
|
+
*
|
|
209
|
+
* @returns {Promise<Document[]>} - Array of deleted documents
|
|
210
|
+
*
|
|
211
|
+
* @example
|
|
212
|
+
* ```js
|
|
213
|
+
* const deletedUsers = await User.findDeleted({
|
|
214
|
+
* deletedAt: {
|
|
215
|
+
* $gte: lastMonth
|
|
216
|
+
* }
|
|
217
|
+
* });
|
|
218
|
+
* ```
|
|
219
|
+
*
|
|
220
|
+
* @see {@link https://github.com/bedrockio/model#soft-delete}
|
|
221
|
+
*/
|
|
222
|
+
findDeleted(filter: any, projection?: any, options?: any): Promise<any[]>;
|
|
223
|
+
|
|
224
|
+
/**
|
|
225
|
+
* Finds one document that has been soft-deleted (deleted=true).
|
|
226
|
+
*
|
|
227
|
+
* @param {Object} filter - Query filter
|
|
228
|
+
* @param {Object} [projection] - Fields to include/exclude
|
|
229
|
+
* @param {Object} [options] - MongoDB options
|
|
230
|
+
*
|
|
231
|
+
* @returns {Promise<Document|null>} - The deleted document or null
|
|
232
|
+
*
|
|
233
|
+
* @example
|
|
234
|
+
* ```js
|
|
235
|
+
* const user = await User.findOneDeleted({
|
|
236
|
+
* email: 'user@example.com'
|
|
237
|
+
* });
|
|
238
|
+
* ```
|
|
239
|
+
*
|
|
240
|
+
* @see {@link https://github.com/bedrockio/model#soft-delete}
|
|
241
|
+
*/
|
|
242
|
+
findOneDeleted(filter: any, projection?: any, options?: any): Promise<any>;
|
|
243
|
+
|
|
244
|
+
/**
|
|
245
|
+
* Finds a soft-deleted document by its ID.
|
|
246
|
+
*
|
|
247
|
+
* @param {string} id - Document ID
|
|
248
|
+
* @param {Object} [projection] - Fields to include/exclude
|
|
249
|
+
* @param {Object} [options] - MongoDB options
|
|
250
|
+
*
|
|
251
|
+
* @returns {Promise<Document|null>} - The deleted document or null
|
|
252
|
+
*
|
|
253
|
+
* @example
|
|
254
|
+
* ```js
|
|
255
|
+
* const user = await User.findByIdDeleted('507f1f77bcf86cd799439011');
|
|
256
|
+
* ```
|
|
257
|
+
*
|
|
258
|
+
* @see {@link https://github.com/bedrockio/model#soft-delete}
|
|
259
|
+
*/
|
|
260
|
+
findByIdDeleted(id: any, projection?: any, options?: any): Promise<any>;
|
|
261
|
+
|
|
262
|
+
/**
|
|
263
|
+
* Checks if a soft-deleted document exists matching the filter.
|
|
264
|
+
*
|
|
265
|
+
* @param {Object} filter - Query filter
|
|
266
|
+
* @param {Object} [options] - MongoDB options
|
|
267
|
+
*
|
|
268
|
+
* @returns {Promise<Object|null>} - Object with _id if exists, null otherwise
|
|
269
|
+
*
|
|
270
|
+
* @example
|
|
271
|
+
* ```js
|
|
272
|
+
* const exists = await User.existsDeleted({
|
|
273
|
+
* email: 'user@example.com'
|
|
274
|
+
* });
|
|
275
|
+
* ```
|
|
276
|
+
*
|
|
277
|
+
* @see {@link https://github.com/bedrockio/model#soft-delete}
|
|
278
|
+
*/
|
|
279
|
+
existsDeleted(filter: any, options?: any): Promise<any>;
|
|
280
|
+
|
|
281
|
+
/**
|
|
282
|
+
* Counts soft-deleted documents matching the filter.
|
|
283
|
+
*
|
|
284
|
+
* @param {Object} filter - Query filter
|
|
285
|
+
* @param {Object} [options] - MongoDB options
|
|
286
|
+
*
|
|
287
|
+
* @returns {Promise<number>} - Count of deleted documents
|
|
288
|
+
*
|
|
289
|
+
* @example
|
|
290
|
+
* ```js
|
|
291
|
+
* const count = await User.countDocumentsDeleted({
|
|
292
|
+
* deletedAt: {
|
|
293
|
+
* $gte: lastMonth
|
|
294
|
+
* }
|
|
295
|
+
* });
|
|
296
|
+
* ```
|
|
297
|
+
*
|
|
298
|
+
* @see {@link https://github.com/bedrockio/model#soft-delete}
|
|
299
|
+
*/
|
|
300
|
+
countDocumentsDeleted(filter: any, options?: any): Promise<number>;
|
|
301
|
+
|
|
302
|
+
/**
|
|
303
|
+
* Finds documents including both deleted and non-deleted ones.
|
|
304
|
+
*
|
|
305
|
+
* @param {Object} filter - Query filter
|
|
306
|
+
* @param {Object} [projection] - Fields to include/exclude
|
|
307
|
+
* @param {Object} [options] - MongoDB options
|
|
308
|
+
*
|
|
309
|
+
* @returns {Promise<Document[]>} - Array of documents
|
|
310
|
+
*
|
|
311
|
+
* @example
|
|
312
|
+
* ```js
|
|
313
|
+
* const allUsers = await User.findWithDeleted({
|
|
314
|
+
* email: {
|
|
315
|
+
* $regex: '@example.com$'
|
|
316
|
+
* }
|
|
317
|
+
* });
|
|
318
|
+
* ```
|
|
319
|
+
*
|
|
320
|
+
* @see {@link https://github.com/bedrockio/model#soft-delete}
|
|
321
|
+
*/
|
|
322
|
+
findWithDeleted(
|
|
323
|
+
filter: any,
|
|
324
|
+
projection?: any,
|
|
325
|
+
options?: any,
|
|
326
|
+
): Promise<any[]>;
|
|
327
|
+
|
|
328
|
+
/**
|
|
329
|
+
* Finds one document including both deleted and non-deleted ones.
|
|
330
|
+
*
|
|
331
|
+
* @param {Object} filter - Query filter
|
|
332
|
+
* @param {Object} [projection] - Fields to include/exclude
|
|
333
|
+
* @param {Object} [options] - MongoDB options
|
|
334
|
+
*
|
|
335
|
+
* @returns {Promise<Document|null>} - The document or null
|
|
336
|
+
*
|
|
337
|
+
* @example
|
|
338
|
+
* ```js
|
|
339
|
+
* const user = await User.findOneWithDeleted({
|
|
340
|
+
* email: 'user@example.com'
|
|
341
|
+
* });
|
|
342
|
+
* ```
|
|
343
|
+
*
|
|
344
|
+
* @see {@link https://github.com/bedrockio/model#soft-delete}
|
|
345
|
+
*/
|
|
346
|
+
findOneWithDeleted(
|
|
347
|
+
filter: any,
|
|
348
|
+
projection?: any,
|
|
349
|
+
options?: any,
|
|
350
|
+
): Promise<any>;
|
|
351
|
+
|
|
352
|
+
/**
|
|
353
|
+
* Finds a document by ID including both deleted and non-deleted ones.
|
|
354
|
+
*
|
|
355
|
+
* @param {string} id - Document ID
|
|
356
|
+
* @param {Object} [projection] - Fields to include/exclude
|
|
357
|
+
* @param {Object} [options] - MongoDB options
|
|
358
|
+
*
|
|
359
|
+
* @returns {Promise<Document|null>} - The document or null
|
|
360
|
+
*
|
|
361
|
+
* @example
|
|
362
|
+
* ```js
|
|
363
|
+
* const user = await User.findByIdWithDeleted('507f1f77bcf86cd799439011');
|
|
364
|
+
* ```
|
|
365
|
+
*
|
|
366
|
+
* @see {@link https://github.com/bedrockio/model#soft-delete}
|
|
367
|
+
*/
|
|
368
|
+
findByIdWithDeleted(id: any, projection?: any, options?: any): Promise<any>;
|
|
369
|
+
|
|
370
|
+
/**
|
|
371
|
+
* Checks if a document exists (deleted or not) matching the filter.
|
|
372
|
+
*
|
|
373
|
+
* @param {Object} filter - Query filter
|
|
374
|
+
* @param {Object} [options] - MongoDB options
|
|
375
|
+
*
|
|
376
|
+
* @returns {Promise<Object|null>} - Object with _id if exists, null otherwise
|
|
377
|
+
*
|
|
378
|
+
* @example
|
|
379
|
+
* ```js
|
|
380
|
+
* const exists = await User.existsWithDeleted({
|
|
381
|
+
* email: 'user@example.com'
|
|
382
|
+
* });
|
|
383
|
+
* ```
|
|
384
|
+
*
|
|
385
|
+
* @see {@link https://github.com/bedrockio/model#soft-delete}
|
|
386
|
+
*/
|
|
387
|
+
existsWithDeleted(filter: any, options?: any): Promise<any>;
|
|
388
|
+
|
|
389
|
+
/**
|
|
390
|
+
* Counts documents (deleted or not) matching the filter.
|
|
391
|
+
*
|
|
392
|
+
* @param {Object} filter - Query filter
|
|
393
|
+
* @param {Object} [options] - MongoDB options
|
|
394
|
+
*
|
|
395
|
+
* @returns {Promise<number>} - Count of documents
|
|
396
|
+
*
|
|
397
|
+
* @example
|
|
398
|
+
* ```js
|
|
399
|
+
* const count = await User.countDocumentsWithDeleted({
|
|
400
|
+
* email: {
|
|
401
|
+
* $regex: '@example.com$'
|
|
402
|
+
* }
|
|
403
|
+
* });
|
|
404
|
+
* ```
|
|
405
|
+
*
|
|
406
|
+
* @see {@link https://github.com/bedrockio/model#soft-delete}
|
|
407
|
+
*/
|
|
408
|
+
countDocumentsWithDeleted(filter: any, options?: any): Promise<number>;
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
interface Document {
|
|
412
|
+
/**
|
|
413
|
+
* Soft deletes this document by setting deleted=true and deletedAt timestamp, then saves without validation.
|
|
414
|
+
*
|
|
415
|
+
* @returns {Promise<Document>} - The saved document
|
|
416
|
+
*
|
|
417
|
+
* @example
|
|
418
|
+
* ```js
|
|
419
|
+
* await user.delete();
|
|
420
|
+
* ```
|
|
421
|
+
*
|
|
422
|
+
* @see {@link https://github.com/bedrockio/model#soft-delete}
|
|
423
|
+
*/
|
|
424
|
+
delete(): Promise<this>;
|
|
425
|
+
|
|
426
|
+
/**
|
|
427
|
+
* Restores this soft-deleted document by setting deleted=false and unsetting deletedAt, then saves with validation.
|
|
428
|
+
*
|
|
429
|
+
* @returns {Promise<Document>} - The saved document
|
|
430
|
+
*
|
|
431
|
+
* @example
|
|
432
|
+
* ```js
|
|
433
|
+
* await user.restore();
|
|
434
|
+
* ```
|
|
435
|
+
*
|
|
436
|
+
* @see {@link https://github.com/bedrockio/model#soft-delete}
|
|
437
|
+
*/
|
|
438
|
+
restore(): Promise<this>;
|
|
439
|
+
|
|
440
|
+
/**
|
|
441
|
+
* Permanently deletes this document from the database (hard delete).
|
|
442
|
+
*
|
|
443
|
+
* @param {...any} args - Additional arguments passed to destroyOne
|
|
444
|
+
*
|
|
445
|
+
* @returns {Promise<Object>} - Result object with acknowledged and destroyedCount
|
|
446
|
+
*
|
|
447
|
+
* @example
|
|
448
|
+
* ```js
|
|
449
|
+
* await user.destroy();
|
|
450
|
+
* ```
|
|
451
|
+
*
|
|
452
|
+
* @see {@link https://github.com/bedrockio/model#soft-delete}
|
|
453
|
+
*/
|
|
454
|
+
destroy(
|
|
455
|
+
...args: any[]
|
|
456
|
+
): Promise<{ acknowledged: boolean; destroyedCount: number }>;
|
|
457
|
+
}
|
|
458
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import type { HydratedDocument } from 'mongoose';
|
|
2
|
+
|
|
3
|
+
declare module 'mongoose' {
|
|
4
|
+
interface Model<
|
|
5
|
+
TRawDocType,
|
|
6
|
+
TQueryHelpers = {},
|
|
7
|
+
TInstanceMethods = {},
|
|
8
|
+
TVirtuals = {},
|
|
9
|
+
THydratedDocumentType = HydratedDocument<
|
|
10
|
+
TRawDocType,
|
|
11
|
+
TVirtuals & TInstanceMethods,
|
|
12
|
+
TQueryHelpers,
|
|
13
|
+
TVirtuals
|
|
14
|
+
>,
|
|
15
|
+
TSchema = any,
|
|
16
|
+
> {
|
|
17
|
+
/**
|
|
18
|
+
* Updates an existing document or creates a new one if not found. Runs document hooks.
|
|
19
|
+
*
|
|
20
|
+
* @param {Object} query - Query to find existing document
|
|
21
|
+
* @param {Object} [fields] - Fields to update/create (defaults to query if not provided)
|
|
22
|
+
*
|
|
23
|
+
* @returns {Promise<Document>} - The created or updated document
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```js
|
|
27
|
+
* const user = await User.upsert(
|
|
28
|
+
* {
|
|
29
|
+
* email: 'user@example.com'
|
|
30
|
+
* },
|
|
31
|
+
* {
|
|
32
|
+
* email: 'user@example.com',
|
|
33
|
+
* name: 'John Doe'
|
|
34
|
+
* }
|
|
35
|
+
* );
|
|
36
|
+
* ```
|
|
37
|
+
*
|
|
38
|
+
* @see {@link https://github.com/bedrockio/model#upsert}
|
|
39
|
+
*/
|
|
40
|
+
upsert(query: any, fields?: any): Promise<any>;
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Finds an existing document or creates a new one if not found. Does not update existing documents.
|
|
44
|
+
*
|
|
45
|
+
* @param {Object} query - Query to find existing document
|
|
46
|
+
* @param {Object} [fields] - Fields to create if not found (defaults to query if not provided)
|
|
47
|
+
*
|
|
48
|
+
* @returns {Promise<Document>} - The found or created document
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* ```js
|
|
52
|
+
* const user = await User.findOrCreate(
|
|
53
|
+
* {
|
|
54
|
+
* email: 'user@example.com'
|
|
55
|
+
* },
|
|
56
|
+
* {
|
|
57
|
+
* email: 'user@example.com',
|
|
58
|
+
* name: 'John Doe'
|
|
59
|
+
* }
|
|
60
|
+
* );
|
|
61
|
+
* ```
|
|
62
|
+
*
|
|
63
|
+
* @see {@link https://github.com/bedrockio/model#upsert}
|
|
64
|
+
*/
|
|
65
|
+
findOrCreate(query: any, fields?: any): Promise<any>;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import type { HydratedDocument } from 'mongoose';
|
|
2
|
+
|
|
3
|
+
declare module 'mongoose' {
|
|
4
|
+
interface Model<
|
|
5
|
+
TRawDocType,
|
|
6
|
+
TQueryHelpers = {},
|
|
7
|
+
TInstanceMethods = {},
|
|
8
|
+
TVirtuals = {},
|
|
9
|
+
THydratedDocumentType = HydratedDocument<
|
|
10
|
+
TRawDocType,
|
|
11
|
+
TVirtuals & TInstanceMethods,
|
|
12
|
+
TQueryHelpers,
|
|
13
|
+
TVirtuals
|
|
14
|
+
>,
|
|
15
|
+
TSchema = any,
|
|
16
|
+
> {
|
|
17
|
+
/**
|
|
18
|
+
* Returns a validation schema for creating new documents.
|
|
19
|
+
*
|
|
20
|
+
* @param {Object} [options] - Configuration options
|
|
21
|
+
*
|
|
22
|
+
* | | | |
|
|
23
|
+
* |---|---|---|
|
|
24
|
+
* | `stripEmpty` | `boolean` | Strip empty values (default: true) |
|
|
25
|
+
* | `applyUnique` | `boolean` | Apply unique field validation (default: true) |
|
|
26
|
+
* | `stripDeleted` | `boolean` | Strip deleted fields from schema (default: true) |
|
|
27
|
+
* | `allowIncludes` | `boolean` | Allow include parameter (default: false) |
|
|
28
|
+
* | `stripTimestamps` | `boolean` | Strip createdAt/updatedAt fields (default: true) |
|
|
29
|
+
* | `allowDefaultTags` | `boolean` | Tag default values for OpenAPI (default: true) |
|
|
30
|
+
* | `allowExpandedRefs` | `boolean` | Allow expanded object references (default: true) |
|
|
31
|
+
* | `requireWriteAccess` | `boolean` | Require write access validation (default: true) |
|
|
32
|
+
*
|
|
33
|
+
* @returns {Object} - Yada validation schema
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* ```js
|
|
37
|
+
* const schema = User.getCreateValidation();
|
|
38
|
+
* const validated = await schema.validate(data);
|
|
39
|
+
* ```
|
|
40
|
+
*
|
|
41
|
+
* @see {@link https://github.com/bedrockio/model#validation}
|
|
42
|
+
*/
|
|
43
|
+
getCreateValidation(options?: any): any;
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Returns a validation schema for updating existing documents.
|
|
47
|
+
*
|
|
48
|
+
* @param {Object} [options] - Configuration options
|
|
49
|
+
*
|
|
50
|
+
* | | | |
|
|
51
|
+
* |---|---|---|
|
|
52
|
+
* | `allowNull` | `boolean` | Allow null values to unset fields (default: true) |
|
|
53
|
+
* | `applyUnique` | `boolean` | Apply unique field validation (default: true) |
|
|
54
|
+
* | `skipRequired` | `boolean` | Skip required field checks (default: true) |
|
|
55
|
+
* | `stripUnknown` | `boolean` | Strip unknown fields (default: true) |
|
|
56
|
+
* | `stripDeleted` | `boolean` | Strip deleted fields from schema (default: true) |
|
|
57
|
+
* | `allowFlatKeys` | `boolean` | Allow dot notation for updates (default: true) |
|
|
58
|
+
* | `allowIncludes` | `boolean` | Allow include parameter (default: false) |
|
|
59
|
+
* | `stripTimestamps` | `boolean` | Strip createdAt/updatedAt fields (default: true) |
|
|
60
|
+
* | `allowExpandedRefs` | `boolean` | Allow expanded object references (default: true) |
|
|
61
|
+
* | `requireWriteAccess` | `boolean` | Require write access validation (default: true) |
|
|
62
|
+
*
|
|
63
|
+
* @returns {Object} - Yada validation schema
|
|
64
|
+
*
|
|
65
|
+
* @example
|
|
66
|
+
* ```js
|
|
67
|
+
* const schema = User.getUpdateValidation();
|
|
68
|
+
* const validated = await schema.validate(updates);
|
|
69
|
+
* ```
|
|
70
|
+
*
|
|
71
|
+
* @see {@link https://github.com/bedrockio/model#validation}
|
|
72
|
+
*/
|
|
73
|
+
getUpdateValidation(options?: any): any;
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Returns a validation schema for search queries.
|
|
77
|
+
*
|
|
78
|
+
* @param {Object} [options] - Configuration options
|
|
79
|
+
*
|
|
80
|
+
* | | | |
|
|
81
|
+
* |---|---|---|
|
|
82
|
+
* | `allowExport` | `boolean` | Include export validation (filename, format) |
|
|
83
|
+
* | `defaults` | `Object` | Default values for search parameters |
|
|
84
|
+
* | `formats` | `Object` | Custom export formats configuration |
|
|
85
|
+
*
|
|
86
|
+
* @returns {Object} - Yada validation schema
|
|
87
|
+
*
|
|
88
|
+
* @example
|
|
89
|
+
* ```js
|
|
90
|
+
* const schema = User.getSearchValidation({
|
|
91
|
+
* allowExport: true
|
|
92
|
+
* });
|
|
93
|
+
* const validated = await schema.validate(query);
|
|
94
|
+
* ```
|
|
95
|
+
*
|
|
96
|
+
* @see {@link https://github.com/bedrockio/model#validation}
|
|
97
|
+
*/
|
|
98
|
+
getSearchValidation(options?: any): any;
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Returns a validation schema for delete operations.
|
|
102
|
+
*
|
|
103
|
+
* @returns {Object} - Yada validation schema
|
|
104
|
+
*
|
|
105
|
+
* @example
|
|
106
|
+
* ```js
|
|
107
|
+
* const schema = User.getDeleteValidation();
|
|
108
|
+
* await schema.validate({ authUser, document });
|
|
109
|
+
* ```
|
|
110
|
+
*
|
|
111
|
+
* @see {@link https://github.com/bedrockio/model#validation}
|
|
112
|
+
*/
|
|
113
|
+
getDeleteValidation(): any;
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Returns the validation schema for include fields.
|
|
117
|
+
*
|
|
118
|
+
* @returns {Object} - Yada validation schema for include parameter
|
|
119
|
+
*
|
|
120
|
+
* @example
|
|
121
|
+
* ```js
|
|
122
|
+
* const schema = User.getIncludeValidation();
|
|
123
|
+
* const validated = await schema.validate(['organization', 'createdBy']);
|
|
124
|
+
* ```
|
|
125
|
+
*
|
|
126
|
+
* @see {@link https://github.com/bedrockio/model#validation}
|
|
127
|
+
*/
|
|
128
|
+
getIncludeValidation(): any;
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* Returns a base validation schema with deleted fields stripped and read access required.
|
|
132
|
+
*
|
|
133
|
+
* @returns {Object} - Yada validation schema
|
|
134
|
+
*
|
|
135
|
+
* @example
|
|
136
|
+
* ```js
|
|
137
|
+
* const schema = User.getBaseSchema();
|
|
138
|
+
* const validated = await schema.validate(data);
|
|
139
|
+
* ```
|
|
140
|
+
*
|
|
141
|
+
* @see {@link https://github.com/bedrockio/model#validation}
|
|
142
|
+
*/
|
|
143
|
+
getBaseSchema(): any;
|
|
144
|
+
}
|
|
145
|
+
}
|
package/types/access.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"access.d.ts","sourceRoot":"","sources":["../src/access.js"],"names":[],"mappings":"AAIA;;GAEG;AACH,oCAFW,MAAM,GAAC,MAAM,EAAE,yBA2BzB"}
|
package/types/const.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"const.d.ts","sourceRoot":"","sources":["../src/const.js"],"names":[],"mappings":";;;;;;;;AASA,iCAAkC,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"delete-hooks.d.ts","sourceRoot":"","sources":["../src/delete-hooks.js"],"names":[],"mappings":"AASA,wDAgBC;AAED,qEAqCC"}
|
package/types/env.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../src/env.js"],"names":[],"mappings":"AAAA,4BAAyC"}
|
package/types/errors.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.js"],"names":[],"mappings":"AAAA;CAA8C;AAE9C;IACE,uBAGC;IADC,UAAgB;CAEnB;AAED;IACE,wCAGC;IADC,aAAsB;CAEzB;AAED;IACE,wCAGC;IADC,aAAsB;IAGxB;;;MAKC;CACF"}
|
package/types/include.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"include.d.ts","sourceRoot":"","sources":["../src/include.js"],"names":[],"mappings":"AAkBA,gDAuEC;AAMD,uDA4BC;AAGD,yDAIC;AAaD,yEAUC"}
|
package/types/load.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"load.d.ts","sourceRoot":"","sources":["../src/load.js"],"names":[],"mappings":"AAQA;;;;;GAKG;AACH,sCAJW,MAAM,QACN,MAAM,OAahB;AAED;;;;GAIG;AACH,sCAFW,MAAM,mBAkBhB;qBA3CoB,UAAU"}
|
package/types/references.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"references.d.ts","sourceRoot":"","sources":["../src/references.js"],"names":[],"mappings":"AAMA,mDAoDC"}
|