@spinajs/orm-api 2.0.132 → 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
@@ -16,7 +16,7 @@ const ormHttp = {
16
16
  api: {
17
17
  endpoint: {
18
18
  transformer: {
19
- service: 'JsonApiCollectionTransofrmer',
19
+ service: 'JsonApiCollectionTransformer',
20
20
  },
21
21
  },
22
22
  },
@@ -0,0 +1,16 @@
1
+ import { IModelStatic, Orm } from '@spinajs/orm';
2
+ import { Ok } from '@spinajs/http';
3
+ import { Log } from '@spinajs/log';
4
+ import { Crud } from './Crud.js';
5
+ import { AccessControl, User as UserModel } from '@spinajs/rbac';
6
+ import { Permission } from 'accesscontrol';
7
+ export declare class CrudCreate extends Crud {
8
+ protected Log: Log;
9
+ protected Orm: Orm;
10
+ protected Ac: AccessControl;
11
+ protected checkAny(resource: string, user?: UserModel): Permission;
12
+ protected checkOwn(resource: string, user?: UserModel): Permission;
13
+ save(model: IModelStatic, data: unknown, user?: UserModel): Promise<Ok>;
14
+ insertRelation(model: IModelStatic, id: any, relation: string, data: unknown, user?: UserModel): Promise<Ok>;
15
+ }
16
+ //# sourceMappingURL=Create.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Create.d.ts","sourceRoot":"","sources":["../../../../src/controllers/crud/Create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAY,EAAE,EAAkC,MAAM,eAAe,CAAC;AAO7E,OAAO,EAAE,GAAG,EAAU,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,aAAa,EAAwB,IAAI,IAAI,SAAS,EAAE,MAAM,eAAe,CAAC;AACvF,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,qBAEa,UAAW,SAAQ,IAAI;IAElC,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC;IAGnB,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC;IAGnB,SAAS,CAAC,EAAE,EAAE,aAAa,CAAC;IAE5B,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,SAAS,GAAG,UAAU;IAUlE,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,SAAS,GAAG,UAAU;IAMrD,IAAI,CAAc,KAAK,EAAE,YAAY,EAAe,IAAI,EAAE,OAAO,EAAU,IAAI,CAAC,EAAE,SAAS;IA4B3F,cAAc,CAAc,KAAK,EAAE,YAAY,EAAW,EAAE,EAAE,GAAG,EAAW,QAAQ,EAAE,MAAM,EAAe,IAAI,EAAE,OAAO,EAAU,IAAI,CAAC,EAAE,SAAS;CA4ChK"}
@@ -0,0 +1,145 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ 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;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ var __importDefault = (this && this.__importDefault) || function (mod) {
15
+ return (mod && mod.__esModule) ? mod : { "default": mod };
16
+ };
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.CrudCreate = void 0;
19
+ const orm_1 = require("@spinajs/orm");
20
+ const http_1 = require("@spinajs/http");
21
+ const di_1 = require("@spinajs/di");
22
+ const exceptions_1 = require("@spinajs/exceptions");
23
+ const rbac_http_1 = require("@spinajs/rbac-http");
24
+ const lodash_1 = __importDefault(require("lodash"));
25
+ const ModelType_js_1 = require("../../route-args/ModelType.js");
26
+ const FindModelType_js_1 = require("../../policies/FindModelType.js");
27
+ const log_1 = require("@spinajs/log");
28
+ const Crud_js_1 = require("./Crud.js");
29
+ const rbac_1 = require("@spinajs/rbac");
30
+ let CrudCreate = class CrudCreate extends Crud_js_1.Crud {
31
+ checkAny(resource, user) {
32
+ // if we have user
33
+ if (user) {
34
+ return this.Ac.can(user.Role).createAny(resource);
35
+ }
36
+ else {
37
+ // if not try guest account
38
+ return this.Ac.can('guest').createAny(resource);
39
+ }
40
+ }
41
+ checkOwn(resource, user) {
42
+ const role = user ? user.Role : 'guest';
43
+ return this.Ac.can(role).createOwn(resource);
44
+ }
45
+ async save(model, data, user) {
46
+ const mDescriptor = this.getModelDescriptor(model);
47
+ let resource = mDescriptor.RbacResource ? mDescriptor.RbacResource : mDescriptor.Name;
48
+ let permission = this.checkAny(resource, user);
49
+ const toInsert = (Array.isArray(data) ? data : [data]).map((x) => new model(x));
50
+ if (!permission.granted) {
51
+ permission = this.checkOwn(resource, user);
52
+ if (permission.granted && user) {
53
+ if (model.checkOwnership) {
54
+ if (lodash_1.default.some(toInsert, (x) => !model.checkOwnership(x, user))) {
55
+ throw new exceptions_1.Forbidden(`You can only create ${resource} that is assigned to you !`);
56
+ }
57
+ }
58
+ else {
59
+ throw new exceptions_1.UnexpectedServerError(`Resource ${resource} does not have checkOwnership method implemented`);
60
+ }
61
+ }
62
+ if (!permission.granted) {
63
+ throw new exceptions_1.Forbidden(`You cannot create resource ${resource}`);
64
+ }
65
+ }
66
+ await model.insert(toInsert);
67
+ return new http_1.Ok(toInsert.map((x) => x.dehydrate()));
68
+ }
69
+ async insertRelation(model, id, relation, data, user) {
70
+ const mDescriptor = this.getModelDescriptor(model);
71
+ const rDescriptor = this.getRelationDescriptor(model, relation);
72
+ let resource = mDescriptor.RbacResource ? mDescriptor.RbacResource : mDescriptor.Name;
73
+ let permission = this.checkAny(resource, user);
74
+ const toInsert = (Array.isArray(data) ? data : [data]).map((x) => permission.filter(x)).map((x) => new rDescriptor.TargetModel(x));
75
+ const m = await model.get(id);
76
+ if (!m) {
77
+ throw new exceptions_1.ResourceNotFound(`Record with id ${id} not found`, {
78
+ Resource: model.name,
79
+ [mDescriptor.PrimaryKey]: id,
80
+ });
81
+ }
82
+ if (!permission.granted) {
83
+ permission = this.checkOwn(resource, user);
84
+ if (permission.granted && user) {
85
+ if (model.checkOwnership) {
86
+ if (!model.checkOwnership(m, user)) {
87
+ throw new exceptions_1.Forbidden(`Cannot create relations for ${resource} that you do not own`);
88
+ }
89
+ if (lodash_1.default.some(toInsert, (x) => !model.checkOwnership(x, user))) {
90
+ throw new exceptions_1.Forbidden(`You can only create ${resource} that you own`);
91
+ }
92
+ }
93
+ else {
94
+ throw new exceptions_1.UnexpectedServerError(`Resource ${resource} does not have checkOwnership method implemented`);
95
+ }
96
+ }
97
+ if (!permission.granted) {
98
+ throw new exceptions_1.Forbidden(`You do not access to ${resource}`);
99
+ }
100
+ }
101
+ toInsert.forEach((x) => {
102
+ m.attach(x);
103
+ });
104
+ await rDescriptor.TargetModel.insert(toInsert);
105
+ return new http_1.Ok(toInsert.map((x) => x.dehydrate()));
106
+ }
107
+ };
108
+ __decorate([
109
+ (0, log_1.Logger)('orm-http:api'),
110
+ __metadata("design:type", log_1.Log)
111
+ ], CrudCreate.prototype, "Log", void 0);
112
+ __decorate([
113
+ (0, di_1.Autoinject)(),
114
+ __metadata("design:type", orm_1.Orm)
115
+ ], CrudCreate.prototype, "Orm", void 0);
116
+ __decorate([
117
+ (0, di_1.Autoinject)(),
118
+ __metadata("design:type", rbac_1.AccessControl)
119
+ ], CrudCreate.prototype, "Ac", void 0);
120
+ __decorate([
121
+ (0, http_1.Post)(':model'),
122
+ __param(0, (0, ModelType_js_1.ModelType)()),
123
+ __param(1, (0, http_1.BodyField)()),
124
+ __param(2, (0, rbac_http_1.User)()),
125
+ __metadata("design:type", Function),
126
+ __metadata("design:paramtypes", [Object, Object, rbac_1.User]),
127
+ __metadata("design:returntype", Promise)
128
+ ], CrudCreate.prototype, "save", null);
129
+ __decorate([
130
+ (0, http_1.Post)(':model/:id/:relation'),
131
+ __param(0, (0, ModelType_js_1.ModelType)()),
132
+ __param(1, (0, http_1.Param)()),
133
+ __param(2, (0, http_1.Param)()),
134
+ __param(3, (0, http_1.BodyField)()),
135
+ __param(4, (0, rbac_http_1.User)()),
136
+ __metadata("design:type", Function),
137
+ __metadata("design:paramtypes", [Object, Object, String, Object, rbac_1.User]),
138
+ __metadata("design:returntype", Promise)
139
+ ], CrudCreate.prototype, "insertRelation", null);
140
+ CrudCreate = __decorate([
141
+ (0, http_1.BasePath)('crud'),
142
+ (0, http_1.Policy)(FindModelType_js_1.FindModelType)
143
+ ], CrudCreate);
144
+ exports.CrudCreate = CrudCreate;
145
+ //# sourceMappingURL=Create.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Create.js","sourceRoot":"","sources":["../../../../src/controllers/crud/Create.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { IModelStatic, IOrmRelation, SelectQueryBuilder } from '@spinajs/orm';
2
+ import { BaseController } from '@spinajs/http';
3
+ /**
4
+ * Base class for crud operations. Provides helper functions
5
+ */
6
+ export declare abstract class Crud extends BaseController {
7
+ protected prepareQuery(model: IModelStatic, relation: string, id: any, callback: (this: SelectQueryBuilder<SelectQueryBuilder<any>>, relation: IOrmRelation) => void): {
8
+ relation: any;
9
+ relationModel: any;
10
+ query: import("@spinajs/orm").ISelectQueryBuilder<import("@spinajs/orm").ModelBase<unknown>[]>;
11
+ };
12
+ }
13
+ //# sourceMappingURL=Crud.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Crud.d.ts","sourceRoot":"","sources":["../../../../src/controllers/crud/Crud.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAI/C;;GAEG;AACH,8BAAsB,IAAK,SAAQ,cAAc;IAC/C,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,kBAAkB,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,YAAY,KAAK,IAAI;;;;;CAYrK"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Crud = void 0;
4
+ const http_1 = require("@spinajs/http");
5
+ /**
6
+ * Base class for crud operations. Provides helper functions
7
+ */
8
+ class Crud extends http_1.BaseController {
9
+ prepareQuery(model, relation, id, callback) {
10
+ const descriptor = this.getModelDescriptor(model);
11
+ const rDescriptor = this.getRelationDescriptor(model, relation);
12
+ const tDescriptor = this.getModelDescriptor(rDescriptor.TargetModel);
13
+ const sQuery = model.query().where(descriptor.PrimaryKey, id).populate(relation, callback);
14
+ return {
15
+ relation: rDescriptor,
16
+ relationModel: tDescriptor,
17
+ query: sQuery,
18
+ };
19
+ }
20
+ }
21
+ exports.Crud = Crud;
22
+ //# sourceMappingURL=Crud.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Crud.js","sourceRoot":"","sources":["../../../../src/controllers/crud/Crud.ts"],"names":[],"mappings":";;;AACA,wCAA+C;AAI/C;;GAEG;AACH,MAAsB,IAAK,SAAQ,qBAAc;IACrC,YAAY,CAAC,KAAmB,EAAE,QAAgB,EAAE,EAAO,EAAE,QAA6F;QAClK,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAClD,MAAM,WAAW,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAChE,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QACrE,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAE3F,OAAO;YACL,QAAQ,EAAE,WAAW;YACrB,aAAa,EAAE,WAAW;YAC1B,KAAK,EAAE,MAAM;SACd,CAAC;IACJ,CAAC;CACF;AAbD,oBAaC"}
@@ -0,0 +1,16 @@
1
+ import { IModelStatic, Orm } from '@spinajs/orm';
2
+ import { Ok } from '@spinajs/http';
3
+ import { Log } from '@spinajs/log';
4
+ import { Crud } from './Crud.js';
5
+ import { AccessControl } from '@spinajs/rbac';
6
+ export declare class CrudDelete extends Crud {
7
+ protected Log: Log;
8
+ protected Orm: Orm;
9
+ protected Ac: AccessControl;
10
+ batchDelete(model: IModelStatic, ids: any[]): Promise<Ok>;
11
+ del(model: IModelStatic, id: any): Promise<Ok>;
12
+ deleteRelationBatch(model: IModelStatic, id: any, relation: string, relationIds: any[]): Promise<Ok>;
13
+ deleteRelation(model: IModelStatic, id: any, relation: string, relationId: number): Promise<Ok>;
14
+ deleteRelationAll(model: IModelStatic, id: any, relation: string): Promise<Ok>;
15
+ }
16
+ //# sourceMappingURL=Delete.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Delete.d.ts","sourceRoot":"","sources":["../../../../src/controllers/crud/Delete.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,GAAG,EAAgB,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAY,EAAE,EAA8D,MAAM,eAAe,CAAC;AAQzG,OAAO,EAAE,GAAG,EAAU,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,qBAEa,UAAW,SAAQ,IAAI;IAElC,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC;IAGnB,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC;IAGnB,SAAS,CAAC,EAAE,EAAE,aAAa,CAAC;IAGf,WAAW,CAAc,KAAK,EAAE,YAAY,EAAU,GAAG,EAAE,GAAG,EAAE;IAahE,GAAG,CAAc,KAAK,EAAE,YAAY,EAAW,EAAE,EAAE,GAAG;IAatD,mBAAmB,CAAc,KAAK,EAAE,YAAY,EAAW,EAAE,EAAE,GAAG,EAAW,QAAQ,EAAE,MAAM,EAAU,WAAW,EAAE,GAAG,EAAE;IAuB7H,cAAc,CAAc,KAAK,EAAE,YAAY,EAAW,EAAE,EAAE,GAAG,EAAW,QAAQ,EAAE,MAAM,EAAW,UAAU,EAAE,MAAM;IAwBzH,iBAAiB,CAAc,KAAK,EAAE,YAAY,EAAiC,EAAE,EAAE,GAAG,EAAW,QAAQ,EAAE,MAAM;CAoBnI"}
@@ -0,0 +1,158 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ 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;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.CrudDelete = void 0;
16
+ const orm_1 = require("@spinajs/orm");
17
+ const http_1 = require("@spinajs/http");
18
+ const rbac_http_1 = require("@spinajs/rbac-http");
19
+ const di_1 = require("@spinajs/di");
20
+ const exceptions_1 = require("@spinajs/exceptions");
21
+ const ModelType_js_1 = require("../../route-args/ModelType.js");
22
+ const FindModelType_js_1 = require("../../policies/FindModelType.js");
23
+ const log_1 = require("@spinajs/log");
24
+ const Crud_js_1 = require("./Crud.js");
25
+ const rbac_1 = require("@spinajs/rbac");
26
+ let CrudDelete = class CrudDelete extends Crud_js_1.Crud {
27
+ async batchDelete(model, ids) {
28
+ const tModel = this.getModelDescriptor(model);
29
+ const result = await model.destroy().whereIn(tModel.PrimaryKey, ids);
30
+ this.Log.trace(`Deleted ${result.RowsAffected} records from ${tModel.Name}`);
31
+ return new http_1.Ok({
32
+ [tModel.PrimaryKey]: ids,
33
+ });
34
+ }
35
+ async del(model, id) {
36
+ const descriptor = this.getModelDescriptor(model);
37
+ const result = await model.destroy(id);
38
+ this.Log.trace(`Deleted ${result.RowsAffected} records from ${descriptor.Name} with id ${id}`);
39
+ return new http_1.Ok({
40
+ [descriptor.PrimaryKey]: [id],
41
+ });
42
+ }
43
+ async deleteRelationBatch(model, id, relation, relationIds) {
44
+ const descriptor = this.getRelationDescriptor(model, relation);
45
+ if (descriptor.Type === orm_1.RelationType.One) {
46
+ throw new exceptions_1.BadRequest('Cannot delete batch from one to one relation');
47
+ }
48
+ const exists = await model.exists(id);
49
+ if (!exists) {
50
+ throw new exceptions_1.ResourceNotFound(`Record with id ${id} not found`, {
51
+ Resource: model.name,
52
+ Id: id,
53
+ });
54
+ }
55
+ const result = await descriptor.TargetModel.destroy(relationIds).where(descriptor.ForeignKey, id);
56
+ this.Log.trace(`Deleted ${result.RowsAffected} records from ${descriptor.Name} with id ${id}`);
57
+ return new http_1.Ok(relationIds);
58
+ }
59
+ async deleteRelation(model, id, relation, relationId) {
60
+ const descriptor = this.getRelationDescriptor(model, relation);
61
+ const tModel = this.getModelDescriptor(descriptor.TargetModel);
62
+ const exists = await model.exists(id);
63
+ if (!exists) {
64
+ throw new exceptions_1.ResourceNotFound(`Record with id ${id} not found`, {
65
+ Resource: model.name,
66
+ Id: id,
67
+ });
68
+ }
69
+ const result = await descriptor.TargetModel.destroy(relationId).when(descriptor.Type !== orm_1.RelationType.One, function () {
70
+ this.where({ [descriptor.ForeignKey]: id });
71
+ });
72
+ this.Log.trace(`Deleted related ${result.RowsAffected} records from ${tModel.Name} with id ${id}`);
73
+ return new http_1.Ok({
74
+ [tModel.PrimaryKey]: relationId,
75
+ });
76
+ }
77
+ async deleteRelationAll(model, id, relation) {
78
+ const descriptor = this.getRelationDescriptor(model, relation);
79
+ const tModel = this.getModelDescriptor(descriptor.TargetModel);
80
+ const exists = await model.exists(id);
81
+ if (!exists) {
82
+ throw new exceptions_1.ResourceNotFound(`Record with id ${id} not found`, {
83
+ Resource: model.name,
84
+ Id: id,
85
+ });
86
+ }
87
+ const result = await descriptor.TargetModel.destroy().when(descriptor.Type !== orm_1.RelationType.One, function () {
88
+ this.where(descriptor.ForeignKey, id);
89
+ });
90
+ this.Log.trace(`Deleted related ${result.RowsAffected} records from ${tModel.Name} with id ${id}`);
91
+ return new http_1.Ok();
92
+ }
93
+ };
94
+ __decorate([
95
+ (0, log_1.Logger)('orm-http:api'),
96
+ __metadata("design:type", log_1.Log)
97
+ ], CrudDelete.prototype, "Log", void 0);
98
+ __decorate([
99
+ (0, di_1.Autoinject)(),
100
+ __metadata("design:type", orm_1.Orm)
101
+ ], CrudDelete.prototype, "Orm", void 0);
102
+ __decorate([
103
+ (0, di_1.Autoinject)(),
104
+ __metadata("design:type", rbac_1.AccessControl)
105
+ ], CrudDelete.prototype, "Ac", void 0);
106
+ __decorate([
107
+ (0, http_1.Post)(':model/__batchDelete'),
108
+ __param(0, (0, ModelType_js_1.ModelType)()),
109
+ __param(1, (0, http_1.Body)()),
110
+ __metadata("design:type", Function),
111
+ __metadata("design:paramtypes", [Object, Array]),
112
+ __metadata("design:returntype", Promise)
113
+ ], CrudDelete.prototype, "batchDelete", null);
114
+ __decorate([
115
+ (0, http_1.Del)(':model/:id'),
116
+ (0, rbac_http_1.Permission)('deleteAny'),
117
+ __param(0, (0, ModelType_js_1.ModelType)()),
118
+ __param(1, (0, http_1.Param)()),
119
+ __metadata("design:type", Function),
120
+ __metadata("design:paramtypes", [Object, Object]),
121
+ __metadata("design:returntype", Promise)
122
+ ], CrudDelete.prototype, "del", null);
123
+ __decorate([
124
+ (0, http_1.Post)(':model/:id/:relation/__batchDelete'),
125
+ (0, rbac_http_1.Permission)('deleteAny'),
126
+ __param(0, (0, ModelType_js_1.ModelType)()),
127
+ __param(1, (0, http_1.Param)()),
128
+ __param(2, (0, http_1.Param)()),
129
+ __param(3, (0, http_1.Body)()),
130
+ __metadata("design:type", Function),
131
+ __metadata("design:paramtypes", [Object, Object, String, Array]),
132
+ __metadata("design:returntype", Promise)
133
+ ], CrudDelete.prototype, "deleteRelationBatch", null);
134
+ __decorate([
135
+ (0, http_1.Del)(':model/:id/:relation/:relationId'),
136
+ __param(0, (0, ModelType_js_1.ModelType)()),
137
+ __param(1, (0, http_1.Param)()),
138
+ __param(2, (0, http_1.Param)()),
139
+ __param(3, (0, http_1.Param)()),
140
+ __metadata("design:type", Function),
141
+ __metadata("design:paramtypes", [Object, Object, String, Number]),
142
+ __metadata("design:returntype", Promise)
143
+ ], CrudDelete.prototype, "deleteRelation", null);
144
+ __decorate([
145
+ (0, http_1.Del)(':model/:id/:relation'),
146
+ __param(0, (0, ModelType_js_1.ModelType)()),
147
+ __param(1, (0, http_1.PKey)(http_1.ParameterType.FromQuery)),
148
+ __param(2, (0, http_1.Query)()),
149
+ __metadata("design:type", Function),
150
+ __metadata("design:paramtypes", [Object, Object, String]),
151
+ __metadata("design:returntype", Promise)
152
+ ], CrudDelete.prototype, "deleteRelationAll", null);
153
+ CrudDelete = __decorate([
154
+ (0, http_1.BasePath)('crud'),
155
+ (0, http_1.Policy)(FindModelType_js_1.FindModelType)
156
+ ], CrudDelete);
157
+ exports.CrudDelete = CrudDelete;
158
+ //# sourceMappingURL=Delete.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Delete.js","sourceRoot":"","sources":["../../../../src/controllers/crud/Delete.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import { Permission } from 'accesscontrol';
2
+ import { Orm, IModelStatic } from '@spinajs/orm';
3
+ import { Ok } from '@spinajs/http';
4
+ import { User as UserModel, AccessControl } from '@spinajs/rbac';
5
+ import { BadRequest } from '@spinajs/exceptions';
6
+ import { Log } from '@spinajs/log';
7
+ import '@spinajs/rbac';
8
+ import { QueryArgs } from '../../dto/QueryArgs.js';
9
+ import { QueryFilter } from '../../dto/QueryFilter.js';
10
+ import { QueryIncludes } from '../../dto/QueryIncludes.js';
11
+ import { Crud } from './Crud.js';
12
+ export declare class CrudRead extends Crud {
13
+ protected Log: Log;
14
+ protected Orm: Orm;
15
+ protected Ac: AccessControl;
16
+ protected checkAny(resource: string, user?: UserModel): Permission;
17
+ protected checkOwn(resource: string, user?: UserModel): Permission;
18
+ /**
19
+ *
20
+ * Creates query on model and ansures that user have proper permission to access it
21
+ *
22
+ * @param model model to query against
23
+ * @param user user for permission check
24
+ * @returns
25
+ */
26
+ protected getSafeQuery(model: IModelStatic, user?: UserModel): {
27
+ query: import("@spinajs/orm").ISelectQueryBuilder<import("@spinajs/orm").ModelBase<unknown>[]>;
28
+ permission: Permission;
29
+ };
30
+ getAll(model: IModelStatic, getParams: QueryArgs, filters: QueryFilter, includes: QueryIncludes, user?: UserModel): Promise<Ok>;
31
+ get(user: UserModel, model: IModelStatic, id: number, includes: QueryIncludes): Promise<Ok>;
32
+ getRelation(model: IModelStatic, id: any, relation: string, relationId: any, includes: QueryIncludes, user?: UserModel): Promise<Ok | BadRequest>;
33
+ getRelations(model: IModelStatic, id: any, relation: string, params: QueryArgs, filters: QueryFilter, includes: QueryIncludes, user?: UserModel): Promise<Ok | BadRequest>;
34
+ }
35
+ //# sourceMappingURL=Read.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Read.d.ts","sourceRoot":"","sources":["../../../../src/controllers/crud/Read.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,GAAG,EAAa,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,EAAO,EAAE,EAAkC,MAAM,eAAe,CAAC;AAExE,OAAO,EAAE,IAAI,IAAI,SAAS,EAAwB,aAAa,EAAE,MAAM,eAAe,CAAC;AAEvF,OAAO,EAAE,UAAU,EAAsD,MAAM,qBAAqB,CAAC;AACrG,OAAO,EAAE,GAAG,EAAU,MAAM,cAAc,CAAC;AAC3C,OAAO,eAAe,CAAC;AAIvB,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,qBAEa,QAAS,SAAQ,IAAI;IAEhC,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC;IAGnB,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC;IAGnB,SAAS,CAAC,EAAE,EAAE,aAAa,CAAC;IAE5B,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,SAAS,GAAG,UAAU;IAUlE,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,SAAS,GAAG,UAAU;IAUlE;;;;;;;OAOG;IACH,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,CAAC,EAAE,SAAS;;;;IA6B/C,MAAM,CAAc,KAAK,EAAE,YAAY,EAAW,SAAS,EAAE,SAAS,EAAW,OAAO,EAAE,WAAW,EAAW,QAAQ,EAAE,aAAa,EAAU,IAAI,CAAC,EAAE,SAAS;IAoBjK,GAAG,CAAS,IAAI,EAAE,SAAS,EAAe,KAAK,EAAE,YAAY,EAAW,EAAE,EAAE,MAAM,EAAW,QAAQ,EAAE,aAAa;IAkBpH,WAAW,CAAc,KAAK,EAAE,YAAY,EAAW,EAAE,EAAE,GAAG,EAAW,QAAQ,EAAE,MAAM,EAAW,UAAU,EAAE,GAAG,EAAW,QAAQ,EAAE,aAAa,EAAU,IAAI,CAAC,EAAE,SAAS;IAiC/K,YAAY,CAAc,KAAK,EAAE,YAAY,EAAW,EAAE,EAAE,GAAG,EAAW,QAAQ,EAAE,MAAM,EAAW,MAAM,EAAE,SAAS,EAAW,OAAO,EAAE,WAAW,EAAW,QAAQ,EAAE,aAAa,EAAU,IAAI,CAAC,EAAE,SAAS;CAkC/N"}