@things-factory/integration-base 9.0.0-beta.80 → 9.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist-server/engine/task/headless-scrap.js +10 -1
- package/dist-server/engine/task/headless-scrap.js.map +1 -1
- package/dist-server/service/analysis/analysis-query.d.ts +3 -0
- package/dist-server/service/analysis/analysis-query.js +6 -1
- package/dist-server/service/analysis/analysis-query.js.map +1 -1
- package/dist-server/service/connection/connection-mutation.js +10 -8
- package/dist-server/service/connection/connection-mutation.js.map +1 -1
- package/dist-server/service/connection/connection-query.d.ts +3 -0
- package/dist-server/service/connection/connection-query.js +10 -3
- package/dist-server/service/connection/connection-query.js.map +1 -1
- package/dist-server/service/connection/connection-subscription.js +5 -1
- package/dist-server/service/connection/connection-subscription.js.map +1 -1
- package/dist-server/service/connection/connection-type.d.ts +1 -1
- package/dist-server/service/connection/connection-type.js +52 -46
- package/dist-server/service/connection/connection-type.js.map +1 -1
- package/dist-server/service/connector/connector-query.d.ts +4 -1
- package/dist-server/service/connector/connector-query.js +8 -5
- package/dist-server/service/connector/connector-query.js.map +1 -1
- package/dist-server/service/connector/connector-type.js +12 -9
- package/dist-server/service/connector/connector-type.js.map +1 -1
- package/dist-server/service/payload-log/payload-log-mutation.js +5 -5
- package/dist-server/service/payload-log/payload-log-mutation.js.map +1 -1
- package/dist-server/service/payload-log/payload-log-query.d.ts +3 -0
- package/dist-server/service/payload-log/payload-log-query.js +5 -2
- package/dist-server/service/payload-log/payload-log-query.js.map +1 -1
- package/dist-server/service/payload-log/payload-log-type.js +11 -11
- package/dist-server/service/payload-log/payload-log-type.js.map +1 -1
- package/dist-server/service/payload-log/payload-log.d.ts +1 -1
- package/dist-server/service/payload-log/payload-log.js +18 -14
- package/dist-server/service/payload-log/payload-log.js.map +1 -1
- package/dist-server/service/property-spec.js +12 -7
- package/dist-server/service/property-spec.js.map +1 -1
- package/dist-server/service/scenario/scenario-mutation.js +15 -14
- package/dist-server/service/scenario/scenario-mutation.js.map +1 -1
- package/dist-server/service/scenario/scenario-query.d.ts +3 -0
- package/dist-server/service/scenario/scenario-query.js +5 -2
- package/dist-server/service/scenario/scenario-query.js.map +1 -1
- package/dist-server/service/scenario/scenario-type.js +27 -24
- package/dist-server/service/scenario/scenario-type.js.map +1 -1
- package/dist-server/service/scenario/scenario.js +22 -19
- package/dist-server/service/scenario/scenario.js.map +1 -1
- package/dist-server/service/scenario-instance/scenario-instance-mutation.js +8 -3
- package/dist-server/service/scenario-instance/scenario-instance-mutation.js.map +1 -1
- package/dist-server/service/scenario-instance/scenario-instance-query.d.ts +3 -0
- package/dist-server/service/scenario-instance/scenario-instance-query.js +5 -2
- package/dist-server/service/scenario-instance/scenario-instance-query.js.map +1 -1
- package/dist-server/service/scenario-instance/scenario-instance-subscription.js +4 -1
- package/dist-server/service/scenario-instance/scenario-instance-subscription.js.map +1 -1
- package/dist-server/service/scenario-instance/scenario-instance-type.js +50 -41
- package/dist-server/service/scenario-instance/scenario-instance-type.js.map +1 -1
- package/dist-server/service/scenario-queue/scenario-queue-subscription.js +1 -0
- package/dist-server/service/scenario-queue/scenario-queue-subscription.js.map +1 -1
- package/dist-server/service/scenario-queue/scenario-queue-type.js +8 -8
- package/dist-server/service/scenario-queue/scenario-queue-type.js.map +1 -1
- package/dist-server/service/state-register/state-register-mutation.js +9 -7
- package/dist-server/service/state-register/state-register-mutation.js.map +1 -1
- package/dist-server/service/state-register/state-register-query.d.ts +3 -0
- package/dist-server/service/state-register/state-register-query.js +6 -3
- package/dist-server/service/state-register/state-register-query.js.map +1 -1
- package/dist-server/service/state-register/state-register-type.js +3 -3
- package/dist-server/service/state-register/state-register-type.js.map +1 -1
- package/dist-server/service/state-register/state-register.js +4 -2
- package/dist-server/service/state-register/state-register.js.map +1 -1
- package/dist-server/service/step/step-mutation.js +4 -2
- package/dist-server/service/step/step-mutation.js.map +1 -1
- package/dist-server/service/step/step-query.d.ts +3 -0
- package/dist-server/service/step/step-query.js +5 -2
- package/dist-server/service/step/step-query.js.map +1 -1
- package/dist-server/service/step/step-type.js +32 -32
- package/dist-server/service/step/step-type.js.map +1 -1
- package/dist-server/service/task-type/task-type-query.js +5 -3
- package/dist-server/service/task-type/task-type-query.js.map +1 -1
- package/dist-server/service/task-type/task-type-type.js +12 -9
- package/dist-server/service/task-type/task-type-type.js.map +1 -1
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/package.json +11 -11
@@ -51,109 +51,115 @@ var ScenarioInstanceStatus;
|
|
51
51
|
})(ScenarioInstanceStatus || (exports.ScenarioInstanceStatus = ScenarioInstanceStatus = {}));
|
52
52
|
(0, type_graphql_1.registerEnumType)(ScenarioInstanceStatus, {
|
53
53
|
name: 'ScenarioInstanceStatus',
|
54
|
-
description: '
|
54
|
+
description: 'Enumeration of possible states for a scenario instance.'
|
55
55
|
});
|
56
56
|
let ScenarioInstanceProgress = class ScenarioInstanceProgress {
|
57
57
|
};
|
58
58
|
exports.ScenarioInstanceProgress = ScenarioInstanceProgress;
|
59
59
|
tslib_1.__decorate([
|
60
|
-
(0, type_graphql_1.Field)(type => type_graphql_1.Int),
|
60
|
+
(0, type_graphql_1.Field)(type => type_graphql_1.Int, { description: 'The number of rounds the scenario has completed.' }),
|
61
61
|
tslib_1.__metadata("design:type", Number)
|
62
62
|
], ScenarioInstanceProgress.prototype, "rounds", void 0);
|
63
63
|
tslib_1.__decorate([
|
64
|
-
(0, type_graphql_1.Field)(type => type_graphql_1.Int),
|
64
|
+
(0, type_graphql_1.Field)(type => type_graphql_1.Int, { description: 'The completion rate of the scenario as a percentage.' }),
|
65
65
|
tslib_1.__metadata("design:type", Number)
|
66
66
|
], ScenarioInstanceProgress.prototype, "rate", void 0);
|
67
67
|
tslib_1.__decorate([
|
68
|
-
(0, type_graphql_1.Field)(type => type_graphql_1.Int),
|
68
|
+
(0, type_graphql_1.Field)(type => type_graphql_1.Int, { description: 'The total number of steps in the scenario.' }),
|
69
69
|
tslib_1.__metadata("design:type", Number)
|
70
70
|
], ScenarioInstanceProgress.prototype, "steps", void 0);
|
71
71
|
tslib_1.__decorate([
|
72
|
-
(0, type_graphql_1.Field)(type => type_graphql_1.Int),
|
72
|
+
(0, type_graphql_1.Field)(type => type_graphql_1.Int, { description: 'The current step number being executed.' }),
|
73
73
|
tslib_1.__metadata("design:type", Number)
|
74
74
|
], ScenarioInstanceProgress.prototype, "step", void 0);
|
75
75
|
exports.ScenarioInstanceProgress = ScenarioInstanceProgress = tslib_1.__decorate([
|
76
|
-
(0, type_graphql_1.ObjectType)()
|
76
|
+
(0, type_graphql_1.ObjectType)({ description: 'Provides progress information for a running scenario instance.' })
|
77
77
|
], ScenarioInstanceProgress);
|
78
78
|
let ScenarioInstanceState = class ScenarioInstanceState {
|
79
79
|
};
|
80
80
|
exports.ScenarioInstanceState = ScenarioInstanceState;
|
81
81
|
tslib_1.__decorate([
|
82
|
-
(0, type_graphql_1.Field)({ nullable: true }),
|
82
|
+
(0, type_graphql_1.Field)({ nullable: true, description: 'The domain in which the instance is running.' }),
|
83
83
|
tslib_1.__metadata("design:type", shell_1.Domain)
|
84
84
|
], ScenarioInstanceState.prototype, "domain", void 0);
|
85
85
|
tslib_1.__decorate([
|
86
|
-
(0, type_graphql_1.Field)({ nullable: true }),
|
86
|
+
(0, type_graphql_1.Field)({ nullable: true, description: 'The unique name of this specific instance.' }),
|
87
87
|
tslib_1.__metadata("design:type", String)
|
88
88
|
], ScenarioInstanceState.prototype, "instanceName", void 0);
|
89
89
|
tslib_1.__decorate([
|
90
|
-
(0, type_graphql_1.Field)({ nullable: true }),
|
90
|
+
(0, type_graphql_1.Field)({ nullable: true, description: 'The name of the scenario being executed.' }),
|
91
91
|
tslib_1.__metadata("design:type", String)
|
92
92
|
], ScenarioInstanceState.prototype, "scenarioName", void 0);
|
93
93
|
tslib_1.__decorate([
|
94
|
-
(0, type_graphql_1.Field)(type => ScenarioInstanceStatus, {
|
94
|
+
(0, type_graphql_1.Field)(type => ScenarioInstanceStatus, {
|
95
|
+
nullable: true,
|
96
|
+
description: 'The current execution state of the instance.'
|
97
|
+
}),
|
95
98
|
tslib_1.__metadata("design:type", String)
|
96
99
|
], ScenarioInstanceState.prototype, "state", void 0);
|
97
100
|
tslib_1.__decorate([
|
98
|
-
(0, type_graphql_1.Field)(type => shell_1.ScalarObject, { nullable: true }),
|
101
|
+
(0, type_graphql_1.Field)(type => shell_1.ScalarObject, { nullable: true, description: 'A key-value map of variables used in the instance.' }),
|
99
102
|
tslib_1.__metadata("design:type", Object)
|
100
103
|
], ScenarioInstanceState.prototype, "variables", void 0);
|
101
104
|
tslib_1.__decorate([
|
102
|
-
(0, type_graphql_1.Field)(type => shell_1.ScalarObject, {
|
105
|
+
(0, type_graphql_1.Field)(type => shell_1.ScalarObject, {
|
106
|
+
nullable: true,
|
107
|
+
description: 'A key-value map of data generated and used by the instance.'
|
108
|
+
}),
|
103
109
|
tslib_1.__metadata("design:type", Object)
|
104
110
|
], ScenarioInstanceState.prototype, "data", void 0);
|
105
111
|
tslib_1.__decorate([
|
106
|
-
(0, type_graphql_1.Field)(type => ScenarioInstanceProgress, { nullable: true }),
|
112
|
+
(0, type_graphql_1.Field)(type => ScenarioInstanceProgress, { nullable: true, description: 'The progress of the running instance.' }),
|
107
113
|
tslib_1.__metadata("design:type", ScenarioInstanceProgress)
|
108
114
|
], ScenarioInstanceState.prototype, "progress", void 0);
|
109
115
|
tslib_1.__decorate([
|
110
|
-
(0, type_graphql_1.Field)({ nullable: true }),
|
116
|
+
(0, type_graphql_1.Field)({ nullable: true, description: 'A message associated with the current state (e.g., an error message).' }),
|
111
117
|
tslib_1.__metadata("design:type", String)
|
112
118
|
], ScenarioInstanceState.prototype, "message", void 0);
|
113
119
|
tslib_1.__decorate([
|
114
|
-
(0, type_graphql_1.Field)({ nullable: true }),
|
120
|
+
(0, type_graphql_1.Field)({ nullable: true, description: 'The timestamp when this state was recorded.' }),
|
115
121
|
tslib_1.__metadata("design:type", Date)
|
116
122
|
], ScenarioInstanceState.prototype, "timestamp", void 0);
|
117
123
|
exports.ScenarioInstanceState = ScenarioInstanceState = tslib_1.__decorate([
|
118
|
-
(0, type_graphql_1.ObjectType)()
|
124
|
+
(0, type_graphql_1.ObjectType)({ description: 'Represents the complete state of a scenario instance at a point in time.' })
|
119
125
|
], ScenarioInstanceState);
|
120
126
|
let ScenarioInstanceRunResult = class ScenarioInstanceRunResult {
|
121
127
|
};
|
122
128
|
exports.ScenarioInstanceRunResult = ScenarioInstanceRunResult;
|
123
129
|
tslib_1.__decorate([
|
124
|
-
(0, type_graphql_1.Field)({ nullable: true }),
|
130
|
+
(0, type_graphql_1.Field)({ nullable: true, description: 'The name of the scenario that was executed.' }),
|
125
131
|
tslib_1.__metadata("design:type", String)
|
126
132
|
], ScenarioInstanceRunResult.prototype, "scenarioName", void 0);
|
127
133
|
tslib_1.__decorate([
|
128
|
-
(0, type_graphql_1.Field)({ nullable: true }),
|
134
|
+
(0, type_graphql_1.Field)({ nullable: true, description: 'The unique name of the instance that was run.' }),
|
129
135
|
tslib_1.__metadata("design:type", String)
|
130
136
|
], ScenarioInstanceRunResult.prototype, "instanceName", void 0);
|
131
137
|
tslib_1.__decorate([
|
132
|
-
(0, type_graphql_1.Field)(type => shell_1.ScalarObject, { nullable: true }),
|
138
|
+
(0, type_graphql_1.Field)(type => shell_1.ScalarObject, { nullable: true, description: 'The final set of variables after the run.' }),
|
133
139
|
tslib_1.__metadata("design:type", Object)
|
134
140
|
], ScenarioInstanceRunResult.prototype, "variables", void 0);
|
135
141
|
tslib_1.__decorate([
|
136
|
-
(0, type_graphql_1.Field)(type => shell_1.ScalarObject, { nullable: true }),
|
142
|
+
(0, type_graphql_1.Field)(type => shell_1.ScalarObject, { nullable: true, description: 'The final set of data after the run.' }),
|
137
143
|
tslib_1.__metadata("design:type", Object)
|
138
144
|
], ScenarioInstanceRunResult.prototype, "data", void 0);
|
139
145
|
tslib_1.__decorate([
|
140
|
-
(0, type_graphql_1.Field)(type => shell_1.ScalarObject, { nullable: true }),
|
146
|
+
(0, type_graphql_1.Field)(type => shell_1.ScalarObject, { nullable: true, description: 'The final result returned by the scenario.' }),
|
141
147
|
tslib_1.__metadata("design:type", Object)
|
142
148
|
], ScenarioInstanceRunResult.prototype, "result", void 0);
|
143
149
|
tslib_1.__decorate([
|
144
|
-
(0, type_graphql_1.Field)({ nullable: true }),
|
150
|
+
(0, type_graphql_1.Field)({ nullable: true, description: 'The timestamp when the run completed.' }),
|
145
151
|
tslib_1.__metadata("design:type", Date)
|
146
152
|
], ScenarioInstanceRunResult.prototype, "timestamp", void 0);
|
147
153
|
tslib_1.__decorate([
|
148
|
-
(0, type_graphql_1.Field)({ nullable: true }),
|
154
|
+
(0, type_graphql_1.Field)({ nullable: true, description: 'A final message from the run (e.g., success or failure reason).' }),
|
149
155
|
tslib_1.__metadata("design:type", String)
|
150
156
|
], ScenarioInstanceRunResult.prototype, "message", void 0);
|
151
157
|
tslib_1.__decorate([
|
152
|
-
(0, type_graphql_1.Field)({ nullable: true }),
|
158
|
+
(0, type_graphql_1.Field)({ nullable: true, description: 'The final state of the instance after the run.' }),
|
153
159
|
tslib_1.__metadata("design:type", String)
|
154
160
|
], ScenarioInstanceRunResult.prototype, "state", void 0);
|
155
161
|
exports.ScenarioInstanceRunResult = ScenarioInstanceRunResult = tslib_1.__decorate([
|
156
|
-
(0, type_graphql_1.ObjectType)()
|
162
|
+
(0, type_graphql_1.ObjectType)({ description: 'Contains the final result of a completed scenario instance run.' })
|
157
163
|
], ScenarioInstanceRunResult);
|
158
164
|
let ScenarioInstance = ScenarioInstance_1 = class ScenarioInstance {
|
159
165
|
get root() {
|
@@ -455,75 +461,78 @@ let ScenarioInstance = ScenarioInstance_1 = class ScenarioInstance {
|
|
455
461
|
};
|
456
462
|
exports.ScenarioInstance = ScenarioInstance;
|
457
463
|
tslib_1.__decorate([
|
458
|
-
(0, type_graphql_1.Field)({ nullable: true }),
|
464
|
+
(0, type_graphql_1.Field)({ nullable: true, description: 'The domain in which the instance is running.' }),
|
459
465
|
tslib_1.__metadata("design:type", shell_1.Domain)
|
460
466
|
], ScenarioInstance.prototype, "domain", void 0);
|
461
467
|
tslib_1.__decorate([
|
462
|
-
(0, type_graphql_1.Field)({ nullable: true }),
|
468
|
+
(0, type_graphql_1.Field)({ nullable: true, description: 'The user who initiated the instance.' }),
|
463
469
|
tslib_1.__metadata("design:type", auth_base_1.User)
|
464
470
|
], ScenarioInstance.prototype, "user", void 0);
|
465
471
|
tslib_1.__decorate([
|
466
|
-
(0, type_graphql_1.Field)({ nullable: true }),
|
472
|
+
(0, type_graphql_1.Field)({ nullable: true, description: 'The name of the scenario being executed.' }),
|
467
473
|
tslib_1.__metadata("design:type", String)
|
468
474
|
], ScenarioInstance.prototype, "scenarioName", void 0);
|
469
475
|
tslib_1.__decorate([
|
470
|
-
(0, type_graphql_1.Field)({ nullable: true }),
|
476
|
+
(0, type_graphql_1.Field)({ nullable: true, description: 'The unique name for this specific instance of the scenario.' }),
|
471
477
|
tslib_1.__metadata("design:type", String)
|
472
478
|
], ScenarioInstance.prototype, "instanceName", void 0);
|
473
479
|
tslib_1.__decorate([
|
474
|
-
(0, type_graphql_1.Field)({ nullable: true }),
|
480
|
+
(0, type_graphql_1.Field)({ nullable: true, description: 'The root scenario instance if this is a sub-scenario.' }),
|
475
481
|
tslib_1.__metadata("design:type", ScenarioInstance),
|
476
482
|
tslib_1.__metadata("design:paramtypes", [])
|
477
483
|
], ScenarioInstance.prototype, "root", null);
|
478
484
|
tslib_1.__decorate([
|
479
|
-
(0, type_graphql_1.Field)({ nullable: true }),
|
485
|
+
(0, type_graphql_1.Field)({ nullable: true, description: 'The current execution state of the instance.' }),
|
480
486
|
tslib_1.__metadata("design:type", String),
|
481
487
|
tslib_1.__metadata("design:paramtypes", [])
|
482
488
|
], ScenarioInstance.prototype, "state", null);
|
483
489
|
tslib_1.__decorate([
|
484
|
-
(0, type_graphql_1.Field)(type => ScenarioInstanceProgress, { nullable: true }),
|
490
|
+
(0, type_graphql_1.Field)(type => ScenarioInstanceProgress, { nullable: true, description: 'The current progress of the instance.' }),
|
485
491
|
tslib_1.__metadata("design:type", ScenarioInstanceProgress),
|
486
492
|
tslib_1.__metadata("design:paramtypes", [])
|
487
493
|
], ScenarioInstance.prototype, "progress", null);
|
488
494
|
tslib_1.__decorate([
|
489
|
-
(0, type_graphql_1.Field)(type => shell_1.ScalarObject, { nullable: true }),
|
495
|
+
(0, type_graphql_1.Field)(type => shell_1.ScalarObject, { nullable: true, description: 'A key-value map of variables used in the instance.' }),
|
490
496
|
tslib_1.__metadata("design:type", Object),
|
491
497
|
tslib_1.__metadata("design:paramtypes", [])
|
492
498
|
], ScenarioInstance.prototype, "variables", null);
|
493
499
|
tslib_1.__decorate([
|
494
|
-
(0, type_graphql_1.Field)(type => shell_1.ScalarObject, {
|
500
|
+
(0, type_graphql_1.Field)(type => shell_1.ScalarObject, {
|
501
|
+
nullable: true,
|
502
|
+
description: 'A key-value map of data generated and used by the instance.'
|
503
|
+
}),
|
495
504
|
tslib_1.__metadata("design:type", Object),
|
496
505
|
tslib_1.__metadata("design:paramtypes", [])
|
497
506
|
], ScenarioInstance.prototype, "data", null);
|
498
507
|
tslib_1.__decorate([
|
499
|
-
(0, type_graphql_1.Field)(type => shell_1.ScalarObject, { nullable: true }),
|
508
|
+
(0, type_graphql_1.Field)(type => shell_1.ScalarObject, { nullable: true, description: 'The final result of the scenario run.' }),
|
500
509
|
tslib_1.__metadata("design:type", Object)
|
501
510
|
], ScenarioInstance.prototype, "result", void 0);
|
502
511
|
tslib_1.__decorate([
|
503
|
-
(0, type_graphql_1.Field)({ nullable: true }),
|
512
|
+
(0, type_graphql_1.Field)({ nullable: true, description: 'The timestamp of the last update.' }),
|
504
513
|
tslib_1.__metadata("design:type", Date),
|
505
514
|
tslib_1.__metadata("design:paramtypes", [])
|
506
515
|
], ScenarioInstance.prototype, "timestamp", null);
|
507
516
|
tslib_1.__decorate([
|
508
|
-
(0, type_graphql_1.Field)({ nullable: true }),
|
517
|
+
(0, type_graphql_1.Field)({ nullable: true, description: 'A message associated with the current state (e.g., an error message).' }),
|
509
518
|
tslib_1.__metadata("design:type", String)
|
510
519
|
], ScenarioInstance.prototype, "message", void 0);
|
511
520
|
exports.ScenarioInstance = ScenarioInstance = ScenarioInstance_1 = tslib_1.__decorate([
|
512
|
-
(0, type_graphql_1.ObjectType)(),
|
521
|
+
(0, type_graphql_1.ObjectType)({ description: 'Represents a running or completed instance of a scenario.' }),
|
513
522
|
tslib_1.__metadata("design:paramtypes", [Object, Object, Object])
|
514
523
|
], ScenarioInstance);
|
515
524
|
let ScenarioInstanceList = class ScenarioInstanceList {
|
516
525
|
};
|
517
526
|
exports.ScenarioInstanceList = ScenarioInstanceList;
|
518
527
|
tslib_1.__decorate([
|
519
|
-
(0, type_graphql_1.Field)(type => [ScenarioInstance]),
|
528
|
+
(0, type_graphql_1.Field)(type => [ScenarioInstance], { description: 'The list of scenario instance items.' }),
|
520
529
|
tslib_1.__metadata("design:type", Array)
|
521
530
|
], ScenarioInstanceList.prototype, "items", void 0);
|
522
531
|
tslib_1.__decorate([
|
523
|
-
(0, type_graphql_1.Field)(type => type_graphql_1.Int),
|
532
|
+
(0, type_graphql_1.Field)(type => type_graphql_1.Int, { description: 'The total number of scenario instances.' }),
|
524
533
|
tslib_1.__metadata("design:type", Number)
|
525
534
|
], ScenarioInstanceList.prototype, "total", void 0);
|
526
535
|
exports.ScenarioInstanceList = ScenarioInstanceList = tslib_1.__decorate([
|
527
|
-
(0, type_graphql_1.ObjectType)()
|
536
|
+
(0, type_graphql_1.ObjectType)({ description: 'A paginated list of scenario instances.' })
|
528
537
|
], ScenarioInstanceList);
|
529
538
|
//# sourceMappingURL=scenario-instance-type.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"scenario-instance-type.js","sourceRoot":"","sources":["../../../server/service/scenario-instance/scenario-instance-type.ts"],"names":[],"mappings":"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","sourcesContent":["import 'winston-daily-rotate-file'\n\nimport orderBy from 'lodash/orderBy'\nimport moment from 'moment-timezone'\nimport { Field, Int, ObjectType, registerEnumType } from 'type-graphql'\nimport util from 'util'\nimport { createLogger, format, transports } from 'winston'\n\nimport { Domain, pubsub, PubSubLogTransport, ScalarObject } from '@things-factory/shell'\nimport { cacheService } from '@things-factory/cache-service'\nimport { User } from '@things-factory/auth-base'\nimport { sleep } from '@things-factory/utils'\n\nimport { publishData } from '../../controllers/publish-data'\nimport { ConnectionManager } from '../../engine/connection-manager'\nimport { TaskRegistry } from '../../engine'\nimport { Context } from '../../engine/types'\nimport { Step } from '../step/step-type'\nimport { handler as edgeHandler } from '../../engine/edge-client'\n\nconst debug = require('debug')('things-factory:integration-base:scenario-instance')\nconst { combine, errors, splat, printf } = format\n\nconst LOGFORMAT = printf(({ level, message, timestamp, stack }) => {\n return `${timestamp} ${level}: ${stack || message}`\n})\n\nfunction getSystemTimeZone() {\n try {\n const timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone\n if (!timeZone) {\n throw new Error('Unable to resolve timeZone')\n }\n return timeZone\n } catch (e) {\n console.warn('Failed to get system timeZone, falling back to UTC.', e)\n return 'UTC'\n }\n}\n\nconst SYSTEM_TZ = getSystemTimeZone()\nconst systemTimestamp = format((info, opts: { tz?: string }) => {\n if (opts.tz) info.timestamp = moment().tz(opts.tz).format()\n return info\n})\n\nexport enum ScenarioInstanceStatus {\n READY = 'READY',\n STARTED = 'STARTED',\n STOPPED = 'STOPPED',\n HALTED = 'HALTED',\n UNLOADED = 'UNLOADED'\n}\n\nregisterEnumType(ScenarioInstanceStatus, {\n name: 'ScenarioInstanceStatus',\n description: 'state enumeration of a scenario-instance'\n})\n\n@ObjectType()\nexport class ScenarioInstanceProgress {\n @Field(type => Int)\n rounds: number\n\n @Field(type => Int)\n rate: number\n\n @Field(type => Int)\n steps: number\n\n @Field(type => Int)\n step: number\n}\n\n@ObjectType()\nexport class ScenarioInstanceState {\n @Field({ nullable: true })\n public domain: Domain\n\n @Field({ nullable: true })\n public instanceName: string\n\n @Field({ nullable: true })\n public scenarioName: string\n\n @Field(type => ScenarioInstanceStatus, { nullable: true })\n public state: ScenarioInstanceStatus\n\n @Field(type => ScalarObject, { nullable: true })\n public variables: any\n\n @Field(type => ScalarObject, { nullable: true })\n public data: any\n\n @Field(type => ScenarioInstanceProgress, { nullable: true })\n public progress: ScenarioInstanceProgress\n\n @Field({ nullable: true })\n public message: string\n\n @Field({ nullable: true })\n public timestamp: Date\n}\n\n@ObjectType()\nexport class ScenarioInstanceRunResult {\n @Field({ nullable: true })\n public scenarioName: string\n\n @Field({ nullable: true })\n public instanceName: string\n\n @Field(type => ScalarObject, { nullable: true })\n public variables: any\n\n @Field(type => ScalarObject, { nullable: true })\n public data: any\n\n @Field(type => ScalarObject, { nullable: true })\n public result: any\n\n @Field({ nullable: true })\n public timestamp: Date\n\n @Field({ nullable: true })\n public message: string\n\n @Field({ nullable: true })\n public state: ScenarioInstanceStatus\n}\n\n@ObjectType()\nexport class ScenarioInstance {\n private subScenarioInstances: ScenarioInstance[] = [] // TODO Imple by WeakSet\n\n public context: Context\n\n @Field({ nullable: true })\n public domain: Domain\n\n @Field({ nullable: true })\n public user: User\n\n @Field({ nullable: true })\n public scenarioName: string\n\n @Field({ nullable: true })\n public instanceName: string\n\n @Field({ nullable: true })\n get root(): ScenarioInstance {\n return this.context?.root\n }\n\n @Field({ nullable: true })\n get state(): ScenarioInstanceStatus {\n return this.context?.state\n }\n\n @Field(type => ScenarioInstanceProgress, { nullable: true })\n get progress(): ScenarioInstanceProgress {\n return this.calcProgress()\n }\n\n @Field(type => ScalarObject, { nullable: true })\n get variables(): any {\n return this.context?.variables\n }\n\n @Field(type => ScalarObject, { nullable: true })\n get data(): any {\n return this.context?.data\n }\n\n @Field(type => ScalarObject, { nullable: true })\n result: any\n\n @Field({ nullable: true })\n get timestamp(): Date {\n return new Date()\n }\n\n @Field({ nullable: true })\n public message: string\n\n private scenarioId: string\n private scenarioTtl: number\n private steps: Step[]\n private rounds: number = 0\n\n private lastStep: number = -1\n private nextStep: number = -1\n private disposer: any\n public addSubScenarioInstance(instance: ScenarioInstance): ScenarioInstance[] {\n this.subScenarioInstances.push(instance)\n return this.subScenarioInstances\n }\n\n public getSubScenarioInstances(): ScenarioInstance[] {\n return this.subScenarioInstances\n }\n\n public async stopSubScenarios() {\n var subScenarioInstances = this.getSubScenarioInstances()\n\n var subInstance = subScenarioInstances.pop()\n while (subInstance) {\n await subInstance.dispose()\n subInstance = subScenarioInstances.pop()\n }\n }\n\n constructor(\n instanceName,\n {\n id: scenarioId,\n ttl: scenarioTtl,\n name: scenarioName,\n steps,\n domain: scenarioDomain\n }: { id: string; ttl?: number; name: string; steps: Step[]; domain: Domain },\n context?\n ) {\n var { domain, user, lng, unsafeIP, prohibitedPrivileges } = context || {}\n domain ||= scenarioDomain\n\n this.scenarioId = scenarioId\n this.scenarioTtl = scenarioTtl\n this.instanceName = instanceName\n this.scenarioName = scenarioName\n this.steps = orderBy(steps || [], step => step.sequence)\n this.domain = domain\n this.user = user\n this.disposer = context?.disposer\n\n this.context = {\n domain,\n user,\n lng,\n unsafeIP,\n prohibitedPrivileges,\n logger:\n context?.logger ||\n createLogger({\n format: combine(errors({ stack: true }), systemTimestamp({ tz: SYSTEM_TZ }), splat(), LOGFORMAT),\n transports: [\n new (transports as any).DailyRotateFile({\n filename: `logs/${domain.subdomain}/scenario-${scenarioName}-%DATE%.log`,\n datePattern: 'YYYY-MM-DD-HH',\n zippedArchive: false,\n maxSize: '5m',\n maxFiles: '14d',\n level: 'info'\n }),\n new PubSubLogTransport({\n topic: 'scenario-instance-log',\n source: { domain, scenarioName, instanceName }\n })\n ]\n }),\n publish: context?.publish || this.publishData.bind(this),\n load: context?.load || this.loadSubscenario.bind(this),\n data: context?.data || {},\n variables: context?.variables || {},\n client: context?.client,\n state: ScenarioInstanceStatus.STOPPED,\n root: context?.root || this,\n closures: [],\n checkState(state = ScenarioInstanceStatus.STARTED) {\n return this.state == state\n }\n }\n\n this.setState(ScenarioInstanceStatus.READY)\n }\n\n async run() {\n var state = this.getState()\n if (state == ScenarioInstanceStatus.STARTED || this.steps.length == 0) {\n return\n }\n\n this.setState(ScenarioInstanceStatus.STARTED)\n var context = this.context\n\n try {\n while (this.getState() == ScenarioInstanceStatus.STARTED) {\n if (this.nextStep == -1) {\n this.setNextStep(0)\n }\n\n if (this.nextStep == 0) {\n this.rounds++\n this.context.logger.info(`Start ${this.rounds} Rounds #######`)\n }\n\n var step = this.steps[this.nextStep]\n var next, data\n\n if (!step.skip) {\n // @ts-ignore: Initializer provides no value for this binding element and the binding element has no default value.\n var { next, state: stepState, data } = (await this.process(step, context)) || {}\n context.data[step.name] = data\n } else {\n next = ''\n stepState = undefined\n }\n\n this.publishState()\n\n await sleep(1)\n\n if (next) {\n this.setNextStep(\n this.steps.findIndex(step => {\n return step.name == next\n })\n )\n if (this.nextStep == -1) {\n throw 'Not Found Next Step'\n }\n } else if (this.nextStep == this.steps.length - 1) {\n this.setState(ScenarioInstanceStatus.STOPPED)\n } else {\n this.setNextStep(this.nextStep + 1)\n }\n\n /* last step 에 의해서 시나리오 state를 변경할 수 있도록 함. */\n if (stepState !== undefined) {\n this.setState(stepState)\n }\n }\n } catch (ex) {\n const message = ex.stack ? ex.stack : ex\n const { scenarioName, domain } = this\n\n this.context.logger.error(ex)\n\n debug('failed to run ', `[ Domain: ${domain.name}, Scenario: ${scenarioName} ]\\n`, ex)\n this.setState(\n ScenarioInstanceStatus.HALTED,\n typeof message == 'object' ? JSON.stringify(message, null, 2) : message\n )\n\n throw ex\n }\n\n this.result = this.steps\n .filter(step => !!step.result)\n .reduce((sum, step) => {\n sum[step.name] = this.context.data[step.name]\n return sum\n }, {})\n\n const { scenarioId, scenarioTtl, variables, message, scenarioName, instanceName, result, domain } = this\n const obj = {\n scenarioName,\n instanceName,\n variables,\n data: this.data,\n result,\n timestamp: new Date(),\n message,\n state: ScenarioInstanceStatus.STOPPED /* redundent, no meaning */\n }\n\n if (this.scenarioTtl && this.scenarioId) {\n setTimeout(() => {\n cacheService.setInCache(scenarioId, { domain: domain.id, variables: variables || {} }, obj, scenarioTtl)\n })\n }\n\n return obj\n }\n\n async loadSubscenario(step, scenarioConfig, context) {\n var { name: stepName, params } = step\n var { preventErrorPropagation } = params || {}\n\n debug('load-subscenario', this.instanceName, stepName, scenarioConfig.name)\n\n context.data[stepName] = {}\n\n let subContext = {\n ...context,\n data: context.data[stepName],\n closures: [],\n state: ScenarioInstanceStatus.READY\n }\n\n if (!scenarioConfig.domain) {\n scenarioConfig.domain = context.domain\n }\n\n var subScenarioInstance = new ScenarioInstance(`${this.instanceName}$${stepName}`, scenarioConfig, subContext)\n this.addSubScenarioInstance(subScenarioInstance)\n await subScenarioInstance.run()\n\n if (!preventErrorPropagation && subScenarioInstance.getState() == ScenarioInstanceStatus.HALTED) {\n throw new Error(`Sub-scenario[${this.instanceName}$${stepName}] is halted.`)\n }\n\n return subContext\n }\n\n publishData(tag, data) {\n publishData(tag, data, this.context)\n }\n\n publishState() {\n const {\n instanceName,\n scenarioName,\n steps,\n domain,\n message,\n context: { data, variables, state }\n } = this\n\n pubsub.publish('scenario-instance-state', {\n scenarioInstanceState: {\n domain,\n instanceName,\n scenarioName,\n state,\n variables,\n progress: this.calcProgress(),\n data,\n message,\n timestamp: new Date()\n }\n })\n\n this.context.logger.info(this.message)\n }\n\n calcProgress(): ScenarioInstanceProgress {\n var steps = this.steps.length\n var step = Math.max(this.lastStep, 0)\n\n return {\n rounds: this.rounds,\n rate: steps ? Math.round(100 * (step / steps)) : 0,\n steps,\n step\n }\n }\n\n setNextStep(step) {\n this.lastStep = this.nextStep + 1\n this.nextStep = step\n }\n\n getState(): ScenarioInstanceStatus {\n return this.context.state\n }\n\n setState(state, message?) {\n if (this.context.state == state) {\n return\n }\n\n this.message = `${this.instanceName}:[state changed] ${ScenarioInstanceStatus[this.getState()]} => ${ScenarioInstanceStatus[state]}${\n message ? ' caused by ' + util.inspect(message, false, 2, true) : ''\n }`\n\n this.context.state = state\n\n if (state == ScenarioInstanceStatus.STOPPED || state == ScenarioInstanceStatus.HALTED) {\n this.setNextStep(-1)\n this.setState(ScenarioInstanceStatus.UNLOADED)\n } else if (state == ScenarioInstanceStatus.UNLOADED) {\n this.setNextStep(-1)\n this.dispose()\n }\n\n this.publishState()\n }\n\n async start() {\n await this.run()\n }\n\n stop() {\n if (this.getState() !== ScenarioInstanceStatus.HALTED) {\n this.setState(ScenarioInstanceStatus.STOPPED)\n }\n }\n\n unload() {\n this.setState(ScenarioInstanceStatus.UNLOADED)\n }\n\n async dispose() {\n await this.stopSubScenarios()\n\n this.unload()\n\n var closure = this.context?.closures?.pop()\n while (closure) {\n closure.call(this)\n closure = this.context?.closures?.pop()\n }\n\n if (this.disposer) {\n await this.disposer.call(this)\n }\n\n // {{ CHECKPOINT 본 인스턴스를 위해서 생성된 logger를 닫는다. 사용을 완료하고 닫기위해서 지연해서 수행한다.\n if (this.context?.logger) {\n setTimeout(() => {\n this.context.logger.close()\n }, 300)\n }\n // }}\n }\n\n async process(step, context): Promise<{ next: string; state: ScenarioInstanceStatus; data: object }> {\n this.context.logger.info(`Step '${step.name}'(${step.id}) started.`)\n\n step = {\n ...step,\n params: step.params || {}\n }\n\n const connection =\n step.connection && ConnectionManager.getConnectionInstanceEntityByName(this.domain, step.connection)\n\n if (!connection || !connection.edgeId) {\n var handler = TaskRegistry.getTaskHandler(step.task)\n if (!handler) {\n throw new Error(`no task handler for step '${step.name}'(${step.id})`)\n }\n\n var retval: any = await handler(step, context)\n } else {\n var retval: any = await edgeHandler(step, context)\n }\n\n if (step.log) {\n var { data } = retval || {}\n this.context.logger.info(`returns ${typeof data == 'string' ? data : JSON.stringify(data, null, 2)}`)\n }\n\n this.context.logger.info(`Step done.`)\n return retval\n }\n}\n\n@ObjectType()\nexport class ScenarioInstanceList {\n @Field(type => [ScenarioInstance])\n items: ScenarioInstance[]\n\n @Field(type => Int)\n total: number\n}\n"]}
|
1
|
+
{"version":3,"file":"scenario-instance-type.js","sourceRoot":"","sources":["../../../server/service/scenario-instance/scenario-instance-type.ts"],"names":[],"mappings":"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","sourcesContent":["import 'winston-daily-rotate-file'\n\nimport orderBy from 'lodash/orderBy'\nimport moment from 'moment-timezone'\nimport { Field, Int, ObjectType, registerEnumType } from 'type-graphql'\nimport util from 'util'\nimport { createLogger, format, transports } from 'winston'\n\nimport { Domain, pubsub, PubSubLogTransport, ScalarObject } from '@things-factory/shell'\nimport { cacheService } from '@things-factory/cache-service'\nimport { User } from '@things-factory/auth-base'\nimport { sleep } from '@things-factory/utils'\n\nimport { publishData } from '../../controllers/publish-data'\nimport { ConnectionManager } from '../../engine/connection-manager'\nimport { TaskRegistry } from '../../engine'\nimport { Context } from '../../engine/types'\nimport { Step } from '../step/step-type'\nimport { handler as edgeHandler } from '../../engine/edge-client'\n\nconst debug = require('debug')('things-factory:integration-base:scenario-instance')\nconst { combine, errors, splat, printf } = format\n\nconst LOGFORMAT = printf(({ level, message, timestamp, stack }) => {\n return `${timestamp} ${level}: ${stack || message}`\n})\n\nfunction getSystemTimeZone() {\n try {\n const timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone\n if (!timeZone) {\n throw new Error('Unable to resolve timeZone')\n }\n return timeZone\n } catch (e) {\n console.warn('Failed to get system timeZone, falling back to UTC.', e)\n return 'UTC'\n }\n}\n\nconst SYSTEM_TZ = getSystemTimeZone()\nconst systemTimestamp = format((info, opts: { tz?: string }) => {\n if (opts.tz) info.timestamp = moment().tz(opts.tz).format()\n return info\n})\n\nexport enum ScenarioInstanceStatus {\n READY = 'READY',\n STARTED = 'STARTED',\n STOPPED = 'STOPPED',\n HALTED = 'HALTED',\n UNLOADED = 'UNLOADED'\n}\n\nregisterEnumType(ScenarioInstanceStatus, {\n name: 'ScenarioInstanceStatus',\n description: 'Enumeration of possible states for a scenario instance.'\n})\n\n@ObjectType({ description: 'Provides progress information for a running scenario instance.' })\nexport class ScenarioInstanceProgress {\n @Field(type => Int, { description: 'The number of rounds the scenario has completed.' })\n rounds: number\n\n @Field(type => Int, { description: 'The completion rate of the scenario as a percentage.' })\n rate: number\n\n @Field(type => Int, { description: 'The total number of steps in the scenario.' })\n steps: number\n\n @Field(type => Int, { description: 'The current step number being executed.' })\n step: number\n}\n\n@ObjectType({ description: 'Represents the complete state of a scenario instance at a point in time.' })\nexport class ScenarioInstanceState {\n @Field({ nullable: true, description: 'The domain in which the instance is running.' })\n public domain: Domain\n\n @Field({ nullable: true, description: 'The unique name of this specific instance.' })\n public instanceName: string\n\n @Field({ nullable: true, description: 'The name of the scenario being executed.' })\n public scenarioName: string\n\n @Field(type => ScenarioInstanceStatus, {\n nullable: true,\n description: 'The current execution state of the instance.'\n })\n public state: ScenarioInstanceStatus\n\n @Field(type => ScalarObject, { nullable: true, description: 'A key-value map of variables used in the instance.' })\n public variables: any\n\n @Field(type => ScalarObject, {\n nullable: true,\n description: 'A key-value map of data generated and used by the instance.'\n })\n public data: any\n\n @Field(type => ScenarioInstanceProgress, { nullable: true, description: 'The progress of the running instance.' })\n public progress: ScenarioInstanceProgress\n\n @Field({ nullable: true, description: 'A message associated with the current state (e.g., an error message).' })\n public message: string\n\n @Field({ nullable: true, description: 'The timestamp when this state was recorded.' })\n public timestamp: Date\n}\n\n@ObjectType({ description: 'Contains the final result of a completed scenario instance run.' })\nexport class ScenarioInstanceRunResult {\n @Field({ nullable: true, description: 'The name of the scenario that was executed.' })\n public scenarioName: string\n\n @Field({ nullable: true, description: 'The unique name of the instance that was run.' })\n public instanceName: string\n\n @Field(type => ScalarObject, { nullable: true, description: 'The final set of variables after the run.' })\n public variables: any\n\n @Field(type => ScalarObject, { nullable: true, description: 'The final set of data after the run.' })\n public data: any\n\n @Field(type => ScalarObject, { nullable: true, description: 'The final result returned by the scenario.' })\n public result: any\n\n @Field({ nullable: true, description: 'The timestamp when the run completed.' })\n public timestamp: Date\n\n @Field({ nullable: true, description: 'A final message from the run (e.g., success or failure reason).' })\n public message: string\n\n @Field({ nullable: true, description: 'The final state of the instance after the run.' })\n public state: ScenarioInstanceStatus\n}\n\n@ObjectType({ description: 'Represents a running or completed instance of a scenario.' })\nexport class ScenarioInstance {\n private subScenarioInstances: ScenarioInstance[] = [] // TODO Imple by WeakSet\n\n public context: Context\n\n @Field({ nullable: true, description: 'The domain in which the instance is running.' })\n public domain: Domain\n\n @Field({ nullable: true, description: 'The user who initiated the instance.' })\n public user: User\n\n @Field({ nullable: true, description: 'The name of the scenario being executed.' })\n public scenarioName: string\n\n @Field({ nullable: true, description: 'The unique name for this specific instance of the scenario.' })\n public instanceName: string\n\n @Field({ nullable: true, description: 'The root scenario instance if this is a sub-scenario.' })\n get root(): ScenarioInstance {\n return this.context?.root\n }\n\n @Field({ nullable: true, description: 'The current execution state of the instance.' })\n get state(): ScenarioInstanceStatus {\n return this.context?.state\n }\n\n @Field(type => ScenarioInstanceProgress, { nullable: true, description: 'The current progress of the instance.' })\n get progress(): ScenarioInstanceProgress {\n return this.calcProgress()\n }\n\n @Field(type => ScalarObject, { nullable: true, description: 'A key-value map of variables used in the instance.' })\n get variables(): any {\n return this.context?.variables\n }\n\n @Field(type => ScalarObject, {\n nullable: true,\n description: 'A key-value map of data generated and used by the instance.'\n })\n get data(): any {\n return this.context?.data\n }\n\n @Field(type => ScalarObject, { nullable: true, description: 'The final result of the scenario run.' })\n result: any\n\n @Field({ nullable: true, description: 'The timestamp of the last update.' })\n get timestamp(): Date {\n return new Date()\n }\n\n @Field({ nullable: true, description: 'A message associated with the current state (e.g., an error message).' })\n public message: string\n\n private scenarioId: string\n private scenarioTtl: number\n private steps: Step[]\n private rounds: number = 0\n\n private lastStep: number = -1\n private nextStep: number = -1\n private disposer: any\n public addSubScenarioInstance(instance: ScenarioInstance): ScenarioInstance[] {\n this.subScenarioInstances.push(instance)\n return this.subScenarioInstances\n }\n\n public getSubScenarioInstances(): ScenarioInstance[] {\n return this.subScenarioInstances\n }\n\n public async stopSubScenarios() {\n var subScenarioInstances = this.getSubScenarioInstances()\n\n var subInstance = subScenarioInstances.pop()\n while (subInstance) {\n await subInstance.dispose()\n subInstance = subScenarioInstances.pop()\n }\n }\n\n constructor(\n instanceName,\n {\n id: scenarioId,\n ttl: scenarioTtl,\n name: scenarioName,\n steps,\n domain: scenarioDomain\n }: { id: string; ttl?: number; name: string; steps: Step[]; domain: Domain },\n context?\n ) {\n var { domain, user, lng, unsafeIP, prohibitedPrivileges } = context || {}\n domain ||= scenarioDomain\n\n this.scenarioId = scenarioId\n this.scenarioTtl = scenarioTtl\n this.instanceName = instanceName\n this.scenarioName = scenarioName\n this.steps = orderBy(steps || [], step => step.sequence)\n this.domain = domain\n this.user = user\n this.disposer = context?.disposer\n\n this.context = {\n domain,\n user,\n lng,\n unsafeIP,\n prohibitedPrivileges,\n logger:\n context?.logger ||\n createLogger({\n format: combine(errors({ stack: true }), systemTimestamp({ tz: SYSTEM_TZ }), splat(), LOGFORMAT),\n transports: [\n new (transports as any).DailyRotateFile({\n filename: `logs/${domain.subdomain}/scenario-${scenarioName}-%DATE%.log`,\n datePattern: 'YYYY-MM-DD-HH',\n zippedArchive: false,\n maxSize: '5m',\n maxFiles: '14d',\n level: 'info'\n }),\n new PubSubLogTransport({\n topic: 'scenario-instance-log',\n source: { domain, scenarioName, instanceName }\n })\n ]\n }),\n publish: context?.publish || this.publishData.bind(this),\n load: context?.load || this.loadSubscenario.bind(this),\n data: context?.data || {},\n variables: context?.variables || {},\n client: context?.client,\n state: ScenarioInstanceStatus.STOPPED,\n root: context?.root || this,\n closures: [],\n checkState(state = ScenarioInstanceStatus.STARTED) {\n return this.state == state\n }\n }\n\n this.setState(ScenarioInstanceStatus.READY)\n }\n\n async run() {\n var state = this.getState()\n if (state == ScenarioInstanceStatus.STARTED || this.steps.length == 0) {\n return\n }\n\n this.setState(ScenarioInstanceStatus.STARTED)\n var context = this.context\n\n try {\n while (this.getState() == ScenarioInstanceStatus.STARTED) {\n if (this.nextStep == -1) {\n this.setNextStep(0)\n }\n\n if (this.nextStep == 0) {\n this.rounds++\n this.context.logger.info(`Start ${this.rounds} Rounds #######`)\n }\n\n var step = this.steps[this.nextStep]\n var next, data\n\n if (!step.skip) {\n // @ts-ignore: Initializer provides no value for this binding element and the binding element has no default value.\n var { next, state: stepState, data } = (await this.process(step, context)) || {}\n context.data[step.name] = data\n } else {\n next = ''\n stepState = undefined\n }\n\n this.publishState()\n\n await sleep(1)\n\n if (next) {\n this.setNextStep(\n this.steps.findIndex(step => {\n return step.name == next\n })\n )\n if (this.nextStep == -1) {\n throw 'Not Found Next Step'\n }\n } else if (this.nextStep == this.steps.length - 1) {\n this.setState(ScenarioInstanceStatus.STOPPED)\n } else {\n this.setNextStep(this.nextStep + 1)\n }\n\n /* last step 에 의해서 시나리오 state를 변경할 수 있도록 함. */\n if (stepState !== undefined) {\n this.setState(stepState)\n }\n }\n } catch (ex) {\n const message = ex.stack ? ex.stack : ex\n const { scenarioName, domain } = this\n\n this.context.logger.error(ex)\n\n debug('failed to run ', `[ Domain: ${domain.name}, Scenario: ${scenarioName} ]\\n`, ex)\n this.setState(\n ScenarioInstanceStatus.HALTED,\n typeof message == 'object' ? JSON.stringify(message, null, 2) : message\n )\n\n throw ex\n }\n\n this.result = this.steps\n .filter(step => !!step.result)\n .reduce((sum, step) => {\n sum[step.name] = this.context.data[step.name]\n return sum\n }, {})\n\n const { scenarioId, scenarioTtl, variables, message, scenarioName, instanceName, result, domain } = this\n const obj = {\n scenarioName,\n instanceName,\n variables,\n data: this.data,\n result,\n timestamp: new Date(),\n message,\n state: ScenarioInstanceStatus.STOPPED /* redundent, no meaning */\n }\n\n if (this.scenarioTtl && this.scenarioId) {\n setTimeout(() => {\n cacheService.setInCache(scenarioId, { domain: domain.id, variables: variables || {} }, obj, scenarioTtl)\n })\n }\n\n return obj\n }\n\n async loadSubscenario(step, scenarioConfig, context) {\n var { name: stepName, params } = step\n var { preventErrorPropagation } = params || {}\n\n debug('load-subscenario', this.instanceName, stepName, scenarioConfig.name)\n\n context.data[stepName] = {}\n\n let subContext = {\n ...context,\n data: context.data[stepName],\n closures: [],\n state: ScenarioInstanceStatus.READY\n }\n\n if (!scenarioConfig.domain) {\n scenarioConfig.domain = context.domain\n }\n\n var subScenarioInstance = new ScenarioInstance(`${this.instanceName}$${stepName}`, scenarioConfig, subContext)\n this.addSubScenarioInstance(subScenarioInstance)\n await subScenarioInstance.run()\n\n if (!preventErrorPropagation && subScenarioInstance.getState() == ScenarioInstanceStatus.HALTED) {\n throw new Error(`Sub-scenario[${this.instanceName}$${stepName}] is halted.`)\n }\n\n return subContext\n }\n\n publishData(tag, data) {\n publishData(tag, data, this.context)\n }\n\n publishState() {\n const {\n instanceName,\n scenarioName,\n steps,\n domain,\n message,\n context: { data, variables, state }\n } = this\n\n pubsub.publish('scenario-instance-state', {\n scenarioInstanceState: {\n domain,\n instanceName,\n scenarioName,\n state,\n variables,\n progress: this.calcProgress(),\n data,\n message,\n timestamp: new Date()\n }\n })\n\n this.context.logger.info(this.message)\n }\n\n calcProgress(): ScenarioInstanceProgress {\n var steps = this.steps.length\n var step = Math.max(this.lastStep, 0)\n\n return {\n rounds: this.rounds,\n rate: steps ? Math.round(100 * (step / steps)) : 0,\n steps,\n step\n }\n }\n\n setNextStep(step) {\n this.lastStep = this.nextStep + 1\n this.nextStep = step\n }\n\n getState(): ScenarioInstanceStatus {\n return this.context.state\n }\n\n setState(state, message?) {\n if (this.context.state == state) {\n return\n }\n\n this.message = `${this.instanceName}:[state changed] ${ScenarioInstanceStatus[this.getState()]} => ${ScenarioInstanceStatus[state]}${\n message ? ' caused by ' + util.inspect(message, false, 2, true) : ''\n }`\n\n this.context.state = state\n\n if (state == ScenarioInstanceStatus.STOPPED || state == ScenarioInstanceStatus.HALTED) {\n this.setNextStep(-1)\n this.setState(ScenarioInstanceStatus.UNLOADED)\n } else if (state == ScenarioInstanceStatus.UNLOADED) {\n this.setNextStep(-1)\n this.dispose()\n }\n\n this.publishState()\n }\n\n async start() {\n await this.run()\n }\n\n stop() {\n if (this.getState() !== ScenarioInstanceStatus.HALTED) {\n this.setState(ScenarioInstanceStatus.STOPPED)\n }\n }\n\n unload() {\n this.setState(ScenarioInstanceStatus.UNLOADED)\n }\n\n async dispose() {\n await this.stopSubScenarios()\n\n this.unload()\n\n var closure = this.context?.closures?.pop()\n while (closure) {\n closure.call(this)\n closure = this.context?.closures?.pop()\n }\n\n if (this.disposer) {\n await this.disposer.call(this)\n }\n\n // {{ CHECKPOINT 본 인스턴스를 위해서 생성된 logger를 닫는다. 사용을 완료하고 닫기위해서 지연해서 수행한다.\n if (this.context?.logger) {\n setTimeout(() => {\n this.context.logger.close()\n }, 300)\n }\n // }}\n }\n\n async process(step, context): Promise<{ next: string; state: ScenarioInstanceStatus; data: object }> {\n this.context.logger.info(`Step '${step.name}'(${step.id}) started.`)\n\n step = {\n ...step,\n params: step.params || {}\n }\n\n const connection =\n step.connection && ConnectionManager.getConnectionInstanceEntityByName(this.domain, step.connection)\n\n if (!connection || !connection.edgeId) {\n var handler = TaskRegistry.getTaskHandler(step.task)\n if (!handler) {\n throw new Error(`no task handler for step '${step.name}'(${step.id})`)\n }\n\n var retval: any = await handler(step, context)\n } else {\n var retval: any = await edgeHandler(step, context)\n }\n\n if (step.log) {\n var { data } = retval || {}\n this.context.logger.info(`returns ${typeof data == 'string' ? data : JSON.stringify(data, null, 2)}`)\n }\n\n this.context.logger.info(`Step done.`)\n return retval\n }\n}\n\n@ObjectType({ description: 'A paginated list of scenario instances.' })\nexport class ScenarioInstanceList {\n @Field(type => [ScenarioInstance], { description: 'The list of scenario instance items.' })\n items: ScenarioInstance[]\n\n @Field(type => Int, { description: 'The total number of scenario instances.' })\n total: number\n}\n"]}
|
@@ -16,6 +16,7 @@ let ScenarioQueueSubscription = class ScenarioQueueSubscription {
|
|
16
16
|
exports.ScenarioQueueSubscription = ScenarioQueueSubscription;
|
17
17
|
tslib_1.__decorate([
|
18
18
|
(0, type_graphql_1.Subscription)({
|
19
|
+
description: 'Subscribes to changes in the scenario queue.',
|
19
20
|
subscribe: ({ args, context, info }) => {
|
20
21
|
const { domain, user } = context.state;
|
21
22
|
const subdomain = domain?.subdomain;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"scenario-queue-subscription.js","sourceRoot":"","sources":["../../../server/service/scenario-queue/scenario-queue-subscription.ts"],"names":[],"mappings":";;;;AAAA,+CAAgE;AAChE,+DAA0D;AAC1D,iDAA8C;AAC9C,+CAA2C;AAC3C,yCAA6C;AAE7C,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,oDAAoD,CAAC,CAAA;AAG7E,IAAM,yBAAyB,GAA/B,MAAM,yBAAyB;
|
1
|
+
{"version":3,"file":"scenario-queue-subscription.js","sourceRoot":"","sources":["../../../server/service/scenario-queue/scenario-queue-subscription.ts"],"names":[],"mappings":";;;;AAAA,+CAAgE;AAChE,+DAA0D;AAC1D,iDAA8C;AAC9C,+CAA2C;AAC3C,yCAA6C;AAE7C,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,oDAAoD,CAAC,CAAA;AAG7E,IAAM,yBAAyB,GAA/B,MAAM,yBAAyB;IA2CpC,kBAAkB,CAAS,OAAmD;QAC5E,OAAO,OAAO,CAAC,kBAAkB,CAAA;IACnC,CAAC;CACF,CAAA;AA9CY,8DAAyB;AA2CpC;IA1CC,IAAA,2BAAY,EAAC;QACZ,WAAW,EAAE,8CAA8C;QAC3D,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE;YACrC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;YACtC,MAAM,SAAS,GAAG,MAAM,EAAE,SAAS,CAAA;YAEnC,KAAK,CAAC,WAAW,EAAE,SAAS,CAAC,CAAA;YAE7B,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAA;YACrC,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC;gBACnG,MAAM,IAAI,KAAK,CAAC,UAAU,SAAS,6BAA6B,IAAI,CAAC,KAAK,IAAI,CAAC,CAAA;YACjF,CAAC;YAED,OAAO,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;gBAC1B,IAAI,KAAK,GAAG,uBAAc,CAAC,eAAe,CAAC,MAAM,CAAC,CAAA;gBAClD,IAAI,KAAK,EAAE,CAAC;oBACV,cAAM,CAAC,OAAO,CAAC,sBAAsB,EAAE;wBACrC,kBAAkB,EAAE;4BAClB,MAAM;4BACN,KAAK,EAAE,KAAK,CAAC,KAAK;yBACnB;qBACF,CAAC,CAAA;gBACJ,CAAC;YACH,CAAC,CAAC,CAAA;YAEF,OAAO,IAAA,mBAAI,EACT,cAAM,CAAC,SAAS,CAAC,sBAAsB,CAAC,EACxC,IAAA,qBAAM,EAAC,CAAC,OAAmD,EAAE,EAAE;gBAC7D,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAA;gBAEtD,IAAI,OAAO,EAAE,SAAS,KAAK,SAAS,EAAE,CAAC;oBACrC,OAAO,KAAK,CAAA;gBACd,CAAC;gBAED,OAAO,IAAI,CAAA;YACb,CAAC,CAAC,CACH,CAAA;QACH,CAAC;KACF,CAAC;IACkB,mBAAA,IAAA,mBAAI,GAAE,CAAA;;;4CAAuD,wCAAkB;mEAElG;oCA7CU,yBAAyB;IADrC,IAAA,uBAAQ,GAAE;GACE,yBAAyB,CA8CrC","sourcesContent":["import { Resolver, Subscription, Root, Arg } from 'type-graphql'\nimport { ScenarioQueueState } from './scenario-queue-type'\nimport { pubsub } from '@things-factory/shell'\nimport { filter, pipe } from 'graphql-yoga'\nimport { ScenarioEngine } from '../../engine'\n\nconst debug = require('debug')('things-factory:integration:connection-subscription')\n\n@Resolver()\nexport class ScenarioQueueSubscription {\n @Subscription({\n description: 'Subscribes to changes in the scenario queue.',\n subscribe: ({ args, context, info }) => {\n const { domain, user } = context.state\n const subdomain = domain?.subdomain\n\n debug('subscribe', subdomain)\n\n if (!domain) {\n throw new Error('domain required.')\n }\n\n if (!user.domains?.find(d => d.subdomain === subdomain) && !process.superUserGranted(domain, user)) {\n throw new Error(`domain(${subdomain}) is not working for user(${user.email}).`)\n }\n\n process.nextTick(async () => {\n var queue = ScenarioEngine.getPendingQueue(domain)\n if (queue) {\n pubsub.publish('scenario-queue-state', {\n scenarioQueueState: {\n domain,\n queue: queue.queue\n }\n })\n }\n })\n\n return pipe(\n pubsub.subscribe('scenario-queue-state'),\n filter((payload: { scenarioQueueState: ScenarioQueueState }) => {\n const { domain: pdomain } = payload.scenarioQueueState\n\n if (pdomain?.subdomain !== subdomain) {\n return false\n }\n\n return true\n })\n )\n }\n })\n scenarioQueueState(@Root() payload: { scenarioQueueState: ScenarioQueueState }): ScenarioQueueState {\n return payload.scenarioQueueState\n }\n}\n"]}
|
@@ -8,36 +8,36 @@ let PendingObject = class PendingObject {
|
|
8
8
|
};
|
9
9
|
exports.PendingObject = PendingObject;
|
10
10
|
tslib_1.__decorate([
|
11
|
-
(0, type_graphql_1.Field)(type => shell_1.ScalarObject),
|
11
|
+
(0, type_graphql_1.Field)(type => shell_1.ScalarObject, { description: 'The actual data or task object in the queue.' }),
|
12
12
|
tslib_1.__metadata("design:type", Object)
|
13
13
|
], PendingObject.prototype, "stuff", void 0);
|
14
14
|
tslib_1.__decorate([
|
15
|
-
(0, type_graphql_1.Field)(),
|
15
|
+
(0, type_graphql_1.Field)({ description: 'The timestamp indicating when the item is due for processing.' }),
|
16
16
|
tslib_1.__metadata("design:type", String)
|
17
17
|
], PendingObject.prototype, "due", void 0);
|
18
18
|
tslib_1.__decorate([
|
19
|
-
(0, type_graphql_1.Field)(type => type_graphql_1.Int),
|
19
|
+
(0, type_graphql_1.Field)(type => type_graphql_1.Int, { description: 'The priority level of the item in the queue.' }),
|
20
20
|
tslib_1.__metadata("design:type", Number)
|
21
21
|
], PendingObject.prototype, "priority", void 0);
|
22
22
|
tslib_1.__decorate([
|
23
|
-
(0, type_graphql_1.Field)({ nullable: true }),
|
23
|
+
(0, type_graphql_1.Field)({ nullable: true, description: 'A tag for categorizing or filtering queue items.' }),
|
24
24
|
tslib_1.__metadata("design:type", String)
|
25
25
|
], PendingObject.prototype, "tag", void 0);
|
26
26
|
exports.PendingObject = PendingObject = tslib_1.__decorate([
|
27
|
-
(0, type_graphql_1.ObjectType)()
|
27
|
+
(0, type_graphql_1.ObjectType)({ description: 'Represents an item pending in a scenario queue.' })
|
28
28
|
], PendingObject);
|
29
29
|
let ScenarioQueueState = class ScenarioQueueState {
|
30
30
|
};
|
31
31
|
exports.ScenarioQueueState = ScenarioQueueState;
|
32
32
|
tslib_1.__decorate([
|
33
|
-
(0, type_graphql_1.Field)(),
|
33
|
+
(0, type_graphql_1.Field)({ description: 'The domain to which this queue state belongs.' }),
|
34
34
|
tslib_1.__metadata("design:type", shell_1.Domain)
|
35
35
|
], ScenarioQueueState.prototype, "domain", void 0);
|
36
36
|
tslib_1.__decorate([
|
37
|
-
(0, type_graphql_1.Field)(type => [PendingObject]),
|
37
|
+
(0, type_graphql_1.Field)(type => [PendingObject], { description: 'The list of pending items in the queue.' }),
|
38
38
|
tslib_1.__metadata("design:type", Array)
|
39
39
|
], ScenarioQueueState.prototype, "queue", void 0);
|
40
40
|
exports.ScenarioQueueState = ScenarioQueueState = tslib_1.__decorate([
|
41
|
-
(0, type_graphql_1.ObjectType)()
|
41
|
+
(0, type_graphql_1.ObjectType)({ description: 'Represents the state of a scenario queue for a specific domain.' })
|
42
42
|
], ScenarioQueueState);
|
43
43
|
//# sourceMappingURL=scenario-queue-type.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"scenario-queue-type.js","sourceRoot":"","sources":["../../../server/service/scenario-queue/scenario-queue-type.ts"],"names":[],"mappings":";;;;AAAA,+CAAqD;AAErD,iDAA4D;AAGrD,IAAM,aAAa,GAAnB,MAAM,aAAa;CAYzB,CAAA;AAZY,sCAAa;AAExB;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,oBAAY,CAAC;;
|
1
|
+
{"version":3,"file":"scenario-queue-type.js","sourceRoot":"","sources":["../../../server/service/scenario-queue/scenario-queue-type.ts"],"names":[],"mappings":";;;;AAAA,+CAAqD;AAErD,iDAA4D;AAGrD,IAAM,aAAa,GAAnB,MAAM,aAAa;CAYzB,CAAA;AAZY,sCAAa;AAExB;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,oBAAY,EAAE,EAAE,WAAW,EAAE,8CAA8C,EAAE,CAAC;;4CACnF;AAGV;IADC,IAAA,oBAAK,EAAC,EAAE,WAAW,EAAE,+DAA+D,EAAE,CAAC;;0CAC7E;AAGX;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,kBAAG,EAAE,EAAE,WAAW,EAAE,8CAA8C,EAAE,CAAC;;+CACpE;AAGhB;IADC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,kDAAkD,EAAE,CAAC;sCACtF,MAAM;0CAAA;wBAXA,aAAa;IADzB,IAAA,yBAAU,EAAC,EAAE,WAAW,EAAE,iDAAiD,EAAE,CAAC;GAClE,aAAa,CAYzB;AAGM,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;CAM9B,CAAA;AANY,gDAAkB;AAE7B;IADC,IAAA,oBAAK,EAAC,EAAE,WAAW,EAAE,+CAA+C,EAAE,CAAC;sCAChE,cAAM;kDAAA;AAGd;IADC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,EAAE,EAAE,WAAW,EAAE,yCAAyC,EAAE,CAAC;;iDACrE;6BALX,kBAAkB;IAD9B,IAAA,yBAAU,EAAC,EAAE,WAAW,EAAE,iEAAiE,EAAE,CAAC;GAClF,kBAAkB,CAM9B","sourcesContent":["import { Field, Int, ObjectType } from 'type-graphql'\n\nimport { Domain, ScalarObject } from '@things-factory/shell'\n\n@ObjectType({ description: 'Represents an item pending in a scenario queue.' })\nexport class PendingObject {\n @Field(type => ScalarObject, { description: 'The actual data or task object in the queue.' })\n stuff: any\n\n @Field({ description: 'The timestamp indicating when the item is due for processing.' })\n due: string\n\n @Field(type => Int, { description: 'The priority level of the item in the queue.' })\n priority: number\n\n @Field({ nullable: true, description: 'A tag for categorizing or filtering queue items.' })\n tag: String\n}\n\n@ObjectType({ description: 'Represents the state of a scenario queue for a specific domain.' })\nexport class ScenarioQueueState {\n @Field({ description: 'The domain to which this queue state belongs.' })\n domain: Domain\n\n @Field(type => [PendingObject], { description: 'The list of pending items in the queue.' })\n queue: PendingObject[]\n}\n"]}
|
@@ -101,7 +101,7 @@ exports.StateRegisterMutation = StateRegisterMutation;
|
|
101
101
|
tslib_1.__decorate([
|
102
102
|
(0, type_graphql_1.Directive)('@transaction'),
|
103
103
|
(0, type_graphql_1.Directive)('@privilege(category: "state-register", privilege: "mutation", domainOwnerGranted: true)'),
|
104
|
-
(0, type_graphql_1.Mutation)(returns => state_register_1.StateRegister, { description: '
|
104
|
+
(0, type_graphql_1.Mutation)(returns => state_register_1.StateRegister, { description: 'Creates a new state register.' }),
|
105
105
|
tslib_1.__param(0, (0, type_graphql_1.Arg)('stateRegister')),
|
106
106
|
tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
|
107
107
|
tslib_1.__metadata("design:type", Function),
|
@@ -111,7 +111,7 @@ tslib_1.__decorate([
|
|
111
111
|
tslib_1.__decorate([
|
112
112
|
(0, type_graphql_1.Directive)('@transaction'),
|
113
113
|
(0, type_graphql_1.Directive)('@privilege(category: "state-register", privilege: "mutation", domainOwnerGranted: true)'),
|
114
|
-
(0, type_graphql_1.Mutation)(returns => state_register_1.StateRegister, { description: '
|
114
|
+
(0, type_graphql_1.Mutation)(returns => state_register_1.StateRegister, { description: 'Updates an existing state register.' }),
|
115
115
|
tslib_1.__param(0, (0, type_graphql_1.Arg)('id')),
|
116
116
|
tslib_1.__param(1, (0, type_graphql_1.Arg)('patch')),
|
117
117
|
tslib_1.__param(2, (0, type_graphql_1.Ctx)()),
|
@@ -122,7 +122,7 @@ tslib_1.__decorate([
|
|
122
122
|
tslib_1.__decorate([
|
123
123
|
(0, type_graphql_1.Directive)('@transaction'),
|
124
124
|
(0, type_graphql_1.Directive)('@privilege(category: "state-register", privilege: "mutation", domainOwnerGranted: true)'),
|
125
|
-
(0, type_graphql_1.Mutation)(returns => [state_register_1.StateRegister], { description:
|
125
|
+
(0, type_graphql_1.Mutation)(returns => [state_register_1.StateRegister], { description: 'Updates multiple state registers at once.' }),
|
126
126
|
tslib_1.__param(0, (0, type_graphql_1.Arg)('patches', type => [state_register_type_1.StateRegisterPatch])),
|
127
127
|
tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
|
128
128
|
tslib_1.__metadata("design:type", Function),
|
@@ -132,7 +132,9 @@ tslib_1.__decorate([
|
|
132
132
|
tslib_1.__decorate([
|
133
133
|
(0, type_graphql_1.Directive)('@transaction'),
|
134
134
|
(0, type_graphql_1.Directive)('@privilege(category: "state-register", privilege: "mutation", domainOwnerGranted: true)'),
|
135
|
-
(0, type_graphql_1.Mutation)(returns => state_register_1.StateRegister, {
|
135
|
+
(0, type_graphql_1.Mutation)(returns => state_register_1.StateRegister, {
|
136
|
+
description: 'Updates the state of a specific state register, identified by its name.'
|
137
|
+
}),
|
136
138
|
tslib_1.__param(0, (0, type_graphql_1.Arg)('name')),
|
137
139
|
tslib_1.__param(1, (0, type_graphql_1.Arg)('state', type => shell_1.ScalarObject)),
|
138
140
|
tslib_1.__param(2, (0, type_graphql_1.Ctx)()),
|
@@ -143,7 +145,7 @@ tslib_1.__decorate([
|
|
143
145
|
tslib_1.__decorate([
|
144
146
|
(0, type_graphql_1.Directive)('@transaction'),
|
145
147
|
(0, type_graphql_1.Directive)('@privilege(category: "state-register", privilege: "mutation", domainOwnerGranted: true)'),
|
146
|
-
(0, type_graphql_1.Mutation)(returns => Boolean, { description: '
|
148
|
+
(0, type_graphql_1.Mutation)(returns => Boolean, { description: 'Deletes a single state register by its ID.' }),
|
147
149
|
tslib_1.__param(0, (0, type_graphql_1.Arg)('id')),
|
148
150
|
tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
|
149
151
|
tslib_1.__metadata("design:type", Function),
|
@@ -153,7 +155,7 @@ tslib_1.__decorate([
|
|
153
155
|
tslib_1.__decorate([
|
154
156
|
(0, type_graphql_1.Directive)('@transaction'),
|
155
157
|
(0, type_graphql_1.Directive)('@privilege(category: "state-register", privilege: "mutation", domainOwnerGranted: true)'),
|
156
|
-
(0, type_graphql_1.Mutation)(returns => Boolean, { description: '
|
158
|
+
(0, type_graphql_1.Mutation)(returns => Boolean, { description: 'Deletes multiple state registers by their IDs.' }),
|
157
159
|
tslib_1.__param(0, (0, type_graphql_1.Arg)('ids', type => [String])),
|
158
160
|
tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
|
159
161
|
tslib_1.__metadata("design:type", Function),
|
@@ -163,7 +165,7 @@ tslib_1.__decorate([
|
|
163
165
|
tslib_1.__decorate([
|
164
166
|
(0, type_graphql_1.Directive)('@transaction'),
|
165
167
|
(0, type_graphql_1.Directive)('@privilege(category: "state-register", privilege: "mutation", domainOwnerGranted: true)'),
|
166
|
-
(0, type_graphql_1.Mutation)(returns => Boolean, { description: '
|
168
|
+
(0, type_graphql_1.Mutation)(returns => Boolean, { description: 'Imports multiple state registers from a provided list.' }),
|
167
169
|
tslib_1.__param(0, (0, type_graphql_1.Arg)('stateRegisters', type => [state_register_type_1.StateRegisterPatch])),
|
168
170
|
tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
|
169
171
|
tslib_1.__metadata("design:type", Function),
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"state-register-mutation.js","sourceRoot":"","sources":["../../../server/service/state-register/state-register-mutation.ts"],"names":[],"mappings":";;;;AAAA,+CAAsE;AACtE,qCAA4B;AAE5B,iDAAoD;AACpD,qDAAgD;AAChD,+DAA4E;AAGrE,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IAI1B,AAAN,KAAK,CAAC,mBAAmB,CACD,aAA+B,EAC9C,OAAwB;QAE/B,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAE1C,OAAO,MAAM,EAAE,CAAC,aAAa,CAAC,8BAAa,CAAC,CAAC,IAAI,CAAC;YAChD,GAAG,aAAa;YAChB,MAAM;YACN,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,IAAI;SACd,CAAC,CAAA;IACJ,CAAC;IAKK,AAAN,KAAK,CAAC,mBAAmB,CACZ,EAAU,EACP,KAAyB,EAChC,OAAwB;QAE/B,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAE1C,MAAM,UAAU,GAAG,EAAE,CAAC,aAAa,CAAC,8BAAa,CAAC,CAAA;QAClD,MAAM,aAAa,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC;YAC7C,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;SACzC,CAAC,CAAA;QAEF,OAAO,MAAM,UAAU,CAAC,IAAI,CAAC;YAC3B,GAAG,aAAa;YAChB,GAAG,KAAK;YACR,OAAO,EAAE,IAAI;SACd,CAAC,CAAA;IACJ,CAAC;IAKK,AAAN,KAAK,CAAC,2BAA2B,CACe,OAA6B,EACpE,OAAwB;QAE/B,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAE1C,IAAI,OAAO,GAAG,EAAE,CAAA;QAChB,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,KAAU,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC,CAAA;QACzF,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,KAAU,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC,CAAA;QACzF,MAAM,iBAAiB,GAAG,EAAE,CAAC,aAAa,CAAC,8BAAa,CAAC,CAAA;QAEzD,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC/C,MAAM,SAAS,GAAG,cAAc,CAAC,CAAC,CAAC,CAAA;gBAEnC,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC;oBAC1C,GAAG,SAAS;oBACZ,MAAM;oBACN,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE,IAAI;iBACd,CAAC,CAAA;gBAEF,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;YAC1C,CAAC;QACH,CAAC;QAED,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC/C,MAAM,YAAY,GAAG,cAAc,CAAC,CAAC,CAAC,CAAA;gBACtC,MAAM,aAAa,GAAG,MAAM,iBAAiB,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,YAAY,CAAC,EAAE,EAAE,CAAC,CAAA;gBAEhF,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC;oBAC1C,GAAG,aAAa;oBAChB,GAAG,YAAY;oBACf,OAAO,EAAE,IAAI;iBACd,CAAC,CAAA;gBAEF,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;YAC1C,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAA;IAChB,CAAC;IAKK,AAAN,KAAK,CAAC,yBAAyB,CAChB,IAAY,EACW,KAAU,EACvC,OAAwB;QAE/B,MAAM,EAAE,MAAM,EAAE,IAAI,GAAG,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAEjD,MAAM,UAAU,GAAG,EAAE,CAAC,aAAa,CAAC,8BAAa,CAAC,CAAA;QAClD,MAAM,aAAa,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC;YAC7C,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE;SAC5C,CAAC,CAAA;QAEF,OAAO,MAAM,UAAU,CAAC,IAAI,CAAC;YAC3B,GAAG,aAAa;YAChB,KAAK;YACL,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,IAAI,IAAI,EAAE;SACpB,CAAC,CAAA;IACJ,CAAC;IAKK,AAAN,KAAK,CAAC,mBAAmB,CAAY,EAAU,EAAS,OAAwB;QAC9E,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAEpC,MAAM,EAAE,CAAC,aAAa,CAAC,8BAAa,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;QAE/E,OAAO,IAAI,CAAA;IACb,CAAC;IAKK,AAAN,KAAK,CAAC,oBAAoB,CACM,GAAa,EACpC,OAAwB;QAE/B,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAEpC,MAAM,EAAE,CAAC,aAAa,CAAC,8BAAa,CAAC,CAAC,MAAM,CAAC;YAC3C,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE;YACzB,EAAE,EAAE,IAAA,YAAE,EAAC,GAAG,CAAC;SACZ,CAAC,CAAA;QAEF,OAAO,IAAI,CAAA;IACb,CAAC;IAKK,AAAN,KAAK,CAAC,oBAAoB,CAC6B,cAAoC,EAClF,OAAwB;QAE/B,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAEpC,MAAM,OAAO,CAAC,GAAG,CACf,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,aAAiC,EAAE,EAAE;YAC7D,MAAM,oBAAoB,GAAkB,MAAM,EAAE;iBACjD,aAAa,CAAC,8BAAa,CAAC;iBAC5B,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,aAAa,EAAE,CAAC,CAAA;QACvC,CAAC,CAAC,CACH,CAAA;QAED,OAAO,IAAI,CAAA;IACb,CAAC;CACF,CAAA;AA7JY,sDAAqB;AAI1B;IAHL,IAAA,wBAAS,EAAC,cAAc,CAAC;IACzB,IAAA,wBAAS,EAAC,yFAAyF,CAAC;IACpG,IAAA,uBAAQ,EAAC,OAAO,CAAC,EAAE,CAAC,8BAAa,EAAE,EAAE,WAAW,EAAE,6BAA6B,EAAE,CAAC;IAEhF,mBAAA,IAAA,kBAAG,EAAC,eAAe,CAAC,CAAA;IACpB,mBAAA,IAAA,kBAAG,GAAE,CAAA;;6CAD+B,sCAAgB;;gEAWtD;AAKK;IAHL,IAAA,wBAAS,EAAC,cAAc,CAAC;IACzB,IAAA,wBAAS,EAAC,yFAAyF,CAAC;IACpG,IAAA,uBAAQ,EAAC,OAAO,CAAC,EAAE,CAAC,8BAAa,EAAE,EAAE,WAAW,EAAE,qCAAqC,EAAE,CAAC;IAExF,mBAAA,IAAA,kBAAG,EAAC,IAAI,CAAC,CAAA;IACT,mBAAA,IAAA,kBAAG,EAAC,OAAO,CAAC,CAAA;IACZ,mBAAA,IAAA,kBAAG,GAAE,CAAA;;qDADe,wCAAkB;;gEAexC;AAKK;IAHL,IAAA,wBAAS,EAAC,cAAc,CAAC;IACzB,IAAA,wBAAS,EAAC,yFAAyF,CAAC;IACpG,IAAA,uBAAQ,EAAC,OAAO,CAAC,EAAE,CAAC,CAAC,8BAAa,CAAC,EAAE,EAAE,WAAW,EAAE,gDAAgD,EAAE,CAAC;IAErG,mBAAA,IAAA,kBAAG,EAAC,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,wCAAkB,CAAC,CAAC,CAAA;IAC5C,mBAAA,IAAA,kBAAG,GAAE,CAAA;;;;wEAwCP;AAKK;IAHL,IAAA,wBAAS,EAAC,cAAc,CAAC;IACzB,IAAA,wBAAS,EAAC,yFAAyF,CAAC;IACpG,IAAA,uBAAQ,EAAC,OAAO,CAAC,EAAE,CAAC,8BAAa,EAAE,EAAE,WAAW,EAAE,0CAA0C,EAAE,CAAC;IAE7F,mBAAA,IAAA,kBAAG,EAAC,MAAM,CAAC,CAAA;IACX,mBAAA,IAAA,kBAAG,EAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,oBAAY,CAAC,CAAA;IAClC,mBAAA,IAAA,kBAAG,GAAE,CAAA;;;;sEAeP;AAKK;IAHL,IAAA,wBAAS,EAAC,cAAc,CAAC;IACzB,IAAA,wBAAS,EAAC,yFAAyF,CAAC;IACpG,IAAA,uBAAQ,EAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,yBAAyB,EAAE,CAAC;IAC9C,mBAAA,IAAA,kBAAG,EAAC,IAAI,CAAC,CAAA;IAAc,mBAAA,IAAA,kBAAG,GAAE,CAAA;;;;gEAMtD;AAKK;IAHL,IAAA,wBAAS,EAAC,cAAc,CAAC;IACzB,IAAA,wBAAS,EAAC,yFAAyF,CAAC;IACpG,IAAA,uBAAQ,EAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,mCAAmC,EAAE,CAAC;IAEhF,mBAAA,IAAA,kBAAG,EAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA;IAC5B,mBAAA,IAAA,kBAAG,GAAE,CAAA;;;;iEAUP;AAKK;IAHL,IAAA,wBAAS,EAAC,cAAc,CAAC;IACzB,IAAA,wBAAS,EAAC,yFAAyF,CAAC;IACpG,IAAA,uBAAQ,EAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,mCAAmC,EAAE,CAAC;IAEhF,mBAAA,IAAA,kBAAG,EAAC,gBAAgB,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,wCAAkB,CAAC,CAAC,CAAA;IACnD,mBAAA,IAAA,kBAAG,GAAE,CAAA;;;;iEAaP;gCA5JU,qBAAqB;IADjC,IAAA,uBAAQ,EAAC,8BAAa,CAAC;GACX,qBAAqB,CA6JjC","sourcesContent":["import { Resolver, Mutation, Arg, Ctx, Directive } from 'type-graphql'\nimport { In } from 'typeorm'\n\nimport { ScalarObject } from '@things-factory/shell'\nimport { StateRegister } from './state-register'\nimport { NewStateRegister, StateRegisterPatch } from './state-register-type'\n\n@Resolver(StateRegister)\nexport class StateRegisterMutation {\n @Directive('@transaction')\n @Directive('@privilege(category: \"state-register\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Mutation(returns => StateRegister, { description: 'To create new StateRegister' })\n async createStateRegister(\n @Arg('stateRegister') stateRegister: NewStateRegister,\n @Ctx() context: ResolverContext\n ): Promise<StateRegister> {\n const { domain, user, tx } = context.state\n\n return await tx.getRepository(StateRegister).save({\n ...stateRegister,\n domain,\n creator: user,\n updater: user\n })\n }\n\n @Directive('@transaction')\n @Directive('@privilege(category: \"state-register\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Mutation(returns => StateRegister, { description: 'To modify StateRegister information' })\n async updateStateRegister(\n @Arg('id') id: string,\n @Arg('patch') patch: StateRegisterPatch,\n @Ctx() context: ResolverContext\n ): Promise<StateRegister> {\n const { domain, user, tx } = context.state\n\n const repository = tx.getRepository(StateRegister)\n const stateRegister = await repository.findOne({\n where: { domain: { id: domain.id }, id }\n })\n\n return await repository.save({\n ...stateRegister,\n ...patch,\n updater: user\n })\n }\n\n @Directive('@transaction')\n @Directive('@privilege(category: \"state-register\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Mutation(returns => [StateRegister], { description: \"To modify multiple StateRegisters' information\" })\n async updateMultipleStateRegister(\n @Arg('patches', type => [StateRegisterPatch]) patches: StateRegisterPatch[],\n @Ctx() context: ResolverContext\n ): Promise<StateRegister[]> {\n const { domain, user, tx } = context.state\n\n let results = []\n const _createRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === '+')\n const _updateRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === 'M')\n const stateRegisterRepo = tx.getRepository(StateRegister)\n\n if (_createRecords.length > 0) {\n for (let i = 0; i < _createRecords.length; i++) {\n const newRecord = _createRecords[i]\n\n const result = await stateRegisterRepo.save({\n ...newRecord,\n domain,\n creator: user,\n updater: user\n })\n\n results.push({ ...result, cuFlag: '+' })\n }\n }\n\n if (_updateRecords.length > 0) {\n for (let i = 0; i < _updateRecords.length; i++) {\n const updateRecord = _updateRecords[i]\n const stateRegister = await stateRegisterRepo.findOneBy({ id: updateRecord.id })\n\n const result = await stateRegisterRepo.save({\n ...stateRegister,\n ...updateRecord,\n updater: user\n })\n\n results.push({ ...result, cuFlag: 'M' })\n }\n }\n\n return results\n }\n\n @Directive('@transaction')\n @Directive('@privilege(category: \"state-register\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Mutation(returns => StateRegister, { description: 'To update state of StateRegister by name' })\n async updateStateRegisterByName(\n @Arg('name') name: string,\n @Arg('state', type => ScalarObject) state: any,\n @Ctx() context: ResolverContext\n ): Promise<StateRegister> {\n const { domain, user = null, tx } = context.state\n\n const repository = tx.getRepository(StateRegister)\n const stateRegister = await repository.findOne({\n where: { domain: { id: domain?.id }, name }\n })\n\n return await repository.save({\n ...stateRegister,\n state,\n writer: user,\n wroteAt: new Date()\n })\n }\n\n @Directive('@transaction')\n @Directive('@privilege(category: \"state-register\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Mutation(returns => Boolean, { description: 'To delete StateRegister' })\n async deleteStateRegister(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<boolean> {\n const { domain, tx } = context.state\n\n await tx.getRepository(StateRegister).delete({ domain: { id: domain.id }, id })\n\n return true\n }\n\n @Directive('@transaction')\n @Directive('@privilege(category: \"state-register\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Mutation(returns => Boolean, { description: 'To delete multiple StateRegisters' })\n async deleteStateRegisters(\n @Arg('ids', type => [String]) ids: string[],\n @Ctx() context: ResolverContext\n ): Promise<boolean> {\n const { domain, tx } = context.state\n\n await tx.getRepository(StateRegister).delete({\n domain: { id: domain.id },\n id: In(ids)\n })\n\n return true\n }\n\n @Directive('@transaction')\n @Directive('@privilege(category: \"state-register\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Mutation(returns => Boolean, { description: 'To import multiple StateRegisters' })\n async importStateRegisters(\n @Arg('stateRegisters', type => [StateRegisterPatch]) stateRegisters: StateRegisterPatch[],\n @Ctx() context: ResolverContext\n ): Promise<boolean> {\n const { domain, tx } = context.state\n\n await Promise.all(\n stateRegisters.map(async (stateRegister: StateRegisterPatch) => {\n const createdStateRegister: StateRegister = await tx\n .getRepository(StateRegister)\n .save({ domain, ...stateRegister })\n })\n )\n\n return true\n }\n}\n"]}
|
1
|
+
{"version":3,"file":"state-register-mutation.js","sourceRoot":"","sources":["../../../server/service/state-register/state-register-mutation.ts"],"names":[],"mappings":"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","sourcesContent":["import { Resolver, Mutation, Arg, Ctx, Directive } from 'type-graphql'\nimport { In } from 'typeorm'\n\nimport { ScalarObject } from '@things-factory/shell'\nimport { StateRegister } from './state-register'\nimport { NewStateRegister, StateRegisterPatch } from './state-register-type'\n\n@Resolver(StateRegister)\nexport class StateRegisterMutation {\n @Directive('@transaction')\n @Directive('@privilege(category: \"state-register\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Mutation(returns => StateRegister, { description: 'Creates a new state register.' })\n async createStateRegister(\n @Arg('stateRegister') stateRegister: NewStateRegister,\n @Ctx() context: ResolverContext\n ): Promise<StateRegister> {\n const { domain, user, tx } = context.state\n\n return await tx.getRepository(StateRegister).save({\n ...stateRegister,\n domain,\n creator: user,\n updater: user\n })\n }\n\n @Directive('@transaction')\n @Directive('@privilege(category: \"state-register\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Mutation(returns => StateRegister, { description: 'Updates an existing state register.' })\n async updateStateRegister(\n @Arg('id') id: string,\n @Arg('patch') patch: StateRegisterPatch,\n @Ctx() context: ResolverContext\n ): Promise<StateRegister> {\n const { domain, user, tx } = context.state\n\n const repository = tx.getRepository(StateRegister)\n const stateRegister = await repository.findOne({\n where: { domain: { id: domain.id }, id }\n })\n\n return await repository.save({\n ...stateRegister,\n ...patch,\n updater: user\n })\n }\n\n @Directive('@transaction')\n @Directive('@privilege(category: \"state-register\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Mutation(returns => [StateRegister], { description: 'Updates multiple state registers at once.' })\n async updateMultipleStateRegister(\n @Arg('patches', type => [StateRegisterPatch]) patches: StateRegisterPatch[],\n @Ctx() context: ResolverContext\n ): Promise<StateRegister[]> {\n const { domain, user, tx } = context.state\n\n let results = []\n const _createRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === '+')\n const _updateRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === 'M')\n const stateRegisterRepo = tx.getRepository(StateRegister)\n\n if (_createRecords.length > 0) {\n for (let i = 0; i < _createRecords.length; i++) {\n const newRecord = _createRecords[i]\n\n const result = await stateRegisterRepo.save({\n ...newRecord,\n domain,\n creator: user,\n updater: user\n })\n\n results.push({ ...result, cuFlag: '+' })\n }\n }\n\n if (_updateRecords.length > 0) {\n for (let i = 0; i < _updateRecords.length; i++) {\n const updateRecord = _updateRecords[i]\n const stateRegister = await stateRegisterRepo.findOneBy({ id: updateRecord.id })\n\n const result = await stateRegisterRepo.save({\n ...stateRegister,\n ...updateRecord,\n updater: user\n })\n\n results.push({ ...result, cuFlag: 'M' })\n }\n }\n\n return results\n }\n\n @Directive('@transaction')\n @Directive('@privilege(category: \"state-register\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Mutation(returns => StateRegister, {\n description: 'Updates the state of a specific state register, identified by its name.'\n })\n async updateStateRegisterByName(\n @Arg('name') name: string,\n @Arg('state', type => ScalarObject) state: any,\n @Ctx() context: ResolverContext\n ): Promise<StateRegister> {\n const { domain, user = null, tx } = context.state\n\n const repository = tx.getRepository(StateRegister)\n const stateRegister = await repository.findOne({\n where: { domain: { id: domain?.id }, name }\n })\n\n return await repository.save({\n ...stateRegister,\n state,\n writer: user,\n wroteAt: new Date()\n })\n }\n\n @Directive('@transaction')\n @Directive('@privilege(category: \"state-register\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Mutation(returns => Boolean, { description: 'Deletes a single state register by its ID.' })\n async deleteStateRegister(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<boolean> {\n const { domain, tx } = context.state\n\n await tx.getRepository(StateRegister).delete({ domain: { id: domain.id }, id })\n\n return true\n }\n\n @Directive('@transaction')\n @Directive('@privilege(category: \"state-register\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Mutation(returns => Boolean, { description: 'Deletes multiple state registers by their IDs.' })\n async deleteStateRegisters(\n @Arg('ids', type => [String]) ids: string[],\n @Ctx() context: ResolverContext\n ): Promise<boolean> {\n const { domain, tx } = context.state\n\n await tx.getRepository(StateRegister).delete({\n domain: { id: domain.id },\n id: In(ids)\n })\n\n return true\n }\n\n @Directive('@transaction')\n @Directive('@privilege(category: \"state-register\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Mutation(returns => Boolean, { description: 'Imports multiple state registers from a provided list.' })\n async importStateRegisters(\n @Arg('stateRegisters', type => [StateRegisterPatch]) stateRegisters: StateRegisterPatch[],\n @Ctx() context: ResolverContext\n ): Promise<boolean> {\n const { domain, tx } = context.state\n\n await Promise.all(\n stateRegisters.map(async (stateRegister: StateRegisterPatch) => {\n const createdStateRegister: StateRegister = await tx\n .getRepository(StateRegister)\n .save({ domain, ...stateRegister })\n })\n )\n\n return true\n }\n}\n"]}
|