@things-factory/ops-master 10.1.33 → 10.1.35
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-client/index.d.ts +1 -0
- package/dist-client/index.js +1 -0
- package/dist-client/index.js.map +1 -1
- package/dist-client/master-change-approval.d.ts +14 -0
- package/dist-client/master-change-approval.js +36 -0
- package/dist-client/master-change-approval.js.map +1 -0
- package/dist-client/pages/master/material-definition.d.ts +4 -11
- package/dist-client/pages/master/material-definition.js +5 -53
- package/dist-client/pages/master/material-definition.js.map +1 -1
- package/dist-client/pages/master/material-revision-fields.d.ts +2 -0
- package/dist-client/pages/master/material-revision-fields.js +43 -0
- package/dist-client/pages/master/material-revision-fields.js.map +1 -0
- package/dist-client/pages/master/recipe-definition.d.ts +4 -135
- package/dist-client/pages/master/recipe-definition.js +7 -397
- package/dist-client/pages/master/recipe-definition.js.map +1 -1
- package/dist-client/pages/master/revision-comparison.d.ts +48 -0
- package/dist-client/pages/master/revision-comparison.js +553 -0
- package/dist-client/pages/master/revision-comparison.js.map +1 -0
- package/dist-client/pages/master/revision-view.d.ts +19 -0
- package/dist-client/pages/master/revision-view.js +133 -0
- package/dist-client/pages/master/revision-view.js.map +1 -0
- package/dist-client/pages/master/revision-workspace.d.ts +50 -0
- package/dist-client/pages/master/revision-workspace.js +752 -0
- package/dist-client/pages/master/revision-workspace.js.map +1 -0
- package/dist-client/pages/master/test-specification.d.ts +4 -92
- package/dist-client/pages/master/test-specification.js +5 -440
- package/dist-client/pages/master/test-specification.js.map +1 -1
- package/dist-client/tsconfig.tsbuildinfo +1 -1
- package/dist-server/service/asset/asset-master-resolver.js +38 -34
- package/dist-server/service/asset/asset-master-resolver.js.map +1 -1
- package/dist-server/service/asset/index.d.ts +2 -2
- package/dist-server/service/equipment/equipment-master-resolver.js +54 -49
- package/dist-server/service/equipment/equipment-master-resolver.js.map +1 -1
- package/dist-server/service/equipment/index.d.ts +2 -2
- package/dist-server/service/index.d.ts +18 -2
- package/dist-server/service/index.js +18 -0
- package/dist-server/service/index.js.map +1 -1
- package/dist-server/service/location/index.d.ts +1 -1
- package/dist-server/service/location/location-master-resolver.js +34 -31
- package/dist-server/service/location/location-master-resolver.js.map +1 -1
- package/dist-server/service/master-axis.js +1 -1
- package/dist-server/service/master-axis.js.map +1 -1
- package/dist-server/service/master-change-policy.d.ts +23 -0
- package/dist-server/service/master-change-policy.js +134 -0
- package/dist-server/service/master-change-policy.js.map +1 -0
- package/dist-server/service/master-conformance-resolver.js +11 -1
- package/dist-server/service/master-conformance-resolver.js.map +1 -1
- package/dist-server/service/master-crud.js +9 -0
- package/dist-server/service/master-crud.js.map +1 -1
- package/dist-server/service/master-list.js +6 -0
- package/dist-server/service/master-list.js.map +1 -1
- package/dist-server/service/material/index.d.ts +3 -2
- package/dist-server/service/material/index.js +4 -2
- package/dist-server/service/material/index.js.map +1 -1
- package/dist-server/service/material/material-axis-status.d.ts +8 -0
- package/dist-server/service/material/material-axis-status.js +19 -0
- package/dist-server/service/material/material-axis-status.js.map +1 -0
- package/dist-server/service/material/material-definition.d.ts +3 -0
- package/dist-server/service/material/material-definition.js +13 -0
- package/dist-server/service/material/material-definition.js.map +1 -1
- package/dist-server/service/material/material-effective-list.d.ts +39 -0
- package/dist-server/service/material/material-effective-list.js +54 -0
- package/dist-server/service/material/material-effective-list.js.map +1 -0
- package/dist-server/service/material/material-master-resolver.js +59 -61
- package/dist-server/service/material/material-master-resolver.js.map +1 -1
- package/dist-server/service/material/material-query.js +9 -2
- package/dist-server/service/material/material-query.js.map +1 -1
- package/dist-server/service/material/material-revision-content.d.ts +10 -0
- package/dist-server/service/material/material-revision-content.js +92 -0
- package/dist-server/service/material/material-revision-content.js.map +1 -0
- package/dist-server/service/material/material-revision-resolver.d.ts +54 -0
- package/dist-server/service/material/material-revision-resolver.js +76 -0
- package/dist-server/service/material/material-revision-resolver.js.map +1 -0
- package/dist-server/service/material/material-revision-service.d.ts +144 -0
- package/dist-server/service/material/material-revision-service.js +534 -0
- package/dist-server/service/material/material-revision-service.js.map +1 -0
- package/dist-server/service/material/material-revision.d.ts +84 -0
- package/dist-server/service/material/material-revision.js +339 -0
- package/dist-server/service/material/material-revision.js.map +1 -0
- package/dist-server/service/operation/index.d.ts +1 -1
- package/dist-server/service/operation/operation-definition.js +1 -0
- package/dist-server/service/operation/operation-definition.js.map +1 -1
- package/dist-server/service/operation/operation-master-resolver.js +30 -30
- package/dist-server/service/operation/operation-master-resolver.js.map +1 -1
- package/dist-server/service/personnel/index.d.ts +2 -2
- package/dist-server/service/personnel/personnel-master-resolver.js +38 -34
- package/dist-server/service/personnel/personnel-master-resolver.js.map +1 -1
- package/dist-server/service/quality/nonconformance-cause-resolver.js +17 -14
- package/dist-server/service/quality/nonconformance-cause-resolver.js.map +1 -1
- package/dist-server/service/recipe/index.d.ts +3 -2
- package/dist-server/service/recipe/index.js +4 -2
- package/dist-server/service/recipe/index.js.map +1 -1
- package/dist-server/service/recipe/recipe-definition.d.ts +4 -0
- package/dist-server/service/recipe/recipe-definition.js +14 -1
- package/dist-server/service/recipe/recipe-definition.js.map +1 -1
- package/dist-server/service/recipe/recipe-effective-list.d.ts +49 -0
- package/dist-server/service/recipe/recipe-effective-list.js +96 -0
- package/dist-server/service/recipe/recipe-effective-list.js.map +1 -0
- package/dist-server/service/recipe/recipe-master-resolver.js +32 -28
- package/dist-server/service/recipe/recipe-master-resolver.js.map +1 -1
- package/dist-server/service/recipe/recipe-query.js +9 -2
- package/dist-server/service/recipe/recipe-query.js.map +1 -1
- package/dist-server/service/recipe/recipe-revision-content.d.ts +32 -0
- package/dist-server/service/recipe/recipe-revision-content.js +65 -0
- package/dist-server/service/recipe/recipe-revision-content.js.map +1 -0
- package/dist-server/service/recipe/recipe-revision-line.d.ts +30 -0
- package/dist-server/service/recipe/recipe-revision-line.js +95 -0
- package/dist-server/service/recipe/recipe-revision-line.js.map +1 -0
- package/dist-server/service/recipe/recipe-revision-resolver.d.ts +59 -0
- package/dist-server/service/recipe/recipe-revision-resolver.js +76 -0
- package/dist-server/service/recipe/recipe-revision-resolver.js.map +1 -0
- package/dist-server/service/recipe/recipe-revision-service.d.ts +147 -0
- package/dist-server/service/recipe/recipe-revision-service.js +591 -0
- package/dist-server/service/recipe/recipe-revision-service.js.map +1 -0
- package/dist-server/service/recipe/recipe-revision.d.ts +100 -0
- package/dist-server/service/recipe/recipe-revision.js +373 -0
- package/dist-server/service/recipe/recipe-revision.js.map +1 -0
- package/dist-server/service/recipe/route-definition.js +1 -0
- package/dist-server/service/recipe/route-definition.js.map +1 -1
- package/dist-server/service/resource/class-members.js +9 -0
- package/dist-server/service/resource/class-members.js.map +1 -1
- package/dist-server/service/status/master-status.js +2 -1
- package/dist-server/service/status/master-status.js.map +1 -1
- package/dist-server/service/test-spec/index.d.ts +3 -2
- package/dist-server/service/test-spec/index.js +4 -2
- package/dist-server/service/test-spec/index.js.map +1 -1
- package/dist-server/service/test-spec/test-spec-effective-list.d.ts +34 -0
- package/dist-server/service/test-spec/test-spec-effective-list.js +42 -0
- package/dist-server/service/test-spec/test-spec-effective-list.js.map +1 -0
- package/dist-server/service/test-spec/test-spec-master-resolver.d.ts +4 -14
- package/dist-server/service/test-spec/test-spec-master-resolver.js +12 -83
- package/dist-server/service/test-spec/test-spec-master-resolver.js.map +1 -1
- package/dist-server/service/test-spec/test-spec-query.js +7 -1
- package/dist-server/service/test-spec/test-spec-query.js.map +1 -1
- package/dist-server/service/test-spec/test-spec-revision-resolver.d.ts +53 -0
- package/dist-server/service/test-spec/test-spec-revision-resolver.js +76 -0
- package/dist-server/service/test-spec/test-spec-revision-resolver.js.map +1 -0
- package/dist-server/service/test-spec/test-spec-revision-service.d.ts +138 -0
- package/dist-server/service/test-spec/test-spec-revision-service.js +538 -0
- package/dist-server/service/test-spec/test-spec-revision-service.js.map +1 -0
- package/dist-server/service/test-spec/test-spec-revision.d.ts +84 -0
- package/dist-server/service/test-spec/test-spec-revision.js +334 -0
- package/dist-server/service/test-spec/test-spec-revision.js.map +1 -0
- package/dist-server/service/test-spec/test-specification.d.ts +6 -0
- package/dist-server/service/test-spec/test-specification.js +15 -2
- package/dist-server/service/test-spec/test-specification.js.map +1 -1
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/package.json +10 -6
- package/translations/en.json +148 -0
- package/translations/ko.json +148 -0
|
@@ -4,6 +4,8 @@ exports.PhysicalAssetResolver = exports.PhysicalAssetList = exports.PhysicalAsse
|
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const type_graphql_1 = require("type-graphql");
|
|
6
6
|
const shell_1 = require("@things-factory/shell");
|
|
7
|
+
const type_graphql_2 = require("type-graphql");
|
|
8
|
+
const shell_2 = require("@things-factory/shell");
|
|
7
9
|
const master_crud_1 = require("../master-crud");
|
|
8
10
|
const master_axis_1 = require("../master-axis");
|
|
9
11
|
const master_list_1 = require("../master-list");
|
|
@@ -24,15 +26,15 @@ let PhysicalAssetClassList = class PhysicalAssetClassList {
|
|
|
24
26
|
};
|
|
25
27
|
exports.PhysicalAssetClassList = PhysicalAssetClassList;
|
|
26
28
|
tslib_1.__decorate([
|
|
27
|
-
(0,
|
|
29
|
+
(0, type_graphql_2.Field)(type => [physical_asset_class_1.PhysicalAssetClass]),
|
|
28
30
|
tslib_1.__metadata("design:type", Array)
|
|
29
31
|
], PhysicalAssetClassList.prototype, "items", void 0);
|
|
30
32
|
tslib_1.__decorate([
|
|
31
|
-
(0,
|
|
33
|
+
(0, type_graphql_2.Field)(type => type_graphql_2.Int),
|
|
32
34
|
tslib_1.__metadata("design:type", Number)
|
|
33
35
|
], PhysicalAssetClassList.prototype, "total", void 0);
|
|
34
36
|
exports.PhysicalAssetClassList = PhysicalAssetClassList = tslib_1.__decorate([
|
|
35
|
-
(0,
|
|
37
|
+
(0, type_graphql_2.ObjectType)({ description: 'A page of physical asset classes' })
|
|
36
38
|
], PhysicalAssetClassList);
|
|
37
39
|
/**
|
|
38
40
|
* **이 등급에 무엇이 드나** — 들어오는 관계.
|
|
@@ -82,56 +84,57 @@ let PhysicalAssetClassResolver = class PhysicalAssetClassResolver {
|
|
|
82
84
|
};
|
|
83
85
|
exports.PhysicalAssetClassResolver = PhysicalAssetClassResolver;
|
|
84
86
|
tslib_1.__decorate([
|
|
85
|
-
(0,
|
|
86
|
-
(0,
|
|
87
|
-
tslib_1.__param(0, (0,
|
|
88
|
-
tslib_1.__param(1, (0,
|
|
87
|
+
(0, type_graphql_2.Directive)('@privilege(category: "ops-master", privilege: "query", domainOwnerGranted: true)'),
|
|
88
|
+
(0, type_graphql_2.Query)(returns => PhysicalAssetClassList, { description: 'To fetch physical asset classes' }),
|
|
89
|
+
tslib_1.__param(0, (0, type_graphql_2.Args)(type => shell_2.ListParam)),
|
|
90
|
+
tslib_1.__param(1, (0, type_graphql_2.Ctx)()),
|
|
89
91
|
tslib_1.__metadata("design:type", Function),
|
|
90
|
-
tslib_1.__metadata("design:paramtypes", [
|
|
92
|
+
tslib_1.__metadata("design:paramtypes", [shell_2.ListParam, Object]),
|
|
91
93
|
tslib_1.__metadata("design:returntype", Promise)
|
|
92
94
|
], PhysicalAssetClassResolver.prototype, "physicalAssetClasses", null);
|
|
93
95
|
tslib_1.__decorate([
|
|
94
|
-
(0,
|
|
95
|
-
tslib_1.__param(0, (0,
|
|
96
|
-
tslib_1.__param(1, (0,
|
|
96
|
+
(0, type_graphql_2.FieldResolver)(type => [String], { description: 'Physical assets belonging to this class' }),
|
|
97
|
+
tslib_1.__param(0, (0, type_graphql_2.Root)()),
|
|
98
|
+
tslib_1.__param(1, (0, type_graphql_2.Ctx)()),
|
|
97
99
|
tslib_1.__metadata("design:type", Function),
|
|
98
100
|
tslib_1.__metadata("design:paramtypes", [physical_asset_class_1.PhysicalAssetClass, Object]),
|
|
99
101
|
tslib_1.__metadata("design:returntype", Promise)
|
|
100
102
|
], PhysicalAssetClassResolver.prototype, "members", null);
|
|
101
103
|
tslib_1.__decorate([
|
|
102
|
-
(0,
|
|
103
|
-
tslib_1.__param(0, (0,
|
|
104
|
-
tslib_1.__param(1, (0,
|
|
104
|
+
(0, type_graphql_2.FieldResolver)(type => Boolean, { description: 'True when members were too many to scan fully' }),
|
|
105
|
+
tslib_1.__param(0, (0, type_graphql_2.Root)()),
|
|
106
|
+
tslib_1.__param(1, (0, type_graphql_2.Ctx)()),
|
|
105
107
|
tslib_1.__metadata("design:type", Function),
|
|
106
108
|
tslib_1.__metadata("design:paramtypes", [physical_asset_class_1.PhysicalAssetClass, Object]),
|
|
107
109
|
tslib_1.__metadata("design:returntype", Promise)
|
|
108
110
|
], PhysicalAssetClassResolver.prototype, "memberScanCapped", null);
|
|
109
111
|
tslib_1.__decorate([
|
|
110
|
-
(0,
|
|
111
|
-
(0,
|
|
112
|
-
(0,
|
|
113
|
-
tslib_1.__param(0, (0,
|
|
114
|
-
tslib_1.__param(1, (0,
|
|
112
|
+
(0, type_graphql_2.Directive)('@privilege(category: "ops-master", privilege: "mutation", domainOwnerGranted: true)'),
|
|
113
|
+
(0, type_graphql_2.Directive)('@transaction'),
|
|
114
|
+
(0, type_graphql_2.Mutation)(returns => [physical_asset_class_1.PhysicalAssetClass], { description: 'To create, change or retire physical asset classes' }),
|
|
115
|
+
tslib_1.__param(0, (0, type_graphql_2.Arg)('patches', type => [shell_2.ScalarObject])),
|
|
116
|
+
tslib_1.__param(1, (0, type_graphql_2.Ctx)()),
|
|
115
117
|
tslib_1.__metadata("design:type", Function),
|
|
116
118
|
tslib_1.__metadata("design:paramtypes", [Array, Object]),
|
|
117
119
|
tslib_1.__metadata("design:returntype", Promise)
|
|
118
120
|
], PhysicalAssetClassResolver.prototype, "updateMultiplePhysicalAssetClass", null);
|
|
119
121
|
exports.PhysicalAssetClassResolver = PhysicalAssetClassResolver = tslib_1.__decorate([
|
|
120
|
-
(0,
|
|
122
|
+
(0, type_graphql_2.Resolver)(physical_asset_class_1.PhysicalAssetClass),
|
|
123
|
+
(0, type_graphql_1.UseMiddleware)(shell_1.SpeakRefusals)
|
|
121
124
|
], PhysicalAssetClassResolver);
|
|
122
125
|
let PhysicalAssetList = class PhysicalAssetList {
|
|
123
126
|
};
|
|
124
127
|
exports.PhysicalAssetList = PhysicalAssetList;
|
|
125
128
|
tslib_1.__decorate([
|
|
126
|
-
(0,
|
|
129
|
+
(0, type_graphql_2.Field)(type => [physical_asset_1.PhysicalAsset]),
|
|
127
130
|
tslib_1.__metadata("design:type", Array)
|
|
128
131
|
], PhysicalAssetList.prototype, "items", void 0);
|
|
129
132
|
tslib_1.__decorate([
|
|
130
|
-
(0,
|
|
133
|
+
(0, type_graphql_2.Field)(type => type_graphql_2.Int),
|
|
131
134
|
tslib_1.__metadata("design:type", Number)
|
|
132
135
|
], PhysicalAssetList.prototype, "total", void 0);
|
|
133
136
|
exports.PhysicalAssetList = PhysicalAssetList = tslib_1.__decorate([
|
|
134
|
-
(0,
|
|
137
|
+
(0, type_graphql_2.ObjectType)({ description: 'A page of physical assets' })
|
|
135
138
|
], PhysicalAssetList);
|
|
136
139
|
let PhysicalAssetResolver = class PhysicalAssetResolver {
|
|
137
140
|
async physicalAssets(params, context) {
|
|
@@ -157,25 +160,26 @@ let PhysicalAssetResolver = class PhysicalAssetResolver {
|
|
|
157
160
|
};
|
|
158
161
|
exports.PhysicalAssetResolver = PhysicalAssetResolver;
|
|
159
162
|
tslib_1.__decorate([
|
|
160
|
-
(0,
|
|
161
|
-
(0,
|
|
162
|
-
tslib_1.__param(0, (0,
|
|
163
|
-
tslib_1.__param(1, (0,
|
|
163
|
+
(0, type_graphql_2.Directive)('@privilege(category: "ops-master", privilege: "query", domainOwnerGranted: true)'),
|
|
164
|
+
(0, type_graphql_2.Query)(returns => PhysicalAssetList, { description: 'To fetch physical assets' }),
|
|
165
|
+
tslib_1.__param(0, (0, type_graphql_2.Args)(type => shell_2.ListParam)),
|
|
166
|
+
tslib_1.__param(1, (0, type_graphql_2.Ctx)()),
|
|
164
167
|
tslib_1.__metadata("design:type", Function),
|
|
165
|
-
tslib_1.__metadata("design:paramtypes", [
|
|
168
|
+
tslib_1.__metadata("design:paramtypes", [shell_2.ListParam, Object]),
|
|
166
169
|
tslib_1.__metadata("design:returntype", Promise)
|
|
167
170
|
], PhysicalAssetResolver.prototype, "physicalAssets", null);
|
|
168
171
|
tslib_1.__decorate([
|
|
169
|
-
(0,
|
|
170
|
-
(0,
|
|
171
|
-
(0,
|
|
172
|
-
tslib_1.__param(0, (0,
|
|
173
|
-
tslib_1.__param(1, (0,
|
|
172
|
+
(0, type_graphql_2.Directive)('@privilege(category: "ops-master", privilege: "mutation", domainOwnerGranted: true)'),
|
|
173
|
+
(0, type_graphql_2.Directive)('@transaction'),
|
|
174
|
+
(0, type_graphql_2.Mutation)(returns => [physical_asset_1.PhysicalAsset], { description: 'To create, change or retire physical assets' }),
|
|
175
|
+
tslib_1.__param(0, (0, type_graphql_2.Arg)('patches', type => [shell_2.ScalarObject])),
|
|
176
|
+
tslib_1.__param(1, (0, type_graphql_2.Ctx)()),
|
|
174
177
|
tslib_1.__metadata("design:type", Function),
|
|
175
178
|
tslib_1.__metadata("design:paramtypes", [Array, Object]),
|
|
176
179
|
tslib_1.__metadata("design:returntype", Promise)
|
|
177
180
|
], PhysicalAssetResolver.prototype, "updateMultiplePhysicalAsset", null);
|
|
178
181
|
exports.PhysicalAssetResolver = PhysicalAssetResolver = tslib_1.__decorate([
|
|
179
|
-
(0,
|
|
182
|
+
(0, type_graphql_2.Resolver)(physical_asset_1.PhysicalAsset),
|
|
183
|
+
(0, type_graphql_1.UseMiddleware)(shell_1.SpeakRefusals)
|
|
180
184
|
], PhysicalAssetResolver);
|
|
181
185
|
//# sourceMappingURL=asset-master-resolver.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"asset-master-resolver.js","sourceRoot":"","sources":["../../../server/service/asset/asset-master-resolver.ts"],"names":[],"mappings":"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","sourcesContent":["import { FieldResolver, Root, Args, Arg, Ctx, Directive, Int, Mutation, ObjectType, Field, Query, Resolver } from 'type-graphql'\n\nimport { Domain, ListParam, ScalarObject } from '@things-factory/shell'\n\nimport { MasterPatch, saveMasterPatches } from '../master-crud'\nimport { masterAxisOf } from '../master-axis'\nimport { listMaster } from '../master-list'\nimport { ClassMembers, scanClassMembers } from '../resource/class-members'\nimport { PhysicalAssetClass } from './physical-asset-class'\nimport { PhysicalAsset } from './physical-asset'\n\n/**\n * 물리 자산 축을 채우고 고친다.\n *\n * ── 왜 마스터는 그리드에서 고칠 수 있나 ────────────────────────────────────\n * 업무 기록과 달리 마스터는 **선언**이다. 「이 사람이 용접 자격을 갖는다」는 일어난 일이 아니라 지금의\n * 규정이고, 규정은 바뀐다. 없앨 때 행을 지우지 않고 유효 기간의 끝을 채우는 것이 그래서다 —\n * 지우면 그것을 가리키는 지난 기록이 가리킬 것을 잃는다.\n *\n * 규칙은 `master-crud.ts` 한 곳에 있다. 여기는 축의 이름만 붙인다.\n */\n\n@ObjectType({ description: 'A page of physical asset classes' })\nexport class PhysicalAssetClassList {\n @Field(type => [PhysicalAssetClass])\n items: PhysicalAssetClass[]\n\n @Field(type => Int)\n total: number\n}\n\n/**\n * **이 등급에 무엇이 드나** — 들어오는 관계.\n *\n * 세는 방식과 상한은 `class-members.ts` 머리말에 적었다 — 등급 넷이 같은 함수를 쓴다.\n */\nfunction physicalAssetClassMembersOf(context: ResolverContext): Promise<ClassMembers> {\n const state = context.state as { domain: Domain; physicalAssetClassMembers?: Promise<ClassMembers> }\n\n state.physicalAssetClassMembers =\n state.physicalAssetClassMembers || scanClassMembers(PhysicalAsset, 'assetClassIds', state.domain)\n\n return state.physicalAssetClassMembers\n}\n\n@Resolver(PhysicalAssetClass)\nexport class PhysicalAssetClassResolver {\n @Directive('@privilege(category: \"ops-master\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => PhysicalAssetClassList, { description: 'To fetch physical asset classes' })\n async physicalAssetClasses(@Args(type => ListParam) params: ListParam, @Ctx() context: ResolverContext): Promise<PhysicalAssetClassList> {\n const { domain } = context.state\n const { items, total } = await listMaster('physicalAssetClass', params, domain)\n\n return { items: items as PhysicalAssetClass[], total }\n }\n\n /**\n * 이 등급에 든 자산들.\n *\n * 아무도 안 들면 빈 목록이다. 다만 그것이 「없다」인지 「다 못 봤다」인지는 `memberScanCapped`\n * 가 말한다.\n */\n @FieldResolver(type => [String], { description: 'Physical assets belonging to this class' })\n async members(@Root() klass: PhysicalAssetClass, @Ctx() context: ResolverContext): Promise<string[]> {\n return (await physicalAssetClassMembersOf(context)).members.get(klass.name) ?? []\n }\n\n /** 소속을 다 보지 못했나. */\n @FieldResolver(type => Boolean, { description: 'True when members were too many to scan fully' })\n async memberScanCapped(@Root() klass: PhysicalAssetClass, @Ctx() context: ResolverContext): Promise<boolean> {\n return (await physicalAssetClassMembersOf(context)).capped\n }\n\n /**\n * 그리드가 보낸 변경을 한 번에 적용한다.\n *\n * 패치를 `ScalarObject` 로 받는다 — 축마다 입력 타입을 따로 만들면 칸을 하나 더할 때마다 두 곳을\n * 고쳐야 하고, 한쪽을 빠뜨리면 그 칸이 오류 보고 없이 저장되지 않는다. 돌려주는 것은 타입이 있는\n * 엔티티라 무엇이 저장됐는지 스키마로 확인할 수 있다.\n */\n @Directive('@privilege(category: \"ops-master\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Directive('@transaction')\n @Mutation(returns => [PhysicalAssetClass], { description: 'To create, change or retire physical asset classes' })\n async updateMultiplePhysicalAssetClass(\n @Arg('patches', type => [ScalarObject]) patches: MasterPatch[],\n @Ctx() context: ResolverContext\n ): Promise<PhysicalAssetClass[]> {\n const { domain, user, tx } = context.state\n const axis = masterAxisOf('physicalAssetClass')\n\n const saved = await saveMasterPatches(tx, domain, axis.entity, patches, user, {\n hasEffectivePeriod: axis.hasEffectivePeriod\n })\n\n return saved as PhysicalAssetClass[]\n }\n}\n\n@ObjectType({ description: 'A page of physical assets' })\nexport class PhysicalAssetList {\n @Field(type => [PhysicalAsset])\n items: PhysicalAsset[]\n\n @Field(type => Int)\n total: number\n}\n\n@Resolver(PhysicalAsset)\nexport class PhysicalAssetResolver {\n @Directive('@privilege(category: \"ops-master\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => PhysicalAssetList, { description: 'To fetch physical assets' })\n async physicalAssets(@Args(type => ListParam) params: ListParam, @Ctx() context: ResolverContext): Promise<PhysicalAssetList> {\n const { domain } = context.state\n const { items, total } = await listMaster('physicalAsset', params, domain)\n\n return { items: items as PhysicalAsset[], total }\n }\n\n /**\n * 그리드가 보낸 변경을 한 번에 적용한다.\n *\n * 패치를 `ScalarObject` 로 받는다 — 축마다 입력 타입을 따로 만들면 칸을 하나 더할 때마다 두 곳을\n * 고쳐야 하고, 한쪽을 빠뜨리면 그 칸이 오류 보고 없이 저장되지 않는다. 돌려주는 것은 타입이 있는\n * 엔티티라 무엇이 저장됐는지 스키마로 확인할 수 있다.\n */\n @Directive('@privilege(category: \"ops-master\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Directive('@transaction')\n @Mutation(returns => [PhysicalAsset], { description: 'To create, change or retire physical assets' })\n async updateMultiplePhysicalAsset(\n @Arg('patches', type => [ScalarObject]) patches: MasterPatch[],\n @Ctx() context: ResolverContext\n ): Promise<PhysicalAsset[]> {\n const { domain, user, tx } = context.state\n const axis = masterAxisOf('physicalAsset')\n\n const saved = await saveMasterPatches(tx, domain, axis.entity, patches, user, {\n hasEffectivePeriod: axis.hasEffectivePeriod\n })\n\n return saved as PhysicalAsset[]\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"asset-master-resolver.js","sourceRoot":"","sources":["../../../server/service/asset/asset-master-resolver.ts"],"names":[],"mappings":"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","sourcesContent":["import { UseMiddleware } from 'type-graphql'\nimport { SpeakRefusals } from '@things-factory/shell'\nimport { FieldResolver, Root, Args, Arg, Ctx, Directive, Int, Mutation, ObjectType, Field, Query, Resolver } from 'type-graphql'\n\nimport { Domain, ListParam, ScalarObject } from '@things-factory/shell'\n\nimport { MasterPatch, saveMasterPatches } from '../master-crud'\nimport { masterAxisOf } from '../master-axis'\nimport { listMaster } from '../master-list'\nimport { ClassMembers, scanClassMembers } from '../resource/class-members'\nimport { PhysicalAssetClass } from './physical-asset-class'\nimport { PhysicalAsset } from './physical-asset'\n\n/**\n * 물리 자산 축을 채우고 고친다.\n *\n * ── 왜 마스터는 그리드에서 고칠 수 있나 ────────────────────────────────────\n * 업무 기록과 달리 마스터는 **선언**이다. 「이 사람이 용접 자격을 갖는다」는 일어난 일이 아니라 지금의\n * 규정이고, 규정은 바뀐다. 없앨 때 행을 지우지 않고 유효 기간의 끝을 채우는 것이 그래서다 —\n * 지우면 그것을 가리키는 지난 기록이 가리킬 것을 잃는다.\n *\n * 규칙은 `master-crud.ts` 한 곳에 있다. 여기는 축의 이름만 붙인다.\n */\n\n@ObjectType({ description: 'A page of physical asset classes' })\nexport class PhysicalAssetClassList {\n @Field(type => [PhysicalAssetClass])\n items: PhysicalAssetClass[]\n\n @Field(type => Int)\n total: number\n}\n\n/**\n * **이 등급에 무엇이 드나** — 들어오는 관계.\n *\n * 세는 방식과 상한은 `class-members.ts` 머리말에 적었다 — 등급 넷이 같은 함수를 쓴다.\n */\nfunction physicalAssetClassMembersOf(context: ResolverContext): Promise<ClassMembers> {\n const state = context.state as { domain: Domain; physicalAssetClassMembers?: Promise<ClassMembers> }\n\n state.physicalAssetClassMembers =\n state.physicalAssetClassMembers || scanClassMembers(PhysicalAsset, 'assetClassIds', state.domain)\n\n return state.physicalAssetClassMembers\n}\n\n@Resolver(PhysicalAssetClass)\n@UseMiddleware(SpeakRefusals)\nexport class PhysicalAssetClassResolver {\n @Directive('@privilege(category: \"ops-master\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => PhysicalAssetClassList, { description: 'To fetch physical asset classes' })\n async physicalAssetClasses(@Args(type => ListParam) params: ListParam, @Ctx() context: ResolverContext): Promise<PhysicalAssetClassList> {\n const { domain } = context.state\n const { items, total } = await listMaster('physicalAssetClass', params, domain)\n\n return { items: items as PhysicalAssetClass[], total }\n }\n\n /**\n * 이 등급에 든 자산들.\n *\n * 아무도 안 들면 빈 목록이다. 다만 그것이 「없다」인지 「다 못 봤다」인지는 `memberScanCapped`\n * 가 말한다.\n */\n @FieldResolver(type => [String], { description: 'Physical assets belonging to this class' })\n async members(@Root() klass: PhysicalAssetClass, @Ctx() context: ResolverContext): Promise<string[]> {\n return (await physicalAssetClassMembersOf(context)).members.get(klass.name) ?? []\n }\n\n /** 소속을 다 보지 못했나. */\n @FieldResolver(type => Boolean, { description: 'True when members were too many to scan fully' })\n async memberScanCapped(@Root() klass: PhysicalAssetClass, @Ctx() context: ResolverContext): Promise<boolean> {\n return (await physicalAssetClassMembersOf(context)).capped\n }\n\n /**\n * 그리드가 보낸 변경을 한 번에 적용한다.\n *\n * 패치를 `ScalarObject` 로 받는다 — 축마다 입력 타입을 따로 만들면 칸을 하나 더할 때마다 두 곳을\n * 고쳐야 하고, 한쪽을 빠뜨리면 그 칸이 오류 보고 없이 저장되지 않는다. 돌려주는 것은 타입이 있는\n * 엔티티라 무엇이 저장됐는지 스키마로 확인할 수 있다.\n */\n @Directive('@privilege(category: \"ops-master\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Directive('@transaction')\n @Mutation(returns => [PhysicalAssetClass], { description: 'To create, change or retire physical asset classes' })\n async updateMultiplePhysicalAssetClass(\n @Arg('patches', type => [ScalarObject]) patches: MasterPatch[],\n @Ctx() context: ResolverContext\n ): Promise<PhysicalAssetClass[]> {\n const { domain, user, tx } = context.state\n const axis = masterAxisOf('physicalAssetClass')\n\n const saved = await saveMasterPatches(tx, domain, axis.entity, patches, user, {\n hasEffectivePeriod: axis.hasEffectivePeriod\n })\n\n return saved as PhysicalAssetClass[]\n }\n}\n\n@ObjectType({ description: 'A page of physical assets' })\nexport class PhysicalAssetList {\n @Field(type => [PhysicalAsset])\n items: PhysicalAsset[]\n\n @Field(type => Int)\n total: number\n}\n\n@Resolver(PhysicalAsset)\n@UseMiddleware(SpeakRefusals)\nexport class PhysicalAssetResolver {\n @Directive('@privilege(category: \"ops-master\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => PhysicalAssetList, { description: 'To fetch physical assets' })\n async physicalAssets(@Args(type => ListParam) params: ListParam, @Ctx() context: ResolverContext): Promise<PhysicalAssetList> {\n const { domain } = context.state\n const { items, total } = await listMaster('physicalAsset', params, domain)\n\n return { items: items as PhysicalAsset[], total }\n }\n\n /**\n * 그리드가 보낸 변경을 한 번에 적용한다.\n *\n * 패치를 `ScalarObject` 로 받는다 — 축마다 입력 타입을 따로 만들면 칸을 하나 더할 때마다 두 곳을\n * 고쳐야 하고, 한쪽을 빠뜨리면 그 칸이 오류 보고 없이 저장되지 않는다. 돌려주는 것은 타입이 있는\n * 엔티티라 무엇이 저장됐는지 스키마로 확인할 수 있다.\n */\n @Directive('@privilege(category: \"ops-master\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Directive('@transaction')\n @Mutation(returns => [PhysicalAsset], { description: 'To create, change or retire physical assets' })\n async updateMultiplePhysicalAsset(\n @Arg('patches', type => [ScalarObject]) patches: MasterPatch[],\n @Ctx() context: ResolverContext\n ): Promise<PhysicalAsset[]> {\n const { domain, user, tx } = context.state\n const axis = masterAxisOf('physicalAsset')\n\n const saved = await saveMasterPatches(tx, domain, axis.entity, patches, user, {\n hasEffectivePeriod: axis.hasEffectivePeriod\n })\n\n return saved as PhysicalAsset[]\n }\n}\n"]}
|
|
@@ -2,5 +2,5 @@ import { AssetQuery } from './asset-query';
|
|
|
2
2
|
import { PhysicalAsset } from './physical-asset';
|
|
3
3
|
import { PhysicalAssetClass } from './physical-asset-class';
|
|
4
4
|
import { PhysicalAssetClassResolver, PhysicalAssetResolver } from './asset-master-resolver';
|
|
5
|
-
export declare const entities: (typeof
|
|
6
|
-
export declare const resolvers: (typeof
|
|
5
|
+
export declare const entities: (typeof PhysicalAsset | typeof PhysicalAssetClass)[];
|
|
6
|
+
export declare const resolvers: (typeof PhysicalAssetClassResolver | typeof PhysicalAssetResolver | typeof AssetQuery)[];
|
|
@@ -3,8 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.StopReasonResolver = exports.StopReasonList = exports.EquipmentResolver = exports.EquipmentList = exports.EquipmentClassResolver = exports.EquipmentClassList = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const type_graphql_1 = require("type-graphql");
|
|
6
|
-
const state_period_rules_js_1 = require("./state-period-rules.js");
|
|
7
6
|
const shell_1 = require("@things-factory/shell");
|
|
7
|
+
const type_graphql_2 = require("type-graphql");
|
|
8
|
+
const state_period_rules_js_1 = require("./state-period-rules.js");
|
|
9
|
+
const shell_2 = require("@things-factory/shell");
|
|
8
10
|
const master_crud_1 = require("../master-crud");
|
|
9
11
|
const master_axis_1 = require("../master-axis");
|
|
10
12
|
const master_list_1 = require("../master-list");
|
|
@@ -26,15 +28,15 @@ let EquipmentClassList = class EquipmentClassList {
|
|
|
26
28
|
};
|
|
27
29
|
exports.EquipmentClassList = EquipmentClassList;
|
|
28
30
|
tslib_1.__decorate([
|
|
29
|
-
(0,
|
|
31
|
+
(0, type_graphql_2.Field)(type => [equipment_class_1.EquipmentClass]),
|
|
30
32
|
tslib_1.__metadata("design:type", Array)
|
|
31
33
|
], EquipmentClassList.prototype, "items", void 0);
|
|
32
34
|
tslib_1.__decorate([
|
|
33
|
-
(0,
|
|
35
|
+
(0, type_graphql_2.Field)(type => type_graphql_2.Int),
|
|
34
36
|
tslib_1.__metadata("design:type", Number)
|
|
35
37
|
], EquipmentClassList.prototype, "total", void 0);
|
|
36
38
|
exports.EquipmentClassList = EquipmentClassList = tslib_1.__decorate([
|
|
37
|
-
(0,
|
|
39
|
+
(0, type_graphql_2.ObjectType)({ description: 'A page of equipment classes' })
|
|
38
40
|
], EquipmentClassList);
|
|
39
41
|
/**
|
|
40
42
|
* **이 등급에 무엇이 드나** — 들어오는 관계.
|
|
@@ -86,56 +88,57 @@ let EquipmentClassResolver = class EquipmentClassResolver {
|
|
|
86
88
|
};
|
|
87
89
|
exports.EquipmentClassResolver = EquipmentClassResolver;
|
|
88
90
|
tslib_1.__decorate([
|
|
89
|
-
(0,
|
|
90
|
-
(0,
|
|
91
|
-
tslib_1.__param(0, (0,
|
|
92
|
-
tslib_1.__param(1, (0,
|
|
91
|
+
(0, type_graphql_2.Directive)('@privilege(category: "ops-master", privilege: "query", domainOwnerGranted: true)'),
|
|
92
|
+
(0, type_graphql_2.Query)(returns => EquipmentClassList, { description: 'To fetch equipment classes' }),
|
|
93
|
+
tslib_1.__param(0, (0, type_graphql_2.Args)(type => shell_2.ListParam)),
|
|
94
|
+
tslib_1.__param(1, (0, type_graphql_2.Ctx)()),
|
|
93
95
|
tslib_1.__metadata("design:type", Function),
|
|
94
|
-
tslib_1.__metadata("design:paramtypes", [
|
|
96
|
+
tslib_1.__metadata("design:paramtypes", [shell_2.ListParam, Object]),
|
|
95
97
|
tslib_1.__metadata("design:returntype", Promise)
|
|
96
98
|
], EquipmentClassResolver.prototype, "equipmentClasses", null);
|
|
97
99
|
tslib_1.__decorate([
|
|
98
|
-
(0,
|
|
99
|
-
tslib_1.__param(0, (0,
|
|
100
|
-
tslib_1.__param(1, (0,
|
|
100
|
+
(0, type_graphql_2.FieldResolver)(type => [String], { description: 'Equipment belonging to this class' }),
|
|
101
|
+
tslib_1.__param(0, (0, type_graphql_2.Root)()),
|
|
102
|
+
tslib_1.__param(1, (0, type_graphql_2.Ctx)()),
|
|
101
103
|
tslib_1.__metadata("design:type", Function),
|
|
102
104
|
tslib_1.__metadata("design:paramtypes", [equipment_class_1.EquipmentClass, Object]),
|
|
103
105
|
tslib_1.__metadata("design:returntype", Promise)
|
|
104
106
|
], EquipmentClassResolver.prototype, "members", null);
|
|
105
107
|
tslib_1.__decorate([
|
|
106
|
-
(0,
|
|
107
|
-
tslib_1.__param(0, (0,
|
|
108
|
-
tslib_1.__param(1, (0,
|
|
108
|
+
(0, type_graphql_2.FieldResolver)(type => Boolean, { description: 'True when members were too many to scan fully' }),
|
|
109
|
+
tslib_1.__param(0, (0, type_graphql_2.Root)()),
|
|
110
|
+
tslib_1.__param(1, (0, type_graphql_2.Ctx)()),
|
|
109
111
|
tslib_1.__metadata("design:type", Function),
|
|
110
112
|
tslib_1.__metadata("design:paramtypes", [equipment_class_1.EquipmentClass, Object]),
|
|
111
113
|
tslib_1.__metadata("design:returntype", Promise)
|
|
112
114
|
], EquipmentClassResolver.prototype, "memberScanCapped", null);
|
|
113
115
|
tslib_1.__decorate([
|
|
114
|
-
(0,
|
|
115
|
-
(0,
|
|
116
|
-
(0,
|
|
117
|
-
tslib_1.__param(0, (0,
|
|
118
|
-
tslib_1.__param(1, (0,
|
|
116
|
+
(0, type_graphql_2.Directive)('@privilege(category: "ops-master", privilege: "mutation", domainOwnerGranted: true)'),
|
|
117
|
+
(0, type_graphql_2.Directive)('@transaction'),
|
|
118
|
+
(0, type_graphql_2.Mutation)(returns => [equipment_class_1.EquipmentClass], { description: 'To create, change or retire equipment classes' }),
|
|
119
|
+
tslib_1.__param(0, (0, type_graphql_2.Arg)('patches', type => [shell_2.ScalarObject])),
|
|
120
|
+
tslib_1.__param(1, (0, type_graphql_2.Ctx)()),
|
|
119
121
|
tslib_1.__metadata("design:type", Function),
|
|
120
122
|
tslib_1.__metadata("design:paramtypes", [Array, Object]),
|
|
121
123
|
tslib_1.__metadata("design:returntype", Promise)
|
|
122
124
|
], EquipmentClassResolver.prototype, "updateMultipleEquipmentClass", null);
|
|
123
125
|
exports.EquipmentClassResolver = EquipmentClassResolver = tslib_1.__decorate([
|
|
124
|
-
(0,
|
|
126
|
+
(0, type_graphql_2.Resolver)(equipment_class_1.EquipmentClass),
|
|
127
|
+
(0, type_graphql_1.UseMiddleware)(shell_1.SpeakRefusals)
|
|
125
128
|
], EquipmentClassResolver);
|
|
126
129
|
let EquipmentList = class EquipmentList {
|
|
127
130
|
};
|
|
128
131
|
exports.EquipmentList = EquipmentList;
|
|
129
132
|
tslib_1.__decorate([
|
|
130
|
-
(0,
|
|
133
|
+
(0, type_graphql_2.Field)(type => [equipment_1.Equipment]),
|
|
131
134
|
tslib_1.__metadata("design:type", Array)
|
|
132
135
|
], EquipmentList.prototype, "items", void 0);
|
|
133
136
|
tslib_1.__decorate([
|
|
134
|
-
(0,
|
|
137
|
+
(0, type_graphql_2.Field)(type => type_graphql_2.Int),
|
|
135
138
|
tslib_1.__metadata("design:type", Number)
|
|
136
139
|
], EquipmentList.prototype, "total", void 0);
|
|
137
140
|
exports.EquipmentList = EquipmentList = tslib_1.__decorate([
|
|
138
|
-
(0,
|
|
141
|
+
(0, type_graphql_2.ObjectType)({ description: 'A page of equipment' })
|
|
139
142
|
], EquipmentList);
|
|
140
143
|
let EquipmentResolver = class EquipmentResolver {
|
|
141
144
|
async equipmentList(params, context) {
|
|
@@ -161,40 +164,41 @@ let EquipmentResolver = class EquipmentResolver {
|
|
|
161
164
|
};
|
|
162
165
|
exports.EquipmentResolver = EquipmentResolver;
|
|
163
166
|
tslib_1.__decorate([
|
|
164
|
-
(0,
|
|
165
|
-
(0,
|
|
166
|
-
tslib_1.__param(0, (0,
|
|
167
|
-
tslib_1.__param(1, (0,
|
|
167
|
+
(0, type_graphql_2.Directive)('@privilege(category: "ops-master", privilege: "query", domainOwnerGranted: true)'),
|
|
168
|
+
(0, type_graphql_2.Query)(returns => EquipmentList, { description: 'To fetch equipment' }),
|
|
169
|
+
tslib_1.__param(0, (0, type_graphql_2.Args)(type => shell_2.ListParam)),
|
|
170
|
+
tslib_1.__param(1, (0, type_graphql_2.Ctx)()),
|
|
168
171
|
tslib_1.__metadata("design:type", Function),
|
|
169
|
-
tslib_1.__metadata("design:paramtypes", [
|
|
172
|
+
tslib_1.__metadata("design:paramtypes", [shell_2.ListParam, Object]),
|
|
170
173
|
tslib_1.__metadata("design:returntype", Promise)
|
|
171
174
|
], EquipmentResolver.prototype, "equipmentList", null);
|
|
172
175
|
tslib_1.__decorate([
|
|
173
|
-
(0,
|
|
174
|
-
(0,
|
|
175
|
-
(0,
|
|
176
|
-
tslib_1.__param(0, (0,
|
|
177
|
-
tslib_1.__param(1, (0,
|
|
176
|
+
(0, type_graphql_2.Directive)('@privilege(category: "ops-master", privilege: "mutation", domainOwnerGranted: true)'),
|
|
177
|
+
(0, type_graphql_2.Directive)('@transaction'),
|
|
178
|
+
(0, type_graphql_2.Mutation)(returns => [equipment_1.Equipment], { description: 'To create, change or retire equipment' }),
|
|
179
|
+
tslib_1.__param(0, (0, type_graphql_2.Arg)('patches', type => [shell_2.ScalarObject])),
|
|
180
|
+
tslib_1.__param(1, (0, type_graphql_2.Ctx)()),
|
|
178
181
|
tslib_1.__metadata("design:type", Function),
|
|
179
182
|
tslib_1.__metadata("design:paramtypes", [Array, Object]),
|
|
180
183
|
tslib_1.__metadata("design:returntype", Promise)
|
|
181
184
|
], EquipmentResolver.prototype, "updateMultipleEquipment", null);
|
|
182
185
|
exports.EquipmentResolver = EquipmentResolver = tslib_1.__decorate([
|
|
183
|
-
(0,
|
|
186
|
+
(0, type_graphql_2.Resolver)(equipment_1.Equipment),
|
|
187
|
+
(0, type_graphql_1.UseMiddleware)(shell_1.SpeakRefusals)
|
|
184
188
|
], EquipmentResolver);
|
|
185
189
|
let StopReasonList = class StopReasonList {
|
|
186
190
|
};
|
|
187
191
|
exports.StopReasonList = StopReasonList;
|
|
188
192
|
tslib_1.__decorate([
|
|
189
|
-
(0,
|
|
193
|
+
(0, type_graphql_2.Field)(type => [stop_reason_1.StopReason]),
|
|
190
194
|
tslib_1.__metadata("design:type", Array)
|
|
191
195
|
], StopReasonList.prototype, "items", void 0);
|
|
192
196
|
tslib_1.__decorate([
|
|
193
|
-
(0,
|
|
197
|
+
(0, type_graphql_2.Field)(type => type_graphql_2.Int),
|
|
194
198
|
tslib_1.__metadata("design:type", Number)
|
|
195
199
|
], StopReasonList.prototype, "total", void 0);
|
|
196
200
|
exports.StopReasonList = StopReasonList = tslib_1.__decorate([
|
|
197
|
-
(0,
|
|
201
|
+
(0, type_graphql_2.ObjectType)({ description: 'A page of stop reasons' })
|
|
198
202
|
], StopReasonList);
|
|
199
203
|
let StopReasonResolver = class StopReasonResolver {
|
|
200
204
|
async stopReasonList(params, context) {
|
|
@@ -234,25 +238,26 @@ let StopReasonResolver = class StopReasonResolver {
|
|
|
234
238
|
};
|
|
235
239
|
exports.StopReasonResolver = StopReasonResolver;
|
|
236
240
|
tslib_1.__decorate([
|
|
237
|
-
(0,
|
|
238
|
-
(0,
|
|
239
|
-
tslib_1.__param(0, (0,
|
|
240
|
-
tslib_1.__param(1, (0,
|
|
241
|
+
(0, type_graphql_2.Directive)('@privilege(category: "ops-master", privilege: "query", domainOwnerGranted: true)'),
|
|
242
|
+
(0, type_graphql_2.Query)(returns => StopReasonList, { description: 'To fetch stop reasons' }),
|
|
243
|
+
tslib_1.__param(0, (0, type_graphql_2.Args)(type => shell_2.ListParam)),
|
|
244
|
+
tslib_1.__param(1, (0, type_graphql_2.Ctx)()),
|
|
241
245
|
tslib_1.__metadata("design:type", Function),
|
|
242
|
-
tslib_1.__metadata("design:paramtypes", [
|
|
246
|
+
tslib_1.__metadata("design:paramtypes", [shell_2.ListParam, Object]),
|
|
243
247
|
tslib_1.__metadata("design:returntype", Promise)
|
|
244
248
|
], StopReasonResolver.prototype, "stopReasonList", null);
|
|
245
249
|
tslib_1.__decorate([
|
|
246
|
-
(0,
|
|
247
|
-
(0,
|
|
248
|
-
(0,
|
|
249
|
-
tslib_1.__param(0, (0,
|
|
250
|
-
tslib_1.__param(1, (0,
|
|
250
|
+
(0, type_graphql_2.Directive)('@privilege(category: "ops-master", privilege: "mutation", domainOwnerGranted: true)'),
|
|
251
|
+
(0, type_graphql_2.Directive)('@transaction'),
|
|
252
|
+
(0, type_graphql_2.Mutation)(returns => [stop_reason_1.StopReason], { description: 'To create, change or retire stop reasons' }),
|
|
253
|
+
tslib_1.__param(0, (0, type_graphql_2.Arg)('patches', type => [shell_2.ScalarObject])),
|
|
254
|
+
tslib_1.__param(1, (0, type_graphql_2.Ctx)()),
|
|
251
255
|
tslib_1.__metadata("design:type", Function),
|
|
252
256
|
tslib_1.__metadata("design:paramtypes", [Array, Object]),
|
|
253
257
|
tslib_1.__metadata("design:returntype", Promise)
|
|
254
258
|
], StopReasonResolver.prototype, "updateMultipleStopReason", null);
|
|
255
259
|
exports.StopReasonResolver = StopReasonResolver = tslib_1.__decorate([
|
|
256
|
-
(0,
|
|
260
|
+
(0, type_graphql_2.Resolver)(stop_reason_1.StopReason),
|
|
261
|
+
(0, type_graphql_1.UseMiddleware)(shell_1.SpeakRefusals)
|
|
257
262
|
], StopReasonResolver);
|
|
258
263
|
//# sourceMappingURL=equipment-master-resolver.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"equipment-master-resolver.js","sourceRoot":"","sources":["../../../server/service/equipment/equipment-master-resolver.ts"],"names":[],"mappings":"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","sourcesContent":["import { FieldResolver, Root, Args, Arg, Ctx, Directive, Int, Mutation, ObjectType, Field, Query, Resolver } from 'type-graphql'\nimport { stopReasonStatusGap } from './state-period-rules.js'\n\nimport { Domain, ListParam, ScalarObject } from '@things-factory/shell'\n\nimport { MasterPatch, saveMasterPatches } from '../master-crud'\nimport { masterAxisOf } from '../master-axis'\nimport { listMaster } from '../master-list'\nimport { ClassMembers, scanClassMembers } from '../resource/class-members'\nimport { EquipmentClass } from './equipment-class'\nimport { Equipment } from './equipment'\nimport { StopReason } from './stop-reason'\n\n/**\n * 설비 축을 채우고 고친다.\n *\n * ── 왜 마스터는 그리드에서 고칠 수 있나 ────────────────────────────────────\n * 업무 기록과 달리 마스터는 **선언**이다. 「이 사람이 용접 자격을 갖는다」는 일어난 일이 아니라 지금의\n * 규정이고, 규정은 바뀐다. 없앨 때 행을 지우지 않고 유효 기간의 끝을 채우는 것이 그래서다 —\n * 지우면 그것을 가리키는 지난 기록이 가리킬 것을 잃는다.\n *\n * 규칙은 `master-crud.ts` 한 곳에 있다. 여기는 축의 이름만 붙인다.\n */\n\n@ObjectType({ description: 'A page of equipment classes' })\nexport class EquipmentClassList {\n @Field(type => [EquipmentClass])\n items: EquipmentClass[]\n\n @Field(type => Int)\n total: number\n}\n\n/**\n * **이 등급에 무엇이 드나** — 들어오는 관계.\n *\n * 등급을 만들어 놓고 아무도 안 들어 있는 일이 실제로 있었다. 화면에는 등급 이름만 있어서 그 사실이\n * 안 보였다. 없앨 때 무엇이 딸려 자격을 잃는지도 알 수 없었다.\n *\n * 세는 방식과 상한은 `class-members.ts` 머리말에 적었다 — 등급 넷이 같은 함수를 쓴다.\n */\nfunction equipmentClassMembersOf(context: ResolverContext): Promise<ClassMembers> {\n const state = context.state as { domain: Domain; equipmentClassMembers?: Promise<ClassMembers> }\n\n state.equipmentClassMembers = state.equipmentClassMembers || scanClassMembers(Equipment, 'equipmentClassIds', state.domain)\n\n return state.equipmentClassMembers\n}\n\n@Resolver(EquipmentClass)\nexport class EquipmentClassResolver {\n @Directive('@privilege(category: \"ops-master\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => EquipmentClassList, { description: 'To fetch equipment classes' })\n async equipmentClasses(@Args(type => ListParam) params: ListParam, @Ctx() context: ResolverContext): Promise<EquipmentClassList> {\n const { domain } = context.state\n const { items, total } = await listMaster('equipmentClass', params, domain)\n\n return { items: items as EquipmentClass[], total }\n }\n\n /**\n * 이 등급에 든 설비들\n *\n * 아무도 안 들면 빈 목록이다. 다만 그것이 「없다」인지 「다 못 봤다」인지는 `memberScanCapped`\n * 가 말한다 — 조용히 자르면 고쳐야 할 선언과 멀쩡한 등급이 같아 보인다.\n */\n @FieldResolver(type => [String], { description: 'Equipment belonging to this class' })\n async members(@Root() klass: EquipmentClass, @Ctx() context: ResolverContext): Promise<string[]> {\n return (await equipmentClassMembersOf(context)).members.get(klass.name) ?? []\n }\n\n /** 소속을 다 보지 못했나. */\n @FieldResolver(type => Boolean, { description: 'True when members were too many to scan fully' })\n async memberScanCapped(@Root() klass: EquipmentClass, @Ctx() context: ResolverContext): Promise<boolean> {\n return (await equipmentClassMembersOf(context)).capped\n }\n\n /**\n * 그리드가 보낸 변경을 한 번에 적용한다.\n *\n * 패치를 `ScalarObject` 로 받는다 — 축마다 입력 타입을 따로 만들면 칸을 하나 더할 때마다 두 곳을\n * 고쳐야 하고, 한쪽을 빠뜨리면 그 칸이 오류 보고 없이 저장되지 않는다. 돌려주는 것은 타입이 있는\n * 엔티티라 무엇이 저장됐는지 스키마로 확인할 수 있다.\n */\n @Directive('@privilege(category: \"ops-master\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Directive('@transaction')\n @Mutation(returns => [EquipmentClass], { description: 'To create, change or retire equipment classes' })\n async updateMultipleEquipmentClass(\n @Arg('patches', type => [ScalarObject]) patches: MasterPatch[],\n @Ctx() context: ResolverContext\n ): Promise<EquipmentClass[]> {\n const { domain, user, tx } = context.state\n const axis = masterAxisOf('equipmentClass')\n\n const saved = await saveMasterPatches(tx, domain, axis.entity, patches, user, {\n hasEffectivePeriod: axis.hasEffectivePeriod\n })\n\n return saved as EquipmentClass[]\n }\n}\n\n@ObjectType({ description: 'A page of equipment' })\nexport class EquipmentList {\n @Field(type => [Equipment])\n items: Equipment[]\n\n @Field(type => Int)\n total: number\n}\n\n@Resolver(Equipment)\nexport class EquipmentResolver {\n @Directive('@privilege(category: \"ops-master\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => EquipmentList, { description: 'To fetch equipment' })\n async equipmentList(@Args(type => ListParam) params: ListParam, @Ctx() context: ResolverContext): Promise<EquipmentList> {\n const { domain } = context.state\n const { items, total } = await listMaster('equipment', params, domain)\n\n return { items: items as Equipment[], total }\n }\n\n /**\n * 그리드가 보낸 변경을 한 번에 적용한다.\n *\n * 패치를 `ScalarObject` 로 받는다 — 축마다 입력 타입을 따로 만들면 칸을 하나 더할 때마다 두 곳을\n * 고쳐야 하고, 한쪽을 빠뜨리면 그 칸이 오류 보고 없이 저장되지 않는다. 돌려주는 것은 타입이 있는\n * 엔티티라 무엇이 저장됐는지 스키마로 확인할 수 있다.\n */\n @Directive('@privilege(category: \"ops-master\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Directive('@transaction')\n @Mutation(returns => [Equipment], { description: 'To create, change or retire equipment' })\n async updateMultipleEquipment(\n @Arg('patches', type => [ScalarObject]) patches: MasterPatch[],\n @Ctx() context: ResolverContext\n ): Promise<Equipment[]> {\n const { domain, user, tx } = context.state\n const axis = masterAxisOf('equipment')\n\n const saved = await saveMasterPatches(tx, domain, axis.entity, patches, user, {\n hasEffectivePeriod: axis.hasEffectivePeriod\n })\n\n return saved as Equipment[]\n }\n}\n\n@ObjectType({ description: 'A page of stop reasons' })\nexport class StopReasonList {\n @Field(type => [StopReason])\n items: StopReason[]\n\n @Field(type => Int)\n total: number\n}\n\n@Resolver(StopReason)\nexport class StopReasonResolver {\n @Directive('@privilege(category: \"ops-master\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => StopReasonList, { description: 'To fetch stop reasons' })\n async stopReasonList(@Args(type => ListParam) params: ListParam, @Ctx() context: ResolverContext): Promise<StopReasonList> {\n const { domain } = context.state\n const { items, total } = await listMaster('stopReason', params, domain)\n\n return { items: items as StopReason[], total }\n }\n\n /**\n * 그리드가 보낸 변경을 한 번에 적용한다.\n *\n * 패치를 `ScalarObject` 로 받는다 — 축마다 입력 타입을 따로 만들면 칸을 하나 더할 때마다 두 곳을\n * 고쳐야 하고, 한쪽을 빠뜨리면 그 칸이 오류 보고 없이 저장되지 않는다. 돌려주는 것은 타입이 있는\n * 엔티티라 무엇이 저장됐는지 스키마로 확인할 수 있다.\n */\n @Directive('@privilege(category: \"ops-master\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Directive('@transaction')\n @Mutation(returns => [StopReason], { description: 'To create, change or retire stop reasons' })\n async updateMultipleStopReason(\n @Arg('patches', type => [ScalarObject]) patches: MasterPatch[],\n @Ctx() context: ResolverContext\n ): Promise<StopReason[]> {\n const { domain, user, tx } = context.state\n const axis = masterAxisOf('stopReason')\n\n /*\n * **모르는 상태로는 저장하지 않는다.** 이 값이 가동률을 깎느냐 마느냐를 정하므로, 목록 밖 값이\n * 들어오면 그 사유를 쓴 구간이 전부 어긋남으로 걸린다 — 잘못은 여기서 났는데 불은 거기서 켜진다.\n *\n * 지우는 패치(`retire`)는 상태를 다시 말하지 않으므로 값이 있을 때만 본다.\n */\n for (const patch of patches) {\n const said = (patch as any)?.status\n if (said === undefined || said === null) continue\n\n const gap = stopReasonStatusGap(said)\n if (gap) throw new Error(`정지 사유 \"${(patch as any)?.name ?? ''}\" — ${gap}`)\n }\n\n const saved = await saveMasterPatches(tx, domain, axis.entity, patches, user, {\n hasEffectivePeriod: axis.hasEffectivePeriod\n })\n\n return saved as StopReason[]\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"equipment-master-resolver.js","sourceRoot":"","sources":["../../../server/service/equipment/equipment-master-resolver.ts"],"names":[],"mappings":"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","sourcesContent":["import { UseMiddleware } from 'type-graphql'\nimport { SpeakRefusals } from '@things-factory/shell'\nimport { FieldResolver, Root, Args, Arg, Ctx, Directive, Int, Mutation, ObjectType, Field, Query, Resolver } from 'type-graphql'\nimport { stopReasonStatusGap } from './state-period-rules.js'\n\nimport { Domain, ListParam, ScalarObject } from '@things-factory/shell'\n\nimport { MasterPatch, saveMasterPatches } from '../master-crud'\nimport { masterAxisOf } from '../master-axis'\nimport { listMaster } from '../master-list'\nimport { ClassMembers, scanClassMembers } from '../resource/class-members'\nimport { EquipmentClass } from './equipment-class'\nimport { Equipment } from './equipment'\nimport { StopReason } from './stop-reason'\n\n/**\n * 설비 축을 채우고 고친다.\n *\n * ── 왜 마스터는 그리드에서 고칠 수 있나 ────────────────────────────────────\n * 업무 기록과 달리 마스터는 **선언**이다. 「이 사람이 용접 자격을 갖는다」는 일어난 일이 아니라 지금의\n * 규정이고, 규정은 바뀐다. 없앨 때 행을 지우지 않고 유효 기간의 끝을 채우는 것이 그래서다 —\n * 지우면 그것을 가리키는 지난 기록이 가리킬 것을 잃는다.\n *\n * 규칙은 `master-crud.ts` 한 곳에 있다. 여기는 축의 이름만 붙인다.\n */\n\n@ObjectType({ description: 'A page of equipment classes' })\nexport class EquipmentClassList {\n @Field(type => [EquipmentClass])\n items: EquipmentClass[]\n\n @Field(type => Int)\n total: number\n}\n\n/**\n * **이 등급에 무엇이 드나** — 들어오는 관계.\n *\n * 등급을 만들어 놓고 아무도 안 들어 있는 일이 실제로 있었다. 화면에는 등급 이름만 있어서 그 사실이\n * 안 보였다. 없앨 때 무엇이 딸려 자격을 잃는지도 알 수 없었다.\n *\n * 세는 방식과 상한은 `class-members.ts` 머리말에 적었다 — 등급 넷이 같은 함수를 쓴다.\n */\nfunction equipmentClassMembersOf(context: ResolverContext): Promise<ClassMembers> {\n const state = context.state as { domain: Domain; equipmentClassMembers?: Promise<ClassMembers> }\n\n state.equipmentClassMembers = state.equipmentClassMembers || scanClassMembers(Equipment, 'equipmentClassIds', state.domain)\n\n return state.equipmentClassMembers\n}\n\n@Resolver(EquipmentClass)\n@UseMiddleware(SpeakRefusals)\nexport class EquipmentClassResolver {\n @Directive('@privilege(category: \"ops-master\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => EquipmentClassList, { description: 'To fetch equipment classes' })\n async equipmentClasses(@Args(type => ListParam) params: ListParam, @Ctx() context: ResolverContext): Promise<EquipmentClassList> {\n const { domain } = context.state\n const { items, total } = await listMaster('equipmentClass', params, domain)\n\n return { items: items as EquipmentClass[], total }\n }\n\n /**\n * 이 등급에 든 설비들\n *\n * 아무도 안 들면 빈 목록이다. 다만 그것이 「없다」인지 「다 못 봤다」인지는 `memberScanCapped`\n * 가 말한다 — 조용히 자르면 고쳐야 할 선언과 멀쩡한 등급이 같아 보인다.\n */\n @FieldResolver(type => [String], { description: 'Equipment belonging to this class' })\n async members(@Root() klass: EquipmentClass, @Ctx() context: ResolverContext): Promise<string[]> {\n return (await equipmentClassMembersOf(context)).members.get(klass.name) ?? []\n }\n\n /** 소속을 다 보지 못했나. */\n @FieldResolver(type => Boolean, { description: 'True when members were too many to scan fully' })\n async memberScanCapped(@Root() klass: EquipmentClass, @Ctx() context: ResolverContext): Promise<boolean> {\n return (await equipmentClassMembersOf(context)).capped\n }\n\n /**\n * 그리드가 보낸 변경을 한 번에 적용한다.\n *\n * 패치를 `ScalarObject` 로 받는다 — 축마다 입력 타입을 따로 만들면 칸을 하나 더할 때마다 두 곳을\n * 고쳐야 하고, 한쪽을 빠뜨리면 그 칸이 오류 보고 없이 저장되지 않는다. 돌려주는 것은 타입이 있는\n * 엔티티라 무엇이 저장됐는지 스키마로 확인할 수 있다.\n */\n @Directive('@privilege(category: \"ops-master\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Directive('@transaction')\n @Mutation(returns => [EquipmentClass], { description: 'To create, change or retire equipment classes' })\n async updateMultipleEquipmentClass(\n @Arg('patches', type => [ScalarObject]) patches: MasterPatch[],\n @Ctx() context: ResolverContext\n ): Promise<EquipmentClass[]> {\n const { domain, user, tx } = context.state\n const axis = masterAxisOf('equipmentClass')\n\n const saved = await saveMasterPatches(tx, domain, axis.entity, patches, user, {\n hasEffectivePeriod: axis.hasEffectivePeriod\n })\n\n return saved as EquipmentClass[]\n }\n}\n\n@ObjectType({ description: 'A page of equipment' })\nexport class EquipmentList {\n @Field(type => [Equipment])\n items: Equipment[]\n\n @Field(type => Int)\n total: number\n}\n\n@Resolver(Equipment)\n@UseMiddleware(SpeakRefusals)\nexport class EquipmentResolver {\n @Directive('@privilege(category: \"ops-master\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => EquipmentList, { description: 'To fetch equipment' })\n async equipmentList(@Args(type => ListParam) params: ListParam, @Ctx() context: ResolverContext): Promise<EquipmentList> {\n const { domain } = context.state\n const { items, total } = await listMaster('equipment', params, domain)\n\n return { items: items as Equipment[], total }\n }\n\n /**\n * 그리드가 보낸 변경을 한 번에 적용한다.\n *\n * 패치를 `ScalarObject` 로 받는다 — 축마다 입력 타입을 따로 만들면 칸을 하나 더할 때마다 두 곳을\n * 고쳐야 하고, 한쪽을 빠뜨리면 그 칸이 오류 보고 없이 저장되지 않는다. 돌려주는 것은 타입이 있는\n * 엔티티라 무엇이 저장됐는지 스키마로 확인할 수 있다.\n */\n @Directive('@privilege(category: \"ops-master\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Directive('@transaction')\n @Mutation(returns => [Equipment], { description: 'To create, change or retire equipment' })\n async updateMultipleEquipment(\n @Arg('patches', type => [ScalarObject]) patches: MasterPatch[],\n @Ctx() context: ResolverContext\n ): Promise<Equipment[]> {\n const { domain, user, tx } = context.state\n const axis = masterAxisOf('equipment')\n\n const saved = await saveMasterPatches(tx, domain, axis.entity, patches, user, {\n hasEffectivePeriod: axis.hasEffectivePeriod\n })\n\n return saved as Equipment[]\n }\n}\n\n@ObjectType({ description: 'A page of stop reasons' })\nexport class StopReasonList {\n @Field(type => [StopReason])\n items: StopReason[]\n\n @Field(type => Int)\n total: number\n}\n\n@Resolver(StopReason)\n@UseMiddleware(SpeakRefusals)\nexport class StopReasonResolver {\n @Directive('@privilege(category: \"ops-master\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => StopReasonList, { description: 'To fetch stop reasons' })\n async stopReasonList(@Args(type => ListParam) params: ListParam, @Ctx() context: ResolverContext): Promise<StopReasonList> {\n const { domain } = context.state\n const { items, total } = await listMaster('stopReason', params, domain)\n\n return { items: items as StopReason[], total }\n }\n\n /**\n * 그리드가 보낸 변경을 한 번에 적용한다.\n *\n * 패치를 `ScalarObject` 로 받는다 — 축마다 입력 타입을 따로 만들면 칸을 하나 더할 때마다 두 곳을\n * 고쳐야 하고, 한쪽을 빠뜨리면 그 칸이 오류 보고 없이 저장되지 않는다. 돌려주는 것은 타입이 있는\n * 엔티티라 무엇이 저장됐는지 스키마로 확인할 수 있다.\n */\n @Directive('@privilege(category: \"ops-master\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Directive('@transaction')\n @Mutation(returns => [StopReason], { description: 'To create, change or retire stop reasons' })\n async updateMultipleStopReason(\n @Arg('patches', type => [ScalarObject]) patches: MasterPatch[],\n @Ctx() context: ResolverContext\n ): Promise<StopReason[]> {\n const { domain, user, tx } = context.state\n const axis = masterAxisOf('stopReason')\n\n /*\n * **모르는 상태로는 저장하지 않는다.** 이 값이 가동률을 깎느냐 마느냐를 정하므로, 목록 밖 값이\n * 들어오면 그 사유를 쓴 구간이 전부 어긋남으로 걸린다 — 잘못은 여기서 났는데 불은 거기서 켜진다.\n *\n * 지우는 패치(`retire`)는 상태를 다시 말하지 않으므로 값이 있을 때만 본다.\n */\n for (const patch of patches) {\n const said = (patch as any)?.status\n if (said === undefined || said === null) continue\n\n const gap = stopReasonStatusGap(said)\n if (gap) throw new Error(`정지 사유 \"${(patch as any)?.name ?? ''}\" — ${gap}`)\n }\n\n const saved = await saveMasterPatches(tx, domain, axis.entity, patches, user, {\n hasEffectivePeriod: axis.hasEffectivePeriod\n })\n\n return saved as StopReason[]\n }\n}\n"]}
|
|
@@ -4,5 +4,5 @@ import { EquipmentQuery } from './equipment-query';
|
|
|
4
4
|
import { StopReason } from './stop-reason';
|
|
5
5
|
import { StopReasonQuery } from './stop-reason-query';
|
|
6
6
|
import { EquipmentClassResolver, EquipmentResolver, StopReasonResolver } from './equipment-master-resolver';
|
|
7
|
-
export declare const entities: (typeof
|
|
8
|
-
export declare const resolvers: (typeof
|
|
7
|
+
export declare const entities: (typeof Equipment | typeof EquipmentClass | typeof StopReason)[];
|
|
8
|
+
export declare const resolvers: (typeof EquipmentClassResolver | typeof EquipmentResolver | typeof StopReasonResolver | typeof EquipmentQuery | typeof StopReasonQuery)[];
|
|
@@ -9,6 +9,7 @@ export * from './recipe/recipe-master-resolver';
|
|
|
9
9
|
export * from './test-spec/test-spec-master-resolver';
|
|
10
10
|
export * from './master-crud';
|
|
11
11
|
export * from './master-axis';
|
|
12
|
+
export * from './master-change-policy';
|
|
12
13
|
export * from './master-conformance';
|
|
13
14
|
export * from './master-conformance-resolver';
|
|
14
15
|
export * from './master-list';
|
|
@@ -33,6 +34,10 @@ export * from './location/location-master';
|
|
|
33
34
|
export * from './location/location-query';
|
|
34
35
|
export * from './material/material-class';
|
|
35
36
|
export * from './material/material-definition';
|
|
37
|
+
export * from './material/material-revision';
|
|
38
|
+
export * from './material/material-revision-service';
|
|
39
|
+
export * from './material/material-revision-resolver';
|
|
40
|
+
export * from './material/material-effective-list';
|
|
36
41
|
export * from './material/material-master';
|
|
37
42
|
export * from './material/material-query';
|
|
38
43
|
export * from './operation/operation-definition';
|
|
@@ -41,17 +46,28 @@ export * from './operation/operation-query';
|
|
|
41
46
|
export * from './operation/operation-readiness';
|
|
42
47
|
export * from './operation/operation-readiness-resolver';
|
|
43
48
|
export * from './recipe/recipe-definition';
|
|
49
|
+
export * from './recipe/recipe-revision';
|
|
50
|
+
export * from './recipe/recipe-revision-line';
|
|
51
|
+
export * from './recipe/recipe-revision-content';
|
|
52
|
+
export * from './recipe/recipe-revision-service';
|
|
53
|
+
export * from './recipe/recipe-revision-resolver';
|
|
54
|
+
export * from './recipe/recipe-effective-list';
|
|
44
55
|
export * from './recipe/route-definition';
|
|
45
56
|
export * from './recipe/recipe-master';
|
|
46
57
|
export * from './recipe/recipe-query';
|
|
47
58
|
export * from './test-spec/test-specification';
|
|
59
|
+
export * from './test-spec/test-spec-revision';
|
|
60
|
+
export * from './test-spec/test-spec-revision-service';
|
|
61
|
+
export * from './test-spec/test-spec-revision-resolver';
|
|
62
|
+
export * from './test-spec/test-spec-effective-list';
|
|
48
63
|
export * from './test-spec/test-spec-master';
|
|
49
64
|
export * from './test-spec/test-spec-query';
|
|
50
65
|
export * from './status/axis-stamp';
|
|
51
66
|
export * from './status/master-status';
|
|
52
67
|
export * from './quality/nonconformance-cause';
|
|
53
68
|
import { MasterConformanceResolver } from './master-conformance-resolver';
|
|
54
|
-
|
|
69
|
+
import { MasterChangePolicy, MasterChangePolicyResolver } from './master-change-policy';
|
|
70
|
+
export declare const entities: (typeof import("./equipment/equipment").Equipment | typeof import("./equipment/equipment-class").EquipmentClass | typeof import("./quality/nonconformance-cause").NonconformanceCause | typeof import("./material/material-definition").MaterialDefinition | typeof import("./operation/operation-definition").OperationDefinition | typeof import("./location/operational-location").OperationalLocation | typeof import("./personnel/person").Person | typeof import("./asset/physical-asset").PhysicalAsset | typeof import("./recipe").RecipeDefinition | typeof import("./recipe").RouteDefinition | typeof import("./test-spec/test-specification").TestSpecification | typeof MasterChangePolicy | typeof import("./recipe/recipe-revision-line").RecipeRevisionOutput | typeof import("./recipe/recipe-revision").RecipeRevision | typeof import("./recipe/recipe-revision").RecipePlan | typeof import("./recipe/recipe-revision").RecipeSegment | typeof import("./recipe/recipe-revision").RecipeBasis | typeof import("./material/material-revision").MaterialDefinitionRevision | typeof import("./material/material-revision").MaterialDefinitionPlan | typeof import("./material/material-revision").MaterialDefinitionSegment | typeof import("./material/material-revision").MaterialDefinitionBasis | typeof import("./test-spec/test-spec-revision").TestSpecificationRevision | typeof import("./test-spec/test-spec-revision").TestSpecificationPlan | typeof import("./test-spec/test-spec-revision").TestSpecificationSegment | typeof import("./test-spec/test-spec-revision").TestSpecificationBasis)[];
|
|
55
71
|
export declare const schema: {
|
|
56
|
-
resolverClasses: (typeof import("./
|
|
72
|
+
resolverClasses: (typeof MasterChangePolicyResolver | typeof import("./personnel/personnel-master-resolver").PersonnelClassResolver | typeof import("./personnel/personnel-master-resolver").PersonResolver | typeof import("./equipment/equipment-master-resolver").EquipmentClassResolver | typeof import("./equipment/equipment-master-resolver").EquipmentResolver | typeof import("./equipment/equipment-master-resolver").StopReasonResolver | typeof import("./asset/asset-master-resolver").PhysicalAssetClassResolver | typeof import("./asset/asset-master-resolver").PhysicalAssetResolver | typeof import("./material/material-master-resolver").MaterialClassResolver | typeof import("./material/material-master-resolver").MaterialDefinitionResolver | typeof import("./location/location-master-resolver").OperationalLocationResolver | typeof import("./operation/operation-master-resolver").OperationDefinitionResolver | typeof import("./recipe/recipe-master-resolver").RecipeDefinitionResolver | typeof import("./recipe/recipe-master-resolver").RouteDefinitionResolver | typeof import("./test-spec/test-spec-master-resolver").TestSpecificationResolver | typeof MasterConformanceResolver | typeof import("./personnel/personnel-query").PersonnelQuery | typeof import("./equipment/equipment-query").EquipmentQuery | typeof import("./asset/asset-query").AssetQuery | typeof import("./location/location-query").LocationQuery | typeof import("./material/material-revision-resolver").MaterialDefinitionRevisionResolver | typeof import("./material/material-query").MaterialQuery | typeof import("./operation/operation-query").OperationQuery | typeof import("./operation/operation-readiness-resolver").OperationReadinessResolver | typeof import("./recipe/recipe-revision-resolver").RecipeRevisionResolver | typeof import("./recipe/recipe-query").RecipeQuery | typeof import("./test-spec/test-spec-revision-resolver").TestSpecificationRevisionResolver | typeof import("./test-spec/test-spec-query").TestSpecificationQuery | typeof import("./status/master-status").OpsMasterStatusQuery | typeof import("./equipment/stop-reason-query").StopReasonQuery | typeof import("./quality/nonconformance-cause-resolver").NonconformanceCauseResolver)[];
|
|
57
73
|
};
|