@venizia/ignis-kernel 0.2.0-21 → 0.2.0-22
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/dist/cjs/base/controllers/factory/controller.d.ts +3 -0
- package/dist/cjs/base/controllers/factory/controller.d.ts.map +1 -1
- package/dist/cjs/base/controllers/factory/crud/readable.d.ts +5 -0
- package/dist/cjs/base/controllers/factory/crud/readable.d.ts.map +1 -1
- package/dist/cjs/base/controllers/factory/crud/readable.js +44 -7
- package/dist/cjs/base/controllers/factory/crud/readable.js.map +1 -1
- package/dist/esm/base/controllers/factory/controller.d.ts +3 -0
- package/dist/esm/base/controllers/factory/controller.d.ts.map +1 -1
- package/dist/esm/base/controllers/factory/crud/readable.d.ts +5 -0
- package/dist/esm/base/controllers/factory/crud/readable.d.ts.map +1 -1
- package/dist/esm/base/controllers/factory/crud/readable.js +44 -7
- package/dist/esm/base/controllers/factory/crud/readable.js.map +1 -1
- package/package.json +2 -2
|
@@ -27,6 +27,9 @@ export declare class ControllerFactory extends BaseHelper {
|
|
|
27
27
|
deleteBy(opts: {
|
|
28
28
|
context: import("../common").TRouteContext<RouteEnv>;
|
|
29
29
|
}): Promise<import("../common").TJsonResponse<unknown, 400> | import("../common").TJsonResponse<unknown, 200>>;
|
|
30
|
+
getBaseWhere(_opts: {
|
|
31
|
+
context: import("../common").TRouteContext<RouteEnv>;
|
|
32
|
+
}): Promise<import("../../repositories").TWhere<TDataObject> | undefined>;
|
|
30
33
|
count(opts: {
|
|
31
34
|
context: import("../common").TRouteContext<RouteEnv>;
|
|
32
35
|
}): Promise<import("../common").TJsonResponse<unknown, 200>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../../../../src/base/controllers/factory/controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,UAAU,EAAY,MAAM,6BAA6B,CAAC;AAEnE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACxC,OAAO,KAAK,EACV,sBAAsB,EACtB,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACrB,MAAM,WAAW,CAAC;AAInB,6EAA6E;AAC7E,qBAAa,iBAAkB,SAAQ,UAAU;;IAK/C,MAAM,CAAC,oBAAoB,CACzB,OAAO,SAAS,cAAc,CAAC,gBAAgB,CAAC,GAAG,cAAc,CAAC,gBAAgB,CAAC,EACnF,MAAM,SAAS,mBAAmB,GAAG,mBAAmB,EACxD,QAAQ,SAAS,GAAG,GAAG,GAAG,EAC1B,WAAW,SAAS,MAAM,GAAG,EAAE,EAC/B,QAAQ,SAAS,MAAM,GAAG,GAAG,EAC7B,mBAAmB,SAAS,MAAM,GAAG,EAAE,EACvC,WAAW,SAAS,MAAM,GAAG,iBAAiB,CAAC,OAAO,CAAC,EACvD,cAAc,SAAS,MAAM,GAAG,oBAAoB,CAAC,OAAO,CAAC,EAC7D,OAAO,EAAE,sBAAsB,CAAC,OAAO,EAAE,MAAM,CAAC;yBAuCtB,kBAAkB,CAAC,WAAW,EAAE,cAAc,CAAC;YAUvE,iGAAiG;uBAC7E,cAAc,CAAC,IAAI,CAAC
|
|
1
|
+
{"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../../../../src/base/controllers/factory/controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,UAAU,EAAY,MAAM,6BAA6B,CAAC;AAEnE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACxC,OAAO,KAAK,EACV,sBAAsB,EACtB,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACrB,MAAM,WAAW,CAAC;AAInB,6EAA6E;AAC7E,qBAAa,iBAAkB,SAAQ,UAAU;;IAK/C,MAAM,CAAC,oBAAoB,CACzB,OAAO,SAAS,cAAc,CAAC,gBAAgB,CAAC,GAAG,cAAc,CAAC,gBAAgB,CAAC,EACnF,MAAM,SAAS,mBAAmB,GAAG,mBAAmB,EACxD,QAAQ,SAAS,GAAG,GAAG,GAAG,EAC1B,WAAW,SAAS,MAAM,GAAG,EAAE,EAC/B,QAAQ,SAAS,MAAM,GAAG,GAAG,EAC7B,mBAAmB,SAAS,MAAM,GAAG,EAAE,EACvC,WAAW,SAAS,MAAM,GAAG,iBAAiB,CAAC,OAAO,CAAC,EACvD,cAAc,SAAS,MAAM,GAAG,oBAAoB,CAAC,OAAO,CAAC,EAC7D,OAAO,EAAE,sBAAsB,CAAC,OAAO,EAAE,MAAM,CAAC;yBAuCtB,kBAAkB,CAAC,WAAW,EAAE,cAAc,CAAC;YAUvE,iGAAiG;uBAC7E,cAAc,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAAxC,CAAH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkFF"}
|
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
import type { AbstractEntity } from '../../../models';
|
|
2
|
+
import type { TWhere } from '@venizia/ignis-filter';
|
|
2
3
|
import type { TAnyObjectSchema } from '../../../../utilities/schema.utility';
|
|
3
4
|
import type { Env, Schema } from 'hono';
|
|
4
5
|
import type { TEntityDataObject, TEntityPersistObject, TRouteContext } from '../../common';
|
|
5
6
|
import { AbstractCrudController } from './abstract';
|
|
6
7
|
/** Read tier: count / find / findById / findOne. Read-only controllers can extend this directly. */
|
|
7
8
|
export declare abstract class ReadableCrudController<TEntity extends AbstractEntity<TAnyObjectSchema> = AbstractEntity<TAnyObjectSchema>, RouteEnv extends Env = Env, RouteSchema extends Schema = {}, BasePath extends string = '/', ConfigurableOptions extends object = {}, TDataObject extends object = TEntityDataObject<TEntity>, TPersistObject extends object = TEntityPersistObject<TEntity>> extends AbstractCrudController<TEntity, RouteEnv, RouteSchema, BasePath, ConfigurableOptions, TDataObject, TPersistObject> {
|
|
9
|
+
/** Narrows EVERY read of this controller - override it to scope rows to a tenant, an owner or a status. Public because a generated controller's declaration cannot carry a protected member (TS4094). */
|
|
10
|
+
getBaseWhere(_opts: {
|
|
11
|
+
context: TRouteContext<RouteEnv>;
|
|
12
|
+
}): Promise<TWhere<TDataObject> | undefined>;
|
|
8
13
|
/** GET /count */
|
|
9
14
|
count(opts: {
|
|
10
15
|
context: TRouteContext<RouteEnv>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"readable.d.ts","sourceRoot":"","sources":["../../../../../../src/base/controllers/factory/crud/readable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAU,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"readable.d.ts","sourceRoot":"","sources":["../../../../../../src/base/controllers/factory/crud/readable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAU,MAAM,eAAe,CAAC;AAC5D,OAAO,KAAK,EAAW,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACxC,OAAO,KAAK,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC3F,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAyBpD,oGAAoG;AACpG,8BAAsB,sBAAsB,CAC1C,OAAO,SAAS,cAAc,CAAC,gBAAgB,CAAC,GAAG,cAAc,CAAC,gBAAgB,CAAC,EACnF,QAAQ,SAAS,GAAG,GAAG,GAAG,EAC1B,WAAW,SAAS,MAAM,GAAG,EAAE,EAC/B,QAAQ,SAAS,MAAM,GAAG,GAAG,EAC7B,mBAAmB,SAAS,MAAM,GAAG,EAAE,EACvC,WAAW,SAAS,MAAM,GAAG,iBAAiB,CAAC,OAAO,CAAC,EACvD,cAAc,SAAS,MAAM,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAC7D,SAAQ,sBAAsB,CAC9B,OAAO,EACP,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,mBAAmB,EACnB,WAAW,EACX,cAAc,CACf;IACC,yMAAyM;IACnM,YAAY,CAAC,KAAK,EAAE;QACxB,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;KAClC,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,SAAS,CAAC;IAI5C,iBAAiB;IACX,KAAK,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAA;KAAE;IAetD,0DAA0D;IACpD,IAAI,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAA;KAAE;IA6BrD,eAAe;IACT,QAAQ,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAA;KAAE;IA+BzD,oBAAoB;IACd,OAAO,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAA;KAAE;CAuBzD"}
|
|
@@ -4,16 +4,37 @@ exports.ReadableCrudController = void 0;
|
|
|
4
4
|
const common_1 = require("@venizia/ignis-helpers/common");
|
|
5
5
|
const abstract_1 = require("./abstract");
|
|
6
6
|
const common_2 = require("../../common");
|
|
7
|
+
/** The one combination point of a base where and a request where; without a request side there is no `and` wrapper. */
|
|
8
|
+
const withBaseWhere = (opts) => {
|
|
9
|
+
const { baseWhere, where } = opts;
|
|
10
|
+
if (!where) {
|
|
11
|
+
return baseWhere;
|
|
12
|
+
}
|
|
13
|
+
// `Pick` resolves the one key: a literal cannot be checked against `TWhere` over an unresolved type parameter.
|
|
14
|
+
const scoped = { and: [baseWhere, where] };
|
|
15
|
+
return scoped;
|
|
16
|
+
};
|
|
17
|
+
/** `id` is the primary key every entity family reads by; built at the default `TWhere` for the same unresolved-parameter reason. */
|
|
18
|
+
const whereById = (opts) => {
|
|
19
|
+
const where = { id: opts.id };
|
|
20
|
+
return where;
|
|
21
|
+
};
|
|
7
22
|
/** Read tier: count / find / findById / findOne. Read-only controllers can extend this directly. */
|
|
8
23
|
class ReadableCrudController extends abstract_1.AbstractCrudController {
|
|
24
|
+
/** Narrows EVERY read of this controller - override it to scope rows to a tenant, an owner or a status. Public because a generated controller's declaration cannot carry a protected member (TS4094). */
|
|
25
|
+
async getBaseWhere(_opts) {
|
|
26
|
+
return undefined;
|
|
27
|
+
}
|
|
9
28
|
/** GET /count */
|
|
10
29
|
async count(opts) {
|
|
11
30
|
const { context } = opts;
|
|
12
31
|
const { where } = context.req.valid('query');
|
|
32
|
+
const baseWhere = await this.getBaseWhere({ context });
|
|
33
|
+
const scopedWhere = baseWhere ? withBaseWhere({ baseWhere, where }) : where;
|
|
13
34
|
const rs = await this.measure({
|
|
14
35
|
scope: 'count',
|
|
15
|
-
args: { where },
|
|
16
|
-
task: () => this.repository.count({ where }),
|
|
36
|
+
args: { where: scopedWhere },
|
|
37
|
+
task: () => this.repository.count({ where: scopedWhere }),
|
|
17
38
|
});
|
|
18
39
|
return context.json(rs, common_1.HTTP.ResultCodes.RS_2.Ok);
|
|
19
40
|
}
|
|
@@ -21,12 +42,16 @@ class ReadableCrudController extends abstract_1.AbstractCrudController {
|
|
|
21
42
|
async find(opts) {
|
|
22
43
|
const { context } = opts;
|
|
23
44
|
const { filter = {} } = context.req.valid('query');
|
|
45
|
+
const baseWhere = await this.getBaseWhere({ context });
|
|
46
|
+
const scopedFilter = baseWhere
|
|
47
|
+
? { ...filter, where: withBaseWhere({ baseWhere, where: filter.where }) }
|
|
48
|
+
: filter;
|
|
24
49
|
const rs = await this.measure({
|
|
25
50
|
scope: 'find',
|
|
26
|
-
args:
|
|
51
|
+
args: scopedFilter,
|
|
27
52
|
task: async () => {
|
|
28
53
|
const { data, range } = await this.repository.find({
|
|
29
|
-
filter,
|
|
54
|
+
filter: scopedFilter,
|
|
30
55
|
options: { shouldQueryRange: true },
|
|
31
56
|
});
|
|
32
57
|
return this.respond({
|
|
@@ -44,11 +69,19 @@ class ReadableCrudController extends abstract_1.AbstractCrudController {
|
|
|
44
69
|
const { context } = opts;
|
|
45
70
|
const { id } = context.req.valid('param');
|
|
46
71
|
const { filter } = context.req.valid('query');
|
|
72
|
+
const baseWhere = await this.getBaseWhere({ context });
|
|
73
|
+
// `repository.findById` takes no where, so a scoped read goes through `findOne` - the same
|
|
74
|
+
// substrate every family's findById delegates to - and answers null on an out-of-scope id.
|
|
75
|
+
const scopedWhere = baseWhere
|
|
76
|
+
? withBaseWhere({ baseWhere, where: whereById({ id }) })
|
|
77
|
+
: undefined;
|
|
47
78
|
const rs = await this.measure({
|
|
48
79
|
scope: 'findById',
|
|
49
80
|
args: filter,
|
|
50
81
|
task: async () => {
|
|
51
|
-
const record =
|
|
82
|
+
const record = scopedWhere
|
|
83
|
+
? await this.repository.findOne({ filter: { ...filter, where: scopedWhere } })
|
|
84
|
+
: await this.repository.findById({ id, filter });
|
|
52
85
|
return this.respond({
|
|
53
86
|
context,
|
|
54
87
|
format: common_2.ResponseFormats.OBJECT,
|
|
@@ -62,11 +95,15 @@ class ReadableCrudController extends abstract_1.AbstractCrudController {
|
|
|
62
95
|
async findOne(opts) {
|
|
63
96
|
const { context } = opts;
|
|
64
97
|
const { filter = {} } = context.req.valid('query');
|
|
98
|
+
const baseWhere = await this.getBaseWhere({ context });
|
|
99
|
+
const scopedFilter = baseWhere
|
|
100
|
+
? { ...filter, where: withBaseWhere({ baseWhere, where: filter.where }) }
|
|
101
|
+
: filter;
|
|
65
102
|
const rs = await this.measure({
|
|
66
103
|
scope: 'findOne',
|
|
67
|
-
args:
|
|
104
|
+
args: scopedFilter,
|
|
68
105
|
task: async () => {
|
|
69
|
-
const record = await this.repository.findOne({ filter });
|
|
106
|
+
const record = await this.repository.findOne({ filter: scopedFilter });
|
|
70
107
|
return this.respond({
|
|
71
108
|
context,
|
|
72
109
|
format: common_2.ResponseFormats.OBJECT,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"readable.js","sourceRoot":"","sources":["../../../../../../src/base/controllers/factory/crud/readable.ts"],"names":[],"mappings":";;;AAGA,0DAAqD;AAGrD,yCAAoD;AACpD,yCAA+C;AAE/C,oGAAoG;AACpG,MAAsB,sBAQpB,SAAQ,iCAQT;IACC,iBAAiB;IACjB,KAAK,CAAC,KAAK,CAAC,IAA0C;QACpD,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QACzB,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAiC,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"readable.js","sourceRoot":"","sources":["../../../../../../src/base/controllers/factory/crud/readable.ts"],"names":[],"mappings":"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"}
|
|
@@ -27,6 +27,9 @@ export declare class ControllerFactory extends BaseHelper {
|
|
|
27
27
|
deleteBy(opts: {
|
|
28
28
|
context: import("../index.js").TRouteContext<RouteEnv>;
|
|
29
29
|
}): Promise<import("../index.js").TJsonResponse<unknown, 400> | import("../index.js").TJsonResponse<unknown, 200>>;
|
|
30
|
+
getBaseWhere(_opts: {
|
|
31
|
+
context: import("../index.js").TRouteContext<RouteEnv>;
|
|
32
|
+
}): Promise<import("@venizia/ignis-filter").TWhere<TDataObject> | undefined>;
|
|
30
33
|
count(opts: {
|
|
31
34
|
context: import("../index.js").TRouteContext<RouteEnv>;
|
|
32
35
|
}): Promise<import("../index.js").TJsonResponse<unknown, 200>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../../../../src/base/controllers/factory/controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,UAAU,EAAY,MAAM,6BAA6B,CAAC;AAEnE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACxC,OAAO,KAAK,EACV,sBAAsB,EACtB,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACrB,MAAM,WAAW,CAAC;AAInB,6EAA6E;AAC7E,qBAAa,iBAAkB,SAAQ,UAAU;;IAK/C,MAAM,CAAC,oBAAoB,CACzB,OAAO,SAAS,cAAc,CAAC,gBAAgB,CAAC,GAAG,cAAc,CAAC,gBAAgB,CAAC,EACnF,MAAM,SAAS,mBAAmB,GAAG,mBAAmB,EACxD,QAAQ,SAAS,GAAG,GAAG,GAAG,EAC1B,WAAW,SAAS,MAAM,GAAG,EAAE,EAC/B,QAAQ,SAAS,MAAM,GAAG,GAAG,EAC7B,mBAAmB,SAAS,MAAM,GAAG,EAAE,EACvC,WAAW,SAAS,MAAM,GAAG,iBAAiB,CAAC,OAAO,CAAC,EACvD,cAAc,SAAS,MAAM,GAAG,oBAAoB,CAAC,OAAO,CAAC,EAC7D,OAAO,EAAE,sBAAsB,CAAC,OAAO,EAAE,MAAM,CAAC;yBAuCtB,kBAAkB,CAAC,WAAW,EAAE,cAAc,CAAC;YAUvE,iGAAiG;uBAC7E,cAAc,CAAC,IAAI,CAAC
|
|
1
|
+
{"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../../../../src/base/controllers/factory/controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,UAAU,EAAY,MAAM,6BAA6B,CAAC;AAEnE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACxC,OAAO,KAAK,EACV,sBAAsB,EACtB,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACrB,MAAM,WAAW,CAAC;AAInB,6EAA6E;AAC7E,qBAAa,iBAAkB,SAAQ,UAAU;;IAK/C,MAAM,CAAC,oBAAoB,CACzB,OAAO,SAAS,cAAc,CAAC,gBAAgB,CAAC,GAAG,cAAc,CAAC,gBAAgB,CAAC,EACnF,MAAM,SAAS,mBAAmB,GAAG,mBAAmB,EACxD,QAAQ,SAAS,GAAG,GAAG,GAAG,EAC1B,WAAW,SAAS,MAAM,GAAG,EAAE,EAC/B,QAAQ,SAAS,MAAM,GAAG,GAAG,EAC7B,mBAAmB,SAAS,MAAM,GAAG,EAAE,EACvC,WAAW,SAAS,MAAM,GAAG,iBAAiB,CAAC,OAAO,CAAC,EACvD,cAAc,SAAS,MAAM,GAAG,oBAAoB,CAAC,OAAO,CAAC,EAC7D,OAAO,EAAE,sBAAsB,CAAC,OAAO,EAAE,MAAM,CAAC;yBAuCtB,kBAAkB,CAAC,WAAW,EAAE,cAAc,CAAC;YAUvE,iGAAiG;uBAC7E,cAAc,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAAxC,CAAH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkFF"}
|
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
import type { AbstractEntity } from '../../../models/index.js';
|
|
2
|
+
import type { TWhere } from '@venizia/ignis-filter';
|
|
2
3
|
import type { TAnyObjectSchema } from '../../../../utilities/schema.utility.js';
|
|
3
4
|
import type { Env, Schema } from 'hono';
|
|
4
5
|
import type { TEntityDataObject, TEntityPersistObject, TRouteContext } from '../../common/index.js';
|
|
5
6
|
import { AbstractCrudController } from './abstract.js';
|
|
6
7
|
/** Read tier: count / find / findById / findOne. Read-only controllers can extend this directly. */
|
|
7
8
|
export declare abstract class ReadableCrudController<TEntity extends AbstractEntity<TAnyObjectSchema> = AbstractEntity<TAnyObjectSchema>, RouteEnv extends Env = Env, RouteSchema extends Schema = {}, BasePath extends string = '/', ConfigurableOptions extends object = {}, TDataObject extends object = TEntityDataObject<TEntity>, TPersistObject extends object = TEntityPersistObject<TEntity>> extends AbstractCrudController<TEntity, RouteEnv, RouteSchema, BasePath, ConfigurableOptions, TDataObject, TPersistObject> {
|
|
9
|
+
/** Narrows EVERY read of this controller - override it to scope rows to a tenant, an owner or a status. Public because a generated controller's declaration cannot carry a protected member (TS4094). */
|
|
10
|
+
getBaseWhere(_opts: {
|
|
11
|
+
context: TRouteContext<RouteEnv>;
|
|
12
|
+
}): Promise<TWhere<TDataObject> | undefined>;
|
|
8
13
|
/** GET /count */
|
|
9
14
|
count(opts: {
|
|
10
15
|
context: TRouteContext<RouteEnv>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"readable.d.ts","sourceRoot":"","sources":["../../../../../../src/base/controllers/factory/crud/readable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAU,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"readable.d.ts","sourceRoot":"","sources":["../../../../../../src/base/controllers/factory/crud/readable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAU,MAAM,eAAe,CAAC;AAC5D,OAAO,KAAK,EAAW,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACxC,OAAO,KAAK,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC3F,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAyBpD,oGAAoG;AACpG,8BAAsB,sBAAsB,CAC1C,OAAO,SAAS,cAAc,CAAC,gBAAgB,CAAC,GAAG,cAAc,CAAC,gBAAgB,CAAC,EACnF,QAAQ,SAAS,GAAG,GAAG,GAAG,EAC1B,WAAW,SAAS,MAAM,GAAG,EAAE,EAC/B,QAAQ,SAAS,MAAM,GAAG,GAAG,EAC7B,mBAAmB,SAAS,MAAM,GAAG,EAAE,EACvC,WAAW,SAAS,MAAM,GAAG,iBAAiB,CAAC,OAAO,CAAC,EACvD,cAAc,SAAS,MAAM,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAC7D,SAAQ,sBAAsB,CAC9B,OAAO,EACP,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,mBAAmB,EACnB,WAAW,EACX,cAAc,CACf;IACC,yMAAyM;IACnM,YAAY,CAAC,KAAK,EAAE;QACxB,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;KAClC,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,SAAS,CAAC;IAI5C,iBAAiB;IACX,KAAK,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAA;KAAE;IAetD,0DAA0D;IACpD,IAAI,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAA;KAAE;IA6BrD,eAAe;IACT,QAAQ,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAA;KAAE;IA+BzD,oBAAoB;IACd,OAAO,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAA;KAAE;CAuBzD"}
|
|
@@ -1,16 +1,37 @@
|
|
|
1
1
|
import { HTTP } from '@venizia/ignis-helpers/common';
|
|
2
2
|
import { AbstractCrudController } from './abstract.js';
|
|
3
3
|
import { ResponseFormats } from '../../common/index.js';
|
|
4
|
+
/** The one combination point of a base where and a request where; without a request side there is no `and` wrapper. */
|
|
5
|
+
const withBaseWhere = (opts) => {
|
|
6
|
+
const { baseWhere, where } = opts;
|
|
7
|
+
if (!where) {
|
|
8
|
+
return baseWhere;
|
|
9
|
+
}
|
|
10
|
+
// `Pick` resolves the one key: a literal cannot be checked against `TWhere` over an unresolved type parameter.
|
|
11
|
+
const scoped = { and: [baseWhere, where] };
|
|
12
|
+
return scoped;
|
|
13
|
+
};
|
|
14
|
+
/** `id` is the primary key every entity family reads by; built at the default `TWhere` for the same unresolved-parameter reason. */
|
|
15
|
+
const whereById = (opts) => {
|
|
16
|
+
const where = { id: opts.id };
|
|
17
|
+
return where;
|
|
18
|
+
};
|
|
4
19
|
/** Read tier: count / find / findById / findOne. Read-only controllers can extend this directly. */
|
|
5
20
|
export class ReadableCrudController extends AbstractCrudController {
|
|
21
|
+
/** Narrows EVERY read of this controller - override it to scope rows to a tenant, an owner or a status. Public because a generated controller's declaration cannot carry a protected member (TS4094). */
|
|
22
|
+
async getBaseWhere(_opts) {
|
|
23
|
+
return undefined;
|
|
24
|
+
}
|
|
6
25
|
/** GET /count */
|
|
7
26
|
async count(opts) {
|
|
8
27
|
const { context } = opts;
|
|
9
28
|
const { where } = context.req.valid('query');
|
|
29
|
+
const baseWhere = await this.getBaseWhere({ context });
|
|
30
|
+
const scopedWhere = baseWhere ? withBaseWhere({ baseWhere, where }) : where;
|
|
10
31
|
const rs = await this.measure({
|
|
11
32
|
scope: 'count',
|
|
12
|
-
args: { where },
|
|
13
|
-
task: () => this.repository.count({ where }),
|
|
33
|
+
args: { where: scopedWhere },
|
|
34
|
+
task: () => this.repository.count({ where: scopedWhere }),
|
|
14
35
|
});
|
|
15
36
|
return context.json(rs, HTTP.ResultCodes.RS_2.Ok);
|
|
16
37
|
}
|
|
@@ -18,12 +39,16 @@ export class ReadableCrudController extends AbstractCrudController {
|
|
|
18
39
|
async find(opts) {
|
|
19
40
|
const { context } = opts;
|
|
20
41
|
const { filter = {} } = context.req.valid('query');
|
|
42
|
+
const baseWhere = await this.getBaseWhere({ context });
|
|
43
|
+
const scopedFilter = baseWhere
|
|
44
|
+
? { ...filter, where: withBaseWhere({ baseWhere, where: filter.where }) }
|
|
45
|
+
: filter;
|
|
21
46
|
const rs = await this.measure({
|
|
22
47
|
scope: 'find',
|
|
23
|
-
args:
|
|
48
|
+
args: scopedFilter,
|
|
24
49
|
task: async () => {
|
|
25
50
|
const { data, range } = await this.repository.find({
|
|
26
|
-
filter,
|
|
51
|
+
filter: scopedFilter,
|
|
27
52
|
options: { shouldQueryRange: true },
|
|
28
53
|
});
|
|
29
54
|
return this.respond({
|
|
@@ -41,11 +66,19 @@ export class ReadableCrudController extends AbstractCrudController {
|
|
|
41
66
|
const { context } = opts;
|
|
42
67
|
const { id } = context.req.valid('param');
|
|
43
68
|
const { filter } = context.req.valid('query');
|
|
69
|
+
const baseWhere = await this.getBaseWhere({ context });
|
|
70
|
+
// `repository.findById` takes no where, so a scoped read goes through `findOne` - the same
|
|
71
|
+
// substrate every family's findById delegates to - and answers null on an out-of-scope id.
|
|
72
|
+
const scopedWhere = baseWhere
|
|
73
|
+
? withBaseWhere({ baseWhere, where: whereById({ id }) })
|
|
74
|
+
: undefined;
|
|
44
75
|
const rs = await this.measure({
|
|
45
76
|
scope: 'findById',
|
|
46
77
|
args: filter,
|
|
47
78
|
task: async () => {
|
|
48
|
-
const record =
|
|
79
|
+
const record = scopedWhere
|
|
80
|
+
? await this.repository.findOne({ filter: { ...filter, where: scopedWhere } })
|
|
81
|
+
: await this.repository.findById({ id, filter });
|
|
49
82
|
return this.respond({
|
|
50
83
|
context,
|
|
51
84
|
format: ResponseFormats.OBJECT,
|
|
@@ -59,11 +92,15 @@ export class ReadableCrudController extends AbstractCrudController {
|
|
|
59
92
|
async findOne(opts) {
|
|
60
93
|
const { context } = opts;
|
|
61
94
|
const { filter = {} } = context.req.valid('query');
|
|
95
|
+
const baseWhere = await this.getBaseWhere({ context });
|
|
96
|
+
const scopedFilter = baseWhere
|
|
97
|
+
? { ...filter, where: withBaseWhere({ baseWhere, where: filter.where }) }
|
|
98
|
+
: filter;
|
|
62
99
|
const rs = await this.measure({
|
|
63
100
|
scope: 'findOne',
|
|
64
|
-
args:
|
|
101
|
+
args: scopedFilter,
|
|
65
102
|
task: async () => {
|
|
66
|
-
const record = await this.repository.findOne({ filter });
|
|
103
|
+
const record = await this.repository.findOne({ filter: scopedFilter });
|
|
67
104
|
return this.respond({
|
|
68
105
|
context,
|
|
69
106
|
format: ResponseFormats.OBJECT,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"readable.js","sourceRoot":"","sources":["../../../../../../src/base/controllers/factory/crud/readable.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,IAAI,EAAE,MAAM,+BAA+B,CAAC;AAGrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,oGAAoG;AACpG,MAAM,OAAgB,sBAQpB,SAAQ,sBAQT;IACC,iBAAiB;IACjB,KAAK,CAAC,KAAK,CAAC,IAA0C;QACpD,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QACzB,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAiC,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"readable.js","sourceRoot":"","sources":["../../../../../../src/base/controllers/factory/crud/readable.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,IAAI,EAAE,MAAM,+BAA+B,CAAC;AAGrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,uHAAuH;AACvH,MAAM,aAAa,GAAG,CAA6B,IAGlD,EAAuB,EAAE;IACxB,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IAElC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,+GAA+G;IAC/G,MAAM,MAAM,GAAqC,EAAE,GAAG,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC;IAC7E,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,oIAAoI;AACpI,MAAM,SAAS,GAAG,CAA6B,IAAoB,EAAuB,EAAE;IAC1F,MAAM,KAAK,GAAW,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;IACtC,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,oGAAoG;AACpG,MAAM,OAAgB,sBAQpB,SAAQ,sBAQT;IACC,yMAAyM;IACzM,KAAK,CAAC,YAAY,CAAC,KAElB;QACC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,iBAAiB;IACjB,KAAK,CAAC,KAAK,CAAC,IAA0C;QACpD,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QACzB,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAiC,OAAO,CAAC,CAAC;QAC7E,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QACvD,MAAM,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAE5E,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC;YAC5B,KAAK,EAAE,OAAO;YACd,IAAI,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE;YAC5B,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;SAC1D,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,0DAA0D;IAC1D,KAAK,CAAC,IAAI,CAAC,IAA0C;QACnD,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QACzB,MAAM,EAAE,MAAM,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAoC,OAAO,CAAC,CAAC;QACtF,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QACvD,MAAM,YAAY,GAAG,SAAS;YAC5B,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,aAAa,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE;YACzE,CAAC,CAAC,MAAM,CAAC;QAEX,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC;YAC5B,KAAK,EAAE,MAAM;YACb,IAAI,EAAE,YAAY;YAClB,IAAI,EAAE,KAAK,IAAI,EAAE;gBACf,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;oBACjD,MAAM,EAAE,YAAY;oBACpB,OAAO,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE;iBACpC,CAAC,CAAC;gBAEH,OAAO,IAAI,CAAC,OAAO,CAAqB;oBACtC,OAAO;oBACP,MAAM,EAAE,eAAe,CAAC,KAAK;oBAC7B,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE;oBACrC,KAAK;iBACN,CAAC,CAAC;YACL,CAAC;SACF,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,eAAe;IACf,KAAK,CAAC,QAAQ,CAAC,IAA0C;QACvD,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QACzB,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAiB,OAAO,CAAC,CAAC;QAC1D,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAmD,OAAO,CAAC,CAAC;QAChG,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QAEvD,2FAA2F;QAC3F,2FAA2F;QAC3F,MAAM,WAAW,GAAG,SAAS;YAC3B,CAAC,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;YACxD,CAAC,CAAC,SAAS,CAAC;QAEd,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC;YAC5B,KAAK,EAAE,UAAU;YACjB,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,KAAK,IAAI,EAAE;gBACf,MAAM,MAAM,GAAG,WAAW;oBACxB,CAAC,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,CAAC;oBAC9E,CAAC,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;gBAEnD,OAAO,IAAI,CAAC,OAAO,CAAc;oBAC/B,OAAO;oBACP,MAAM,EAAE,eAAe,CAAC,MAAM;oBAC9B,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;iBACjD,CAAC,CAAC;YACL,CAAC;SACF,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,oBAAoB;IACpB,KAAK,CAAC,OAAO,CAAC,IAA0C;QACtD,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QACzB,MAAM,EAAE,MAAM,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAoC,OAAO,CAAC,CAAC;QACtF,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QACvD,MAAM,YAAY,GAAG,SAAS;YAC5B,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,aAAa,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE;YACzE,CAAC,CAAC,MAAM,CAAC;QAEX,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC;YAC5B,KAAK,EAAE,SAAS;YAChB,IAAI,EAAE,YAAY;YAClB,IAAI,EAAE,KAAK,IAAI,EAAE;gBACf,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;gBACvE,OAAO,IAAI,CAAC,OAAO,CAAc;oBAC/B,OAAO;oBACP,MAAM,EAAE,eAAe,CAAC,MAAM;oBAC9B,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;iBACjD,CAAC,CAAC;YACL,CAAC;SACF,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpD,CAAC;CACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@venizia/ignis-kernel",
|
|
3
|
-
"version": "0.2.0-
|
|
3
|
+
"version": "0.2.0-22",
|
|
4
4
|
"description": "Browser-pure kernel of the IGNIS framework: dependency injection, lifecycle, REST controllers, repository and datasource abstractions, and the authentication and authorization seams. No node builtin and no server-only peer, so the same kernel serves a Bun server and a browser Worker.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"authentication",
|
|
@@ -80,7 +80,7 @@
|
|
|
80
80
|
},
|
|
81
81
|
"dependencies": {
|
|
82
82
|
"@venizia/ignis-filter": "^0.2.0-7",
|
|
83
|
-
"@venizia/ignis-helpers": "^0.2.0-
|
|
83
|
+
"@venizia/ignis-helpers": "^0.2.0-16",
|
|
84
84
|
"@venizia/ignis-inversion": "^0.2.0-5",
|
|
85
85
|
"lodash": "^4.18.1",
|
|
86
86
|
"reflect-metadata": "^0.2.2",
|