@spinajs/orm-api 2.0.131 → 2.0.133

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.
Files changed (53) hide show
  1. package/lib/cjs/config/orm-http.js +1 -1
  2. package/lib/cjs/controllers/crud/Create.d.ts +16 -0
  3. package/lib/cjs/controllers/crud/Create.d.ts.map +1 -0
  4. package/lib/cjs/controllers/crud/Create.js +145 -0
  5. package/lib/cjs/controllers/crud/Create.js.map +1 -0
  6. package/lib/cjs/controllers/crud/Crud.d.ts +13 -0
  7. package/lib/cjs/controllers/crud/Crud.d.ts.map +1 -0
  8. package/lib/cjs/controllers/crud/Crud.js +22 -0
  9. package/lib/cjs/controllers/crud/Crud.js.map +1 -0
  10. package/lib/cjs/controllers/crud/Delete.d.ts +16 -0
  11. package/lib/cjs/controllers/crud/Delete.d.ts.map +1 -0
  12. package/lib/cjs/controllers/crud/Delete.js +158 -0
  13. package/lib/cjs/controllers/crud/Delete.js.map +1 -0
  14. package/lib/cjs/controllers/crud/Read.d.ts +35 -0
  15. package/lib/cjs/controllers/crud/Read.d.ts.map +1 -0
  16. package/lib/cjs/controllers/crud/Read.js +230 -0
  17. package/lib/cjs/controllers/crud/Read.js.map +1 -0
  18. package/lib/cjs/controllers/crud/Update.d.ts +13 -0
  19. package/lib/cjs/controllers/crud/Update.d.ts.map +1 -0
  20. package/lib/cjs/controllers/crud/Update.js +99 -0
  21. package/lib/cjs/controllers/crud/Update.js.map +1 -0
  22. package/lib/mjs/config/orm-http.js +1 -1
  23. package/lib/mjs/controllers/crud/Create.d.ts +16 -0
  24. package/lib/mjs/controllers/crud/Create.d.ts.map +1 -0
  25. package/lib/mjs/controllers/crud/Create.js +139 -0
  26. package/lib/mjs/controllers/crud/Create.js.map +1 -0
  27. package/lib/mjs/controllers/crud/Crud.d.ts +13 -0
  28. package/lib/mjs/controllers/crud/Crud.d.ts.map +1 -0
  29. package/lib/mjs/controllers/crud/Crud.js +18 -0
  30. package/lib/mjs/controllers/crud/Crud.js.map +1 -0
  31. package/lib/mjs/controllers/crud/Delete.d.ts +16 -0
  32. package/lib/mjs/controllers/crud/Delete.d.ts.map +1 -0
  33. package/lib/mjs/controllers/crud/Delete.js +155 -0
  34. package/lib/mjs/controllers/crud/Delete.js.map +1 -0
  35. package/lib/mjs/controllers/crud/Read.d.ts +35 -0
  36. package/lib/mjs/controllers/crud/Read.d.ts.map +1 -0
  37. package/lib/mjs/controllers/crud/Read.js +227 -0
  38. package/lib/mjs/controllers/crud/Read.js.map +1 -0
  39. package/lib/mjs/controllers/crud/Update.d.ts +13 -0
  40. package/lib/mjs/controllers/crud/Update.d.ts.map +1 -0
  41. package/lib/mjs/controllers/crud/Update.js +96 -0
  42. package/lib/mjs/controllers/crud/Update.js.map +1 -0
  43. package/lib/tsconfig.cjs.tsbuildinfo +1 -1
  44. package/lib/tsconfig.mjs.tsbuildinfo +1 -1
  45. package/package.json +17 -18
  46. package/lib/cjs/controllers/Collections.d.ts +0 -33
  47. package/lib/cjs/controllers/Collections.d.ts.map +0 -1
  48. package/lib/cjs/controllers/Collections.js +0 -417
  49. package/lib/cjs/controllers/Collections.js.map +0 -1
  50. package/lib/mjs/controllers/Collections.d.ts +0 -33
  51. package/lib/mjs/controllers/Collections.d.ts.map +0 -1
  52. package/lib/mjs/controllers/Collections.js +0 -414
  53. package/lib/mjs/controllers/Collections.js.map +0 -1
@@ -1,414 +0,0 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- var __metadata = (this && this.__metadata) || function (k, v) {
8
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
- };
10
- var __param = (this && this.__param) || function (paramIndex, decorator) {
11
- return function (target, key) { decorator(target, key, paramIndex); }
12
- };
13
- import { MODEL_DESCTRIPTION_SYMBOL, Orm, OrmException, RelationType, SortOrder } from '@spinajs/orm';
14
- import { BaseController, Get, BasePath, Ok, Post, Query, Del, Body, Put, PKey, ParameterType, Policy, BodyField, Param } from '@spinajs/http';
15
- import { Resource, Permission } from '@spinajs/rbac-http';
16
- import { Autoinject } from '@spinajs/di';
17
- import { BadRequest, ResourceNotFound } from '@spinajs/exceptions';
18
- import { ModelType } from '../route-args/ModelType.js';
19
- import { FindModelType } from '../policies/FindModelType.js';
20
- import { QueryArgs } from '../dto/QueryArgs.js';
21
- import { QueryFilter } from '../dto/QueryFilter.js';
22
- import { AutoinjectService } from '@spinajs/configuration';
23
- import { Log, Logger } from '@spinajs/log';
24
- import { QueryIncludes } from '../dto/QueryIncludes.js';
25
- import { CollectionApiTransformer } from './../interfaces.js';
26
- let Collections = class Collections extends BaseController {
27
- // --------------------- DELETE functions --------------------- //
28
- async batchDelete(model, ids) {
29
- const tModel = this.getModelDescriptor(model);
30
- const result = await model.destroy().whereIn(tModel.PrimaryKey, ids);
31
- this.Log.trace(`Deleted ${result.RowsAffected} records from ${tModel.Name}`);
32
- return new Ok({
33
- [tModel.PrimaryKey]: ids,
34
- });
35
- }
36
- async del(model, id) {
37
- const descriptor = this.getModelDescriptor(model);
38
- const result = await model.destroy(id);
39
- this.Log.trace(`Deleted ${result.RowsAffected} records from ${descriptor.Name} with id ${id}`);
40
- return new Ok({
41
- [descriptor.PrimaryKey]: [id],
42
- });
43
- }
44
- async deleteRelationBatch(model, id, relation, relationIds) {
45
- const descriptor = this.getRelationDescriptor(model, relation);
46
- if (descriptor.Type === RelationType.One) {
47
- throw new BadRequest('Cannot delete batch from one to one relation');
48
- }
49
- const exists = await model.exists(id);
50
- if (!exists) {
51
- throw new ResourceNotFound(`Record with id ${id} not found`, {
52
- Resource: model.name,
53
- Id: id,
54
- });
55
- }
56
- const result = await descriptor.TargetModel.destroy(relationIds).where(descriptor.ForeignKey, id);
57
- this.Log.trace(`Deleted ${result.RowsAffected} records from ${descriptor.Name} with id ${id}`);
58
- return new Ok(relationIds);
59
- }
60
- async deleteRelation(model, id, relation, relationId) {
61
- const descriptor = this.getRelationDescriptor(model, relation);
62
- const tModel = this.getModelDescriptor(descriptor.TargetModel);
63
- const exists = await model.exists(id);
64
- if (!exists) {
65
- throw new ResourceNotFound(`Record with id ${id} not found`, {
66
- Resource: model.name,
67
- Id: id,
68
- });
69
- }
70
- const result = await descriptor.TargetModel.destroy(relationId).when(descriptor.Type !== RelationType.One, function () {
71
- this.where({ [descriptor.ForeignKey]: id });
72
- });
73
- this.Log.trace(`Deleted related ${result.RowsAffected} records from ${tModel.Name} with id ${id}`);
74
- return new Ok({
75
- [tModel.PrimaryKey]: relationId,
76
- });
77
- }
78
- async deleteRelationAll(model, id, relation) {
79
- const descriptor = this.getRelationDescriptor(model, relation);
80
- const tModel = this.getModelDescriptor(descriptor.TargetModel);
81
- const exists = await model.exists(id);
82
- if (!exists) {
83
- throw new ResourceNotFound(`Record with id ${id} not found`, {
84
- Resource: model.name,
85
- Id: id,
86
- });
87
- }
88
- const result = await descriptor.TargetModel.destroy().when(descriptor.Type !== RelationType.One, function () {
89
- this.where(descriptor.ForeignKey, id);
90
- });
91
- this.Log.trace(`Deleted related ${result.RowsAffected} records from ${tModel.Name} with id ${id}`);
92
- return new Ok();
93
- }
94
- // --------------------- GET functions --------------------- //
95
- async getAll(model, getParams, filters, includes) {
96
- const query = model
97
- .where(filters)
98
- .select('*')
99
- .populate(includes)
100
- .order(getParams.order, getParams.orderDirection ?? SortOrder.ASC)
101
- .skip(getParams.page * getParams.perPage ?? 0)
102
- .take(getParams.perPage ?? 10);
103
- const count = await query.clone().clearColumns().count('*', 'count').takeFirst().asRaw();
104
- const result = await query;
105
- return new Ok({
106
- Data: result.map((x) => x.dehydrateWithRelations()),
107
- Total: count.count,
108
- });
109
- }
110
- async get(model, id, includes) {
111
- const descriptor = this.getModelDescriptor(model);
112
- const result = await model
113
- .query()
114
- .select('*')
115
- .where(descriptor.PrimaryKey, id)
116
- .populate(includes)
117
- .firstOrThrow(new ResourceNotFound(`Record with id ${id} not found`, {
118
- Resource: model.name,
119
- [descriptor.PrimaryKey]: id,
120
- }));
121
- return new Ok(result.dehydrateWithRelations());
122
- }
123
- async getRelation(model, id, relation, relationId, includes) {
124
- const mDescriptor = this.getModelDescriptor(model);
125
- const rDescriptor = this.getRelationDescriptor(model, relation);
126
- const rmDescriptor = this.getModelDescriptor(rDescriptor.TargetModel);
127
- const query = rDescriptor.TargetModel.query();
128
- const pExists = await model.exists(id);
129
- if (!pExists) {
130
- throw new ResourceNotFound(`Record with id ${id} not found`, {
131
- Resource: model.name,
132
- [mDescriptor.PrimaryKey]: id,
133
- });
134
- }
135
- const result = await query
136
- .select('*')
137
- .populate(includes)
138
- .where(rmDescriptor.PrimaryKey, relationId)
139
- .firstOrThrow(new ResourceNotFound(`Record with id ${relationId} not found`, {
140
- Resource: rDescriptor.TargetModel.name,
141
- [rmDescriptor.PrimaryKey]: relationId,
142
- }));
143
- return new Ok(result.dehydrateWithRelations());
144
- }
145
- async getRelations(model, id, relation, params, filters, includes) {
146
- const mDescriptor = this.getModelDescriptor(model);
147
- const rDescriptor = this.getRelationDescriptor(model, relation);
148
- const pExists = await model.exists(id);
149
- if (!pExists) {
150
- throw new ResourceNotFound(`Record with id ${id} not found`, {
151
- Resource: model.name,
152
- [mDescriptor.PrimaryKey]: id,
153
- });
154
- }
155
- const query = rDescriptor.TargetModel.where(filters)
156
- .where(rDescriptor.ForeignKey, id)
157
- .select('*')
158
- .populate(includes)
159
- .order(params.order, params.orderDirection ?? SortOrder.ASC)
160
- .skip(params.page * params.perPage ?? 0)
161
- .take(params.perPage ?? 10);
162
- const count = await query.clone().clearColumns().count('*', 'count').takeFirst().asRaw();
163
- const result = await query;
164
- return new Ok({
165
- Data: result.map((x) => x.dehydrateWithRelations()),
166
- Total: count,
167
- });
168
- }
169
- // --------------------- POST functions --------------------- //
170
- async save(model, data) {
171
- const toInsert = (Array.isArray(data) ? data : [data]).map((x) => new model(x));
172
- await model.insert(toInsert);
173
- return new Ok(toInsert.map((x) => x.dehydrate()));
174
- }
175
- async insertRelation(model, id, relation, data) {
176
- const mDescriptor = this.getModelDescriptor(model);
177
- const rDescriptor = this.getRelationDescriptor(model, relation);
178
- const m = await model.get(id);
179
- if (!m) {
180
- throw new ResourceNotFound(`Record with id ${id} not found`, {
181
- Resource: model.name,
182
- [mDescriptor.PrimaryKey]: id,
183
- });
184
- }
185
- const toInsert = (Array.isArray(data) ? data : [data]).map((x) => new rDescriptor.TargetModel(x));
186
- toInsert.forEach((x) => {
187
- m.attach(x);
188
- });
189
- await rDescriptor.TargetModel.insert(toInsert);
190
- return new Ok(toInsert.map((x) => x.dehydrate()));
191
- }
192
- // --------------------- PUT functions --------------------- //
193
- async update(model, id, data) {
194
- const descriptor = this.getModelDescriptor(model);
195
- const entity = await model.where(descriptor.PrimaryKey, id).firstOrThrow(new ResourceNotFound(`Record with id ${id} not found`, {
196
- Resource: model.name,
197
- [descriptor.PrimaryKey]: id,
198
- }));
199
- entity.hydrate(data);
200
- await entity.update();
201
- this.Log.trace('Updated entity with id ${id}');
202
- return new Ok(entity.toJSON());
203
- }
204
- async updateRelation(model, id, relation, relationId, data) {
205
- const mDescriptor = this.getModelDescriptor(model);
206
- const rDescriptor = this.getRelationDescriptor(model, relation);
207
- const rmDescriptor = this.getModelDescriptor(rDescriptor.TargetModel);
208
- const query = rDescriptor.TargetModel.query();
209
- const pExists = await model.exists(id);
210
- if (!pExists) {
211
- throw new ResourceNotFound(`Record with id ${id} not found`, {
212
- Resource: model.name,
213
- [mDescriptor.PrimaryKey]: id,
214
- });
215
- }
216
- const result = await query.where(rmDescriptor.PrimaryKey, relationId).firstOrThrow(new ResourceNotFound(`Record with id ${relationId} not found`, {
217
- Resource: rDescriptor.TargetModel.name,
218
- [rmDescriptor.PrimaryKey]: relationId,
219
- }));
220
- this.Log.trace(`Updating relation ${relation} with id ${relationId} for model ${model.name} with id ${id}`);
221
- result.hydrate(data);
222
- await result.update();
223
- return new Ok(result.toJSON());
224
- }
225
- // --------------------- HELPERS functions --------------------- //
226
- getModelDescriptor(model) {
227
- const descriptor = model[MODEL_DESCTRIPTION_SYMBOL];
228
- if (!descriptor) {
229
- throw new OrmException(`Model ${model.name} has no descriptor`);
230
- }
231
- return descriptor;
232
- }
233
- getRelationDescriptor(model, relation) {
234
- const descriptor = this.getModelDescriptor(model);
235
- let rDescriptor = null;
236
- for (const [key, value] of descriptor.Relations) {
237
- if (key.toLowerCase() === relation.toLowerCase().trim()) {
238
- rDescriptor = value;
239
- break;
240
- }
241
- }
242
- if (!rDescriptor) {
243
- throw new OrmException(`Model ${model.name} has no relation ${relation}`);
244
- }
245
- return rDescriptor;
246
- }
247
- prepareQuery(model, relation, id, callback) {
248
- const descriptor = this.getModelDescriptor(model);
249
- const rDescriptor = this.getRelationDescriptor(model, relation);
250
- const tDescriptor = this.getModelDescriptor(rDescriptor.TargetModel);
251
- const sQuery = model.query().where(descriptor.PrimaryKey, id).populate(relation, callback);
252
- return {
253
- relation: rDescriptor,
254
- relationModel: tDescriptor,
255
- query: sQuery,
256
- };
257
- }
258
- };
259
- __decorate([
260
- Logger('orm-http:api'),
261
- __metadata("design:type", Log)
262
- ], Collections.prototype, "Log", void 0);
263
- __decorate([
264
- AutoinjectService('api.endpoint.transformer'),
265
- __metadata("design:type", CollectionApiTransformer)
266
- ], Collections.prototype, "DataTransformer", void 0);
267
- __decorate([
268
- Autoinject(),
269
- __metadata("design:type", Orm)
270
- ], Collections.prototype, "Orm", void 0);
271
- __decorate([
272
- Post(':model/__batchDelete'),
273
- __param(0, ModelType()),
274
- __param(1, Body()),
275
- __metadata("design:type", Function),
276
- __metadata("design:paramtypes", [Object, Array]),
277
- __metadata("design:returntype", Promise)
278
- ], Collections.prototype, "batchDelete", null);
279
- __decorate([
280
- Del(':model/:id'),
281
- Permission('deleteAny'),
282
- __param(0, ModelType()),
283
- __param(1, Param()),
284
- __metadata("design:type", Function),
285
- __metadata("design:paramtypes", [Object, Object]),
286
- __metadata("design:returntype", Promise)
287
- ], Collections.prototype, "del", null);
288
- __decorate([
289
- Post(':model/:id/:relation/__batchDelete'),
290
- Permission('deleteAny'),
291
- __param(0, ModelType()),
292
- __param(1, Param()),
293
- __param(2, Param()),
294
- __param(3, Body()),
295
- __metadata("design:type", Function),
296
- __metadata("design:paramtypes", [Object, Object, String, Array]),
297
- __metadata("design:returntype", Promise)
298
- ], Collections.prototype, "deleteRelationBatch", null);
299
- __decorate([
300
- Del(':model/:id/:relation/:relationId'),
301
- Permission('deleteAny'),
302
- __param(0, ModelType()),
303
- __param(1, Param()),
304
- __param(2, Param()),
305
- __param(3, Param()),
306
- __metadata("design:type", Function),
307
- __metadata("design:paramtypes", [Object, Object, String, Number]),
308
- __metadata("design:returntype", Promise)
309
- ], Collections.prototype, "deleteRelation", null);
310
- __decorate([
311
- Del(':model/:id/:relation'),
312
- Permission('deleteAny'),
313
- __param(0, ModelType()),
314
- __param(1, PKey(ParameterType.FromQuery)),
315
- __param(2, Query()),
316
- __metadata("design:type", Function),
317
- __metadata("design:paramtypes", [Object, Object, String]),
318
- __metadata("design:returntype", Promise)
319
- ], Collections.prototype, "deleteRelationAll", null);
320
- __decorate([
321
- Get(':model'),
322
- Permission('readAny'),
323
- __param(0, ModelType()),
324
- __param(1, Query()),
325
- __param(2, Query()),
326
- __param(3, Query()),
327
- __metadata("design:type", Function),
328
- __metadata("design:paramtypes", [Object, QueryArgs, QueryFilter, QueryIncludes]),
329
- __metadata("design:returntype", Promise)
330
- ], Collections.prototype, "getAll", null);
331
- __decorate([
332
- Get(':model/:id'),
333
- Permission('readAny'),
334
- __param(0, ModelType()),
335
- __param(1, Param()),
336
- __param(2, Query()),
337
- __metadata("design:type", Function),
338
- __metadata("design:paramtypes", [Object, Number, QueryIncludes]),
339
- __metadata("design:returntype", Promise)
340
- ], Collections.prototype, "get", null);
341
- __decorate([
342
- Get(':model/:id/:relation/:relationId'),
343
- Permission('readAny'),
344
- __param(0, ModelType()),
345
- __param(1, Param()),
346
- __param(2, Param()),
347
- __param(3, Param()),
348
- __param(4, Query()),
349
- __metadata("design:type", Function),
350
- __metadata("design:paramtypes", [Object, Object, String, Object, QueryIncludes]),
351
- __metadata("design:returntype", Promise)
352
- ], Collections.prototype, "getRelation", null);
353
- __decorate([
354
- Get(':model/:id/:relation'),
355
- Permission('readAny'),
356
- __param(0, ModelType()),
357
- __param(1, Param()),
358
- __param(2, Param()),
359
- __param(3, Query()),
360
- __param(4, Query()),
361
- __param(5, Query()),
362
- __metadata("design:type", Function),
363
- __metadata("design:paramtypes", [Object, Object, String, QueryArgs, QueryFilter, QueryIncludes]),
364
- __metadata("design:returntype", Promise)
365
- ], Collections.prototype, "getRelations", null);
366
- __decorate([
367
- Post(':model'),
368
- Permission('createAny'),
369
- __param(0, ModelType()),
370
- __param(1, BodyField()),
371
- __metadata("design:type", Function),
372
- __metadata("design:paramtypes", [Object, Object]),
373
- __metadata("design:returntype", Promise)
374
- ], Collections.prototype, "save", null);
375
- __decorate([
376
- Post(':model/:id/:relation'),
377
- Permission('createAny'),
378
- __param(0, ModelType()),
379
- __param(1, Param()),
380
- __param(2, Param()),
381
- __param(3, BodyField()),
382
- __metadata("design:type", Function),
383
- __metadata("design:paramtypes", [Object, Object, String, Object]),
384
- __metadata("design:returntype", Promise)
385
- ], Collections.prototype, "insertRelation", null);
386
- __decorate([
387
- Put(':model/:id'),
388
- Permission('updateAny'),
389
- __param(0, ModelType()),
390
- __param(1, Param()),
391
- __param(2, BodyField()),
392
- __metadata("design:type", Function),
393
- __metadata("design:paramtypes", [Object, Number, Object]),
394
- __metadata("design:returntype", Promise)
395
- ], Collections.prototype, "update", null);
396
- __decorate([
397
- Put(':model/:id/:relation/:relationId'),
398
- Permission('updateAny'),
399
- __param(0, ModelType()),
400
- __param(1, Param()),
401
- __param(2, Param()),
402
- __param(3, Param()),
403
- __param(4, BodyField()),
404
- __metadata("design:type", Function),
405
- __metadata("design:paramtypes", [Object, Number, String, Object, Object]),
406
- __metadata("design:returntype", Promise)
407
- ], Collections.prototype, "updateRelation", null);
408
- Collections = __decorate([
409
- BasePath('collection'),
410
- Resource('repository'),
411
- Policy(FindModelType)
412
- ], Collections);
413
- export { Collections };
414
- //# sourceMappingURL=Collections.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Collections.js","sourceRoot":"","sources":["../../../src/controllers/Collections.ts"],"names":[],"mappings":"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"}