@things-factory/dataset 8.0.0-beta.1 → 8.0.0-beta.2
Sign up to get free protection for your applications and to get access to all the features.
- package/package.json +13 -13
- package/client/activities/activity-data-collect-edit.ts +0 -105
- package/client/activities/activity-data-collect-view.ts +0 -91
- package/client/activities/activity-data-review-edit.ts +0 -133
- package/client/activities/activity-data-review-view.ts +0 -145
- package/client/activities/activity-ooc-resolve-edit.ts +0 -195
- package/client/activities/activity-ooc-resolve-view.ts +0 -143
- package/client/activities/activity-ooc-review-edit.ts +0 -173
- package/client/activities/activity-ooc-review-view.ts +0 -129
- package/client/bootstrap.ts +0 -35
- package/client/components/data-entry-form.ts +0 -109
- package/client/index.ts +0 -1
- package/client/pages/data-archive/data-archive-list-page.ts +0 -277
- package/client/pages/data-archive/data-archive-request-popup.ts +0 -177
- package/client/pages/data-entry/data-entry-list-page.ts +0 -464
- package/client/pages/data-key-set/data-key-item-list.ts +0 -183
- package/client/pages/data-key-set/data-key-set-importer.ts +0 -89
- package/client/pages/data-key-set/data-key-set-list-page.ts +0 -413
- package/client/pages/data-ooc/data-ooc-list-page.ts +0 -549
- package/client/pages/data-ooc/data-ooc-page.ts +0 -164
- package/client/pages/data-ooc/data-ooc-view.ts +0 -236
- package/client/pages/data-ooc/data-oocs-page.ts +0 -200
- package/client/pages/data-report/data-report-embed-page.ts +0 -108
- package/client/pages/data-report/data-report-list-page.ts +0 -454
- package/client/pages/data-report/data-report-samples-page.ts +0 -174
- package/client/pages/data-report/jasper-report-oocs-page.ts +0 -110
- package/client/pages/data-report/jasper-report-samples-crosstab-page.ts +0 -110
- package/client/pages/data-report/jasper-report-samples-page.ts +0 -110
- package/client/pages/data-sample/data-sample-list-page.ts +0 -442
- package/client/pages/data-sample/data-sample-page.ts +0 -55
- package/client/pages/data-sample/data-sample-search-page.ts +0 -424
- package/client/pages/data-sample/data-sample-view.ts +0 -292
- package/client/pages/data-sample/data-samples-page.ts +0 -249
- package/client/pages/data-sensor/data-sensor-list-page.ts +0 -456
- package/client/pages/data-set/data-item-list.ts +0 -304
- package/client/pages/data-set/data-set-importer.ts +0 -89
- package/client/pages/data-set/data-set-list-page.ts +0 -1078
- package/client/pages/data-summary/data-summary-list-page.ts +0 -363
- package/client/pages/data-summary/data-summary-period-page.ts +0 -439
- package/client/pages/data-summary/data-summary-search-page.ts +0 -426
- package/client/pages/data-summary/data-summary-view.ts +0 -133
- package/client/route.ts +0 -91
- package/client/tsconfig.json +0 -13
- package/server/activities/activity-data-collect.ts +0 -100
- package/server/activities/activity-data-review.ts +0 -82
- package/server/activities/activity-ooc-resolve.ts +0 -123
- package/server/activities/activity-ooc-review.ts +0 -144
- package/server/activities/index.ts +0 -11
- package/server/controllers/create-data-sample.ts +0 -426
- package/server/controllers/data-use-case.ts +0 -98
- package/server/controllers/finalize-data-collection.ts +0 -388
- package/server/controllers/index.ts +0 -3
- package/server/controllers/issue-data-collection-task.ts +0 -70
- package/server/controllers/jasper-report.ts +0 -186
- package/server/controllers/query-data-summary-by-period.ts +0 -178
- package/server/controllers/shiny-report.ts +0 -54
- package/server/engine/index.ts +0 -1
- package/server/engine/task/create-data-sample.ts +0 -100
- package/server/engine/task/index.ts +0 -2
- package/server/engine/task/issue-collect-data.ts +0 -45
- package/server/index.ts +0 -8
- package/server/routes.ts +0 -188
- package/server/service/data-archive/data-archive-mutation.ts +0 -273
- package/server/service/data-archive/data-archive-query.ts +0 -58
- package/server/service/data-archive/data-archive-type.ts +0 -48
- package/server/service/data-archive/data-archive.ts +0 -69
- package/server/service/data-archive/index.ts +0 -6
- package/server/service/data-key-set/data-key-item-type.ts +0 -31
- package/server/service/data-key-set/data-key-set-mutation.ts +0 -201
- package/server/service/data-key-set/data-key-set-query.ts +0 -68
- package/server/service/data-key-set/data-key-set-type.ts +0 -70
- package/server/service/data-key-set/data-key-set.ts +0 -86
- package/server/service/data-key-set/index.ts +0 -6
- package/server/service/data-ooc/data-ooc-mutation.ts +0 -154
- package/server/service/data-ooc/data-ooc-query.ts +0 -106
- package/server/service/data-ooc/data-ooc-subscription.ts +0 -48
- package/server/service/data-ooc/data-ooc-type.ts +0 -71
- package/server/service/data-ooc/data-ooc.ts +0 -259
- package/server/service/data-ooc/index.ts +0 -7
- package/server/service/data-sample/data-sample-mutation.ts +0 -18
- package/server/service/data-sample/data-sample-query.ts +0 -215
- package/server/service/data-sample/data-sample-type.ts +0 -47
- package/server/service/data-sample/data-sample.ts +0 -193
- package/server/service/data-sample/index.ts +0 -6
- package/server/service/data-sensor/data-sensor-mutation.ts +0 -116
- package/server/service/data-sensor/data-sensor-query.ts +0 -76
- package/server/service/data-sensor/data-sensor-type.ts +0 -104
- package/server/service/data-sensor/data-sensor.ts +0 -126
- package/server/service/data-sensor/index.ts +0 -6
- package/server/service/data-set/data-item-type.ts +0 -155
- package/server/service/data-set/data-set-mutation.ts +0 -552
- package/server/service/data-set/data-set-query.ts +0 -461
- package/server/service/data-set/data-set-type.ts +0 -204
- package/server/service/data-set/data-set.ts +0 -326
- package/server/service/data-set/index.ts +0 -6
- package/server/service/data-set-history/data-set-history-query.ts +0 -126
- package/server/service/data-set-history/data-set-history-type.ts +0 -12
- package/server/service/data-set-history/data-set-history.ts +0 -217
- package/server/service/data-set-history/event-subscriber.ts +0 -17
- package/server/service/data-set-history/index.ts +0 -7
- package/server/service/data-spec/data-spec-manager.ts +0 -21
- package/server/service/data-spec/data-spec-query.ts +0 -21
- package/server/service/data-spec/data-spec.ts +0 -45
- package/server/service/data-spec/index.ts +0 -5
- package/server/service/data-summary/data-summary-mutation.ts +0 -45
- package/server/service/data-summary/data-summary-query.ts +0 -179
- package/server/service/data-summary/data-summary-type.ts +0 -86
- package/server/service/data-summary/data-summary.ts +0 -170
- package/server/service/data-summary/index.ts +0 -7
- package/server/service/index.ts +0 -57
- package/server/tsconfig.json +0 -10
- package/server/utils/config-resolver.ts +0 -29
- package/server/utils/index.ts +0 -1
@@ -1,326 +0,0 @@
|
|
1
|
-
import { Field, ID, ObjectType, registerEnumType } from 'type-graphql'
|
2
|
-
import {
|
3
|
-
Column,
|
4
|
-
CreateDateColumn,
|
5
|
-
Entity,
|
6
|
-
Index,
|
7
|
-
ManyToOne,
|
8
|
-
PrimaryGeneratedColumn,
|
9
|
-
RelationId,
|
10
|
-
UpdateDateColumn,
|
11
|
-
VersionColumn
|
12
|
-
} from 'typeorm'
|
13
|
-
|
14
|
-
import { Role, User } from '@things-factory/auth-base'
|
15
|
-
import { ApprovalLineItem } from '@things-factory/organization'
|
16
|
-
import { Domain, ScalarObject } from '@things-factory/shell'
|
17
|
-
import { AssigneeItem } from '@things-factory/worklist'
|
18
|
-
import { Scenario } from '@things-factory/integration-base'
|
19
|
-
|
20
|
-
import { DataKeySet } from '../data-key-set/data-key-set'
|
21
|
-
import { DataItem } from './data-item-type'
|
22
|
-
|
23
|
-
export enum DataSetEntryType {
|
24
|
-
Generated = 'generated',
|
25
|
-
Board = 'board',
|
26
|
-
CustomElement = 'custom-element',
|
27
|
-
Page = 'page',
|
28
|
-
ExternalURL = 'external',
|
29
|
-
Jasper = 'jasper',
|
30
|
-
Shiny = 'shiny'
|
31
|
-
}
|
32
|
-
|
33
|
-
registerEnumType(DataSetEntryType, {
|
34
|
-
name: 'DataSetEntryType',
|
35
|
-
description: 'entry type enumeration for data-set'
|
36
|
-
})
|
37
|
-
|
38
|
-
export enum DataSetMonitorType {
|
39
|
-
Generated = 'generated',
|
40
|
-
Board = 'board',
|
41
|
-
CustomElement = 'custom-element',
|
42
|
-
Page = 'page',
|
43
|
-
ExternalURL = 'external'
|
44
|
-
}
|
45
|
-
|
46
|
-
registerEnumType(DataSetMonitorType, {
|
47
|
-
name: 'DataSetMonitorType',
|
48
|
-
description: 'monitor type enumeration for data-set'
|
49
|
-
})
|
50
|
-
|
51
|
-
export enum DataSetReportType {
|
52
|
-
Generated = 'generated',
|
53
|
-
Board = 'board',
|
54
|
-
CustomElement = 'custom-element',
|
55
|
-
Page = 'page',
|
56
|
-
ExternalURL = 'external'
|
57
|
-
}
|
58
|
-
|
59
|
-
registerEnumType(DataSetReportType, {
|
60
|
-
name: 'DataSetReportType',
|
61
|
-
description: 'report type enumeration for data-set'
|
62
|
-
})
|
63
|
-
|
64
|
-
export enum DataSetSummaryPeriodType {
|
65
|
-
Hour = 'hour',
|
66
|
-
WorkShift = 'work-shift',
|
67
|
-
WorkDate = 'work-date',
|
68
|
-
Day = 'day'
|
69
|
-
}
|
70
|
-
|
71
|
-
registerEnumType(DataSetSummaryPeriodType, {
|
72
|
-
name: 'DataSetSummaryPeriodType',
|
73
|
-
description: 'summary period type enumeration for data-set'
|
74
|
-
})
|
75
|
-
|
76
|
-
@ObjectType()
|
77
|
-
export class DataSetState {
|
78
|
-
@Field()
|
79
|
-
id: string
|
80
|
-
|
81
|
-
@Field()
|
82
|
-
scheduleId: string
|
83
|
-
|
84
|
-
@Field()
|
85
|
-
state: string
|
86
|
-
|
87
|
-
@Field()
|
88
|
-
startedAt: Date
|
89
|
-
|
90
|
-
@Field()
|
91
|
-
nextSchedule: Date
|
92
|
-
}
|
93
|
-
|
94
|
-
@Entity()
|
95
|
-
@Index('ix_data_set_0', (dataSet: DataSet) => [dataSet.domain, dataSet.name], { unique: true })
|
96
|
-
@ObjectType({ description: 'Entity for DataSet' })
|
97
|
-
export class DataSet {
|
98
|
-
@PrimaryGeneratedColumn('uuid')
|
99
|
-
@Field(type => ID, { description: 'The unique identifier of the dataset' })
|
100
|
-
readonly id: string
|
101
|
-
|
102
|
-
@ManyToOne(type => Domain)
|
103
|
-
@Field({ nullable: true, description: 'The domain to which the dataset belongs' })
|
104
|
-
domain?: Domain
|
105
|
-
|
106
|
-
@RelationId((dataSet: DataSet) => dataSet.domain)
|
107
|
-
domainId?: string
|
108
|
-
|
109
|
-
@Column()
|
110
|
-
@Field({ description: 'The name of the dataset' })
|
111
|
-
name?: string
|
112
|
-
|
113
|
-
@Column({ nullable: true })
|
114
|
-
@Field({ nullable: true, description: 'A description of the dataset' })
|
115
|
-
description?: string
|
116
|
-
|
117
|
-
@Column({ nullable: true })
|
118
|
-
@Field({ nullable: true, description: 'A tag name of data to be published when a data sample created' })
|
119
|
-
tag?: string
|
120
|
-
|
121
|
-
@VersionColumn({ nullable: true, default: 1 })
|
122
|
-
@Field({ nullable: true, description: 'The version of the dataset' })
|
123
|
-
version?: number = 1
|
124
|
-
|
125
|
-
@Column({ nullable: true })
|
126
|
-
@Field({ nullable: true, description: 'Indicates whether the dataset is currently active or in use.' })
|
127
|
-
active?: boolean
|
128
|
-
|
129
|
-
@ManyToOne(type => DataKeySet, { nullable: true })
|
130
|
-
@Field(type => DataKeySet, { nullable: true, description: 'The key set used for this dataset' })
|
131
|
-
dataKeySet?: DataKeySet
|
132
|
-
|
133
|
-
@RelationId((dataSet: DataSet) => dataSet.dataKeySet)
|
134
|
-
dataKeySetId?: string
|
135
|
-
|
136
|
-
@ManyToOne(type => Role, { nullable: true })
|
137
|
-
@Field(type => Role, {
|
138
|
-
nullable: true,
|
139
|
-
description: 'The person responsible for manually entering the data for that dataset'
|
140
|
-
})
|
141
|
-
entryRole?: Role
|
142
|
-
|
143
|
-
@RelationId((dataSet: DataSet) => dataSet.entryRole)
|
144
|
-
entryRoleId?: string
|
145
|
-
|
146
|
-
@ManyToOne(type => Role, { nullable: true })
|
147
|
-
@Field(type => Role, { nullable: true, description: 'The final authority on issues related to that dataset.' })
|
148
|
-
supervisoryRole?: Role
|
149
|
-
|
150
|
-
@RelationId((dataSet: DataSet) => dataSet.supervisoryRole)
|
151
|
-
supervisoryRoleId?: string
|
152
|
-
|
153
|
-
@ManyToOne(type => Role, { nullable: true })
|
154
|
-
@Field(type => Role, {
|
155
|
-
nullable: true,
|
156
|
-
description: 'The final authority on resolving outlier related to that dataset.'
|
157
|
-
})
|
158
|
-
resolverRole?: Role
|
159
|
-
|
160
|
-
@RelationId((dataSet: DataSet) => dataSet.resolverRole)
|
161
|
-
resolverRoleId?: string
|
162
|
-
|
163
|
-
@Column('simple-json', { nullable: true })
|
164
|
-
@Field(type => [AssigneeItem], { nullable: true, description: 'Who to contact for OOC issues' })
|
165
|
-
assignees?: AssigneeItem[]
|
166
|
-
|
167
|
-
@Column('simple-json', { nullable: true })
|
168
|
-
@Field(type => [ApprovalLineItem], {
|
169
|
-
nullable: true,
|
170
|
-
description: 'Approval line for confrim of the dataset'
|
171
|
-
})
|
172
|
-
reviewApprovalLine?: ApprovalLineItem[]
|
173
|
-
|
174
|
-
@Column('simple-json', { nullable: true })
|
175
|
-
@Field(type => [ApprovalLineItem], {
|
176
|
-
nullable: true,
|
177
|
-
description: 'Approval line for handling abnormal data occurance issues for that dataset'
|
178
|
-
})
|
179
|
-
outlierApprovalLine?: ApprovalLineItem[]
|
180
|
-
|
181
|
-
@ManyToOne(type => Scenario, { nullable: true })
|
182
|
-
@Field(type => Scenario, {
|
183
|
-
nullable: true,
|
184
|
-
description: 'Scenario for handling normal data-sample occurance for that dataset'
|
185
|
-
})
|
186
|
-
normalScenario?: Scenario
|
187
|
-
|
188
|
-
@RelationId((dataSet: DataSet) => dataSet.normalScenario)
|
189
|
-
normalScenarioId?: string
|
190
|
-
|
191
|
-
@ManyToOne(type => Scenario, { nullable: true })
|
192
|
-
@Field(type => Scenario, {
|
193
|
-
nullable: true,
|
194
|
-
description: 'Scenario for handling abnormal data-sample occurance issues for that dataset'
|
195
|
-
})
|
196
|
-
outlierScenario?: Scenario
|
197
|
-
|
198
|
-
@RelationId((dataSet: DataSet) => dataSet.outlierScenario)
|
199
|
-
outlierScenarioId?: string
|
200
|
-
|
201
|
-
@Column({ nullable: true })
|
202
|
-
@Field({ nullable: true, description: 'The type of the dataset' })
|
203
|
-
type?: 'manual' | 'automatic' | string
|
204
|
-
|
205
|
-
@Column({ nullable: true })
|
206
|
-
@Field({
|
207
|
-
nullable: true,
|
208
|
-
description: `Specifies the method of data entry for the dataset. If set to "generated", data entry screens are automatically generated based on the defined data items. For other types, specific entry screens are configured for each type and specified in the "entryView" field.`
|
209
|
-
})
|
210
|
-
entryType?: DataSetEntryType
|
211
|
-
|
212
|
-
@Column({ nullable: true })
|
213
|
-
@Field({
|
214
|
-
nullable: true,
|
215
|
-
description: `Specifies the custom data entry screen or view for the dataset. When "entryType" is not "generated", this field indicates the screen to be used for data entry. When "entryType" is "generated", this field may not apply.`
|
216
|
-
})
|
217
|
-
entryView?: string
|
218
|
-
|
219
|
-
@Column({ nullable: true })
|
220
|
-
@Field({
|
221
|
-
nullable: true,
|
222
|
-
description: `Specifies the method of data monitoring for the dataset. If set to "generated", monitoring screens are automatically generated based on the dataset configuration. For other types, specific monitoring screens are configured for each type and specified in the "monitorView" field.`
|
223
|
-
})
|
224
|
-
monitorType?: DataSetMonitorType
|
225
|
-
|
226
|
-
@Column({ nullable: true })
|
227
|
-
@Field({
|
228
|
-
nullable: true,
|
229
|
-
description: `Specifies the custom data monitoring screen or view for the dataset. When "monitorType" is not "generated", this field indicates the screen to be used for data monitoring. When "monitorType" is "generated", this field may not apply.`
|
230
|
-
})
|
231
|
-
monitorView?: string
|
232
|
-
|
233
|
-
@Column({ nullable: true })
|
234
|
-
@Field({
|
235
|
-
nullable: true,
|
236
|
-
description: `Specifies the method of reporting for the dataset. If set to "generated", report templates are automatically generated based on the dataset configuration. For other types, specific report templates are configured for each type and specified in the "reportView" field.`
|
237
|
-
})
|
238
|
-
reportType?: DataSetReportType
|
239
|
-
|
240
|
-
@Column({ nullable: true })
|
241
|
-
@Field({
|
242
|
-
nullable: true,
|
243
|
-
description: `Specifies the custom report template or view for the dataset. When "reportType" is not "generated", this field indicates the report template or view to be used for reporting. When "reportType" is "generated", this field may not apply.`
|
244
|
-
})
|
245
|
-
reportView?: string
|
246
|
-
|
247
|
-
@Field({ nullable: true, description: 'The report template of the dataset' })
|
248
|
-
reportTemplate?: string
|
249
|
-
|
250
|
-
@Column({ nullable: true })
|
251
|
-
@Field({
|
252
|
-
nullable: true,
|
253
|
-
description:
|
254
|
-
'Specifies the intended purpose or role of the dataset within the system. It helps users understand why the dataset was created and guides the specification of data items accordingly. Common use case options may include "QA," "CCP," "SPC," and others.'
|
255
|
-
})
|
256
|
-
useCase?: string
|
257
|
-
|
258
|
-
@Column('simple-json', { nullable: true })
|
259
|
-
@Field(type => ScalarObject, {
|
260
|
-
nullable: true,
|
261
|
-
description:
|
262
|
-
"Specifies the partition keys used to distribute and organize the dataset's data. Partition keys are properties or attributes that determine how data is logically grouped, stored, and retrieved. They enable efficient data management and querying by allowing data to be organized into smaller, manageable partitions or segments."
|
263
|
-
})
|
264
|
-
partitionKeys?: { [key: string]: any }
|
265
|
-
|
266
|
-
@Column('simple-json', { nullable: true })
|
267
|
-
@Field(type => [DataItem], { nullable: true, description: 'Data items for the dataset' })
|
268
|
-
dataItems: DataItem[]
|
269
|
-
|
270
|
-
@Column({ nullable: true })
|
271
|
-
@Field({ nullable: true, description: 'The schedule of the dataset' })
|
272
|
-
schedule?: string
|
273
|
-
|
274
|
-
@Column({ nullable: true })
|
275
|
-
@Field({ nullable: true, description: 'The schedule ID of the dataset' })
|
276
|
-
scheduleId?: string
|
277
|
-
|
278
|
-
@Column({ nullable: true })
|
279
|
-
@Field({ nullable: true, description: 'The timezone of the dataset' })
|
280
|
-
timezone?: string
|
281
|
-
|
282
|
-
@Column({ nullable: true })
|
283
|
-
@Field({ nullable: true, description: 'Indicates if the dataset requires review' })
|
284
|
-
requiresReview?: boolean
|
285
|
-
|
286
|
-
@Column({ nullable: true })
|
287
|
-
@Field({ nullable: true, description: 'The summary period of the dataset' })
|
288
|
-
summaryPeriod?: DataSetSummaryPeriodType
|
289
|
-
|
290
|
-
@Column({ nullable: true })
|
291
|
-
@Field({ nullable: true, description: 'The summary schedule of the dataset' })
|
292
|
-
summarySchedule?: string
|
293
|
-
|
294
|
-
@Column({ nullable: true })
|
295
|
-
@Field({ nullable: true, description: 'The summary schedule ID of the dataset' })
|
296
|
-
summaryScheduleId?: string
|
297
|
-
|
298
|
-
@Column({ nullable: true })
|
299
|
-
@Field({
|
300
|
-
nullable: true,
|
301
|
-
description: 'The maximum allowed time limit (in seconds) for completing the data entry operation'
|
302
|
-
})
|
303
|
-
timeLimit?: number
|
304
|
-
|
305
|
-
@CreateDateColumn()
|
306
|
-
@Field({ nullable: true, description: 'The date and time the dataset was created' })
|
307
|
-
createdAt?: Date
|
308
|
-
|
309
|
-
@UpdateDateColumn()
|
310
|
-
@Field({ nullable: true, description: 'The date and time the dataset was last updated' })
|
311
|
-
updatedAt?: Date
|
312
|
-
|
313
|
-
@ManyToOne(type => User, { nullable: true })
|
314
|
-
@Field({ nullable: true, description: 'The user who created the dataset' })
|
315
|
-
creator?: User
|
316
|
-
|
317
|
-
@RelationId((dataSet: DataSet) => dataSet.creator)
|
318
|
-
creatorId?: string
|
319
|
-
|
320
|
-
@ManyToOne(type => User, { nullable: true })
|
321
|
-
@Field({ nullable: true, description: 'The user who last updated the dataset' })
|
322
|
-
updater?: User
|
323
|
-
|
324
|
-
@RelationId((dataSet: DataSet) => dataSet.updater)
|
325
|
-
updaterId?: string
|
326
|
-
}
|
@@ -1,126 +0,0 @@
|
|
1
|
-
import { Arg, Args, Ctx, Directive, FieldResolver, Query, Resolver, Root } from 'type-graphql'
|
2
|
-
|
3
|
-
import { Attachment } from '@things-factory/attachment-base'
|
4
|
-
import { Role, User } from '@things-factory/auth-base'
|
5
|
-
import { Board } from '@things-factory/board-service'
|
6
|
-
import { Domain, getQueryBuilderFromListParams, getRepository, ListParam, ScalarDate } from '@things-factory/shell'
|
7
|
-
|
8
|
-
import { DataKeySet } from '../data-key-set/data-key-set'
|
9
|
-
import { DataSet } from '../data-set/data-set'
|
10
|
-
import { DataSetHistory } from './data-set-history'
|
11
|
-
import { DataSetHistoryList } from './data-set-history-type'
|
12
|
-
|
13
|
-
@Resolver(DataSetHistory)
|
14
|
-
export class DataSetHistoryQuery {
|
15
|
-
@Directive('@privilege(category: "data-set-history", privilege: "query", domainOwnerGranted: true)')
|
16
|
-
@Query(returns => DataSetHistory, { description: 'To fetch a DataSetHistory' })
|
17
|
-
async dataSetHistory(
|
18
|
-
@Arg('id') id: string,
|
19
|
-
@Arg('timestamp', type => ScalarDate) timestamp: Date,
|
20
|
-
@Ctx() context: ResolverContext
|
21
|
-
): Promise<DataSetHistory> {
|
22
|
-
const { domain } = context.state
|
23
|
-
|
24
|
-
return await getRepository(DataSetHistory).findOne({
|
25
|
-
where: { domain: { id: domain.id }, originalId: id, updatedAt: timestamp }
|
26
|
-
})
|
27
|
-
}
|
28
|
-
|
29
|
-
@Directive('@privilege(category: "data-set-history", privilege: "query", domainOwnerGranted: true)')
|
30
|
-
@Query(returns => DataSetHistoryList, { description: 'To fetch multiple DataSetHistories' })
|
31
|
-
async dataSetHistories(
|
32
|
-
@Args(type => ListParam) params: ListParam,
|
33
|
-
@Ctx() context: ResolverContext
|
34
|
-
): Promise<DataSetHistoryList> {
|
35
|
-
const { domain } = context.state
|
36
|
-
|
37
|
-
const queryBuilder = getQueryBuilderFromListParams({
|
38
|
-
repository: getRepository(DataSetHistory),
|
39
|
-
params,
|
40
|
-
domain,
|
41
|
-
searchables: ['name', 'description', 'supervisoryRole']
|
42
|
-
})
|
43
|
-
|
44
|
-
const [items, total] = await queryBuilder.getManyAndCount()
|
45
|
-
|
46
|
-
return { items, total }
|
47
|
-
}
|
48
|
-
|
49
|
-
@FieldResolver(type => Role)
|
50
|
-
async entryRole(@Root() dataSetHistory: DataSetHistory): Promise<Role> {
|
51
|
-
return (
|
52
|
-
dataSetHistory.entryRoleId &&
|
53
|
-
(await getRepository(Role).findOneBy({
|
54
|
-
id: dataSetHistory.entryRoleId
|
55
|
-
}))
|
56
|
-
)
|
57
|
-
}
|
58
|
-
|
59
|
-
@FieldResolver(type => Role)
|
60
|
-
async supervisoryRole(@Root() dataSetHistory: DataSetHistory): Promise<Role> {
|
61
|
-
return (
|
62
|
-
dataSetHistory.supervisoryRoleId &&
|
63
|
-
(await getRepository(Role).findOneBy({
|
64
|
-
id: dataSetHistory.supervisoryRoleId
|
65
|
-
}))
|
66
|
-
)
|
67
|
-
}
|
68
|
-
|
69
|
-
@FieldResolver(type => Board, { nullable: true })
|
70
|
-
async entryBoard(@Root() dataSetHistory: DataSetHistory) {
|
71
|
-
if (dataSetHistory.entryType == 'board' && dataSetHistory.entryView) {
|
72
|
-
return await getRepository(Board).findOneBy({ id: dataSetHistory.entryView })
|
73
|
-
}
|
74
|
-
}
|
75
|
-
|
76
|
-
@FieldResolver(type => Board, { nullable: true })
|
77
|
-
async monitorBoard(@Root() dataSetHistory: DataSetHistory) {
|
78
|
-
if (dataSetHistory.monitorType == 'board' && dataSetHistory.monitorView) {
|
79
|
-
return await getRepository(Board).findOneBy({ id: dataSetHistory.monitorView })
|
80
|
-
}
|
81
|
-
}
|
82
|
-
|
83
|
-
@FieldResolver(type => DataKeySet, { nullable: true })
|
84
|
-
async dataKeySet(@Root() dataSet: DataSet) {
|
85
|
-
return (
|
86
|
-
dataSet.dataKeySet ||
|
87
|
-
(dataSet.dataKeySetId &&
|
88
|
-
(await getRepository(DataKeySet).findOneBy({
|
89
|
-
id: dataSet.dataKeySetId
|
90
|
-
})))
|
91
|
-
)
|
92
|
-
}
|
93
|
-
|
94
|
-
@FieldResolver(type => User)
|
95
|
-
async timestamp(@Root() dataSetHistory: DataSetHistory): Promise<Date> {
|
96
|
-
return dataSetHistory.updatedAt
|
97
|
-
}
|
98
|
-
|
99
|
-
@FieldResolver(type => Domain)
|
100
|
-
async domain(@Root() dataSetHistory: DataSetHistory): Promise<Domain> {
|
101
|
-
return dataSetHistory.domainId && (await getRepository(Domain).findOneBy({ id: dataSetHistory.domainId }))
|
102
|
-
}
|
103
|
-
|
104
|
-
@FieldResolver(type => User)
|
105
|
-
async updater(@Root() dataSetHistory: DataSetHistory): Promise<User> {
|
106
|
-
return dataSetHistory.updaterId && (await getRepository(User).findOneBy({ id: dataSetHistory.updaterId }))
|
107
|
-
}
|
108
|
-
|
109
|
-
@FieldResolver(type => User)
|
110
|
-
async creator(@Root() dataSetHistory: DataSetHistory): Promise<User> {
|
111
|
-
return dataSetHistory.creatorId && (await getRepository(User).findOneBy({ id: dataSetHistory.creatorId }))
|
112
|
-
}
|
113
|
-
|
114
|
-
@FieldResolver(type => String)
|
115
|
-
async reportTemplate(@Root() dataSetHistory: DataSetHistory): Promise<string | undefined> {
|
116
|
-
const attachment: Attachment = await getRepository(Attachment).findOne({
|
117
|
-
where: {
|
118
|
-
domain: { id: dataSetHistory.domainId },
|
119
|
-
refType: `${DataSet.name}-report-template`,
|
120
|
-
refBy: dataSetHistory.originalId
|
121
|
-
}
|
122
|
-
})
|
123
|
-
|
124
|
-
return attachment?.path
|
125
|
-
}
|
126
|
-
}
|
@@ -1,12 +0,0 @@
|
|
1
|
-
import { Field, Int, ObjectType } from 'type-graphql'
|
2
|
-
|
3
|
-
import { DataSetHistory } from '../data-set-history/data-set-history'
|
4
|
-
|
5
|
-
@ObjectType()
|
6
|
-
export class DataSetHistoryList {
|
7
|
-
@Field(type => [DataSetHistory])
|
8
|
-
items: DataSetHistory[]
|
9
|
-
|
10
|
-
@Field(type => Int)
|
11
|
-
total: number
|
12
|
-
}
|
@@ -1,217 +0,0 @@
|
|
1
|
-
import { Field, ID, ObjectType } from 'type-graphql'
|
2
|
-
import { Column, Entity, Index, ManyToOne, PrimaryGeneratedColumn, RelationId } from 'typeorm'
|
3
|
-
|
4
|
-
import {
|
5
|
-
HistoryActionColumn,
|
6
|
-
HistoryActionType,
|
7
|
-
HistoryEntityInterface,
|
8
|
-
HistoryOriginalIdColumn
|
9
|
-
} from '@operato/typeorm-history'
|
10
|
-
import { User } from '@things-factory/auth-base'
|
11
|
-
import { ApprovalLineItem } from '@things-factory/organization'
|
12
|
-
import { Domain, ScalarObject } from '@things-factory/shell'
|
13
|
-
import { AssigneeItem } from '@things-factory/worklist'
|
14
|
-
import { config } from '@things-factory/env'
|
15
|
-
|
16
|
-
import { DataItem } from '../data-set/data-item-type'
|
17
|
-
import {
|
18
|
-
DataSet,
|
19
|
-
DataSetEntryType,
|
20
|
-
DataSetMonitorType,
|
21
|
-
DataSetReportType,
|
22
|
-
DataSetSummaryPeriodType
|
23
|
-
} from '../data-set/data-set'
|
24
|
-
|
25
|
-
const ORMCONFIG = config.get('ormconfig', {})
|
26
|
-
const DATABASE_TYPE = ORMCONFIG.type
|
27
|
-
|
28
|
-
@Entity()
|
29
|
-
@Index(
|
30
|
-
'ix_data_set_history_0',
|
31
|
-
(dataSetHistory: DataSetHistory) => [dataSetHistory.originalId, dataSetHistory.version],
|
32
|
-
{ unique: true }
|
33
|
-
)
|
34
|
-
@Index(
|
35
|
-
'ix_data_set_history_1',
|
36
|
-
(dataSetHistory: DataSetHistory) => [dataSetHistory.domain, dataSetHistory.originalId, dataSetHistory.version],
|
37
|
-
{ unique: true }
|
38
|
-
)
|
39
|
-
@ObjectType({ description: 'Entity for DataSetHistory' })
|
40
|
-
export class DataSetHistory implements HistoryEntityInterface<DataSet> {
|
41
|
-
@PrimaryGeneratedColumn('uuid')
|
42
|
-
@Field(type => ID)
|
43
|
-
readonly id: string
|
44
|
-
|
45
|
-
@Column({ default: 1 })
|
46
|
-
@Field({ nullable: true })
|
47
|
-
readonly version: number = 1
|
48
|
-
|
49
|
-
@ManyToOne(type => Domain)
|
50
|
-
@Field(type => Domain)
|
51
|
-
domain?: Domain
|
52
|
-
|
53
|
-
@RelationId((dataSetHistory: DataSetHistory) => dataSetHistory.domain)
|
54
|
-
domainId?: string
|
55
|
-
|
56
|
-
@Column()
|
57
|
-
@Field()
|
58
|
-
name: string
|
59
|
-
|
60
|
-
@Column({ nullable: true })
|
61
|
-
@Field({ nullable: true })
|
62
|
-
description?: string
|
63
|
-
|
64
|
-
@Column({ nullable: true })
|
65
|
-
@Field({ nullable: true })
|
66
|
-
tag?: string
|
67
|
-
|
68
|
-
@Column({ nullable: true })
|
69
|
-
@Field({ nullable: true })
|
70
|
-
active?: boolean
|
71
|
-
|
72
|
-
@Column({ nullable: true })
|
73
|
-
@Field({ nullable: true })
|
74
|
-
dataKeySetId?: string
|
75
|
-
|
76
|
-
@Column({ nullable: true })
|
77
|
-
@Field({ nullable: true })
|
78
|
-
entryRoleId?: string
|
79
|
-
|
80
|
-
@Column({ nullable: true })
|
81
|
-
@Field({ nullable: true })
|
82
|
-
supervisoryRoleId?: string
|
83
|
-
|
84
|
-
@Column('simple-json', { nullable: true })
|
85
|
-
@Field(type => [AssigneeItem], { nullable: true })
|
86
|
-
assignees?: AssigneeItem[]
|
87
|
-
|
88
|
-
@Column('simple-json', { nullable: true })
|
89
|
-
@Field(type => [ApprovalLineItem], { nullable: true })
|
90
|
-
reviewApprovalLine?: ApprovalLineItem[]
|
91
|
-
|
92
|
-
@Column('simple-json', { nullable: true })
|
93
|
-
@Field(type => [ApprovalLineItem], { nullable: true })
|
94
|
-
outlierApprovalLine?: ApprovalLineItem[]
|
95
|
-
|
96
|
-
@Column({ nullable: true })
|
97
|
-
@Field({ nullable: true })
|
98
|
-
normalScenarioId?: string
|
99
|
-
|
100
|
-
@Column({ nullable: true })
|
101
|
-
@Field({ nullable: true })
|
102
|
-
outlierScenarioId?: string
|
103
|
-
|
104
|
-
@Column({ nullable: true })
|
105
|
-
@Field({ nullable: true })
|
106
|
-
type?: 'manual' | 'automatic' | string
|
107
|
-
|
108
|
-
@Column({ nullable: true })
|
109
|
-
@Field({ nullable: true })
|
110
|
-
entryType?: DataSetEntryType
|
111
|
-
|
112
|
-
@Column({ nullable: true })
|
113
|
-
@Field({ nullable: true })
|
114
|
-
entryView?: string
|
115
|
-
|
116
|
-
@Column({ nullable: true })
|
117
|
-
@Field({ nullable: true })
|
118
|
-
monitorType?: DataSetMonitorType
|
119
|
-
|
120
|
-
@Column({ nullable: true })
|
121
|
-
@Field({ nullable: true })
|
122
|
-
monitorView?: string
|
123
|
-
|
124
|
-
@Column({ nullable: true })
|
125
|
-
@Field({ nullable: true })
|
126
|
-
reportType?: DataSetReportType
|
127
|
-
|
128
|
-
@Column({ nullable: true })
|
129
|
-
@Field({ nullable: true })
|
130
|
-
reportView?: string
|
131
|
-
|
132
|
-
@Field({ nullable: true })
|
133
|
-
reportTemplate?: string
|
134
|
-
|
135
|
-
@Column({ nullable: true })
|
136
|
-
@Field({ nullable: true })
|
137
|
-
useCase?: string
|
138
|
-
|
139
|
-
@Column('simple-json', { nullable: true })
|
140
|
-
@Field(type => ScalarObject, { nullable: true })
|
141
|
-
partitionKeys?: { [key: string]: any }
|
142
|
-
|
143
|
-
@Column('simple-json', { nullable: true })
|
144
|
-
@Field(type => [DataItem], { nullable: true })
|
145
|
-
dataItems: DataItem[]
|
146
|
-
|
147
|
-
@Column({ nullable: true })
|
148
|
-
@Field({ nullable: true })
|
149
|
-
schedule?: string
|
150
|
-
|
151
|
-
@Column({ nullable: true })
|
152
|
-
@Field({ nullable: true })
|
153
|
-
scheduleId?: string
|
154
|
-
|
155
|
-
@Column({ nullable: true })
|
156
|
-
@Field({ nullable: true })
|
157
|
-
timezone?: string
|
158
|
-
|
159
|
-
@Column({ nullable: true })
|
160
|
-
@Field({ nullable: true })
|
161
|
-
requiresReview?: boolean
|
162
|
-
|
163
|
-
@Column({ nullable: true })
|
164
|
-
@Field({ nullable: true })
|
165
|
-
summaryPeriod?: DataSetSummaryPeriodType
|
166
|
-
|
167
|
-
@Column({ nullable: true })
|
168
|
-
@Field({ nullable: true })
|
169
|
-
summarySchedule?: string
|
170
|
-
|
171
|
-
@Column({ nullable: true })
|
172
|
-
@Field({ nullable: true })
|
173
|
-
summaryScheduleId?: string
|
174
|
-
|
175
|
-
@Column({ nullable: true })
|
176
|
-
@Field({ nullable: true })
|
177
|
-
createdAt?: Date
|
178
|
-
|
179
|
-
@Column({ nullable: true })
|
180
|
-
@Field({ nullable: true })
|
181
|
-
updatedAt?: Date
|
182
|
-
|
183
|
-
@ManyToOne(type => User, { nullable: true })
|
184
|
-
@Field(type => User, { nullable: true })
|
185
|
-
creator?: User
|
186
|
-
|
187
|
-
@RelationId((dataSetHistory: DataSetHistory) => dataSetHistory.creator)
|
188
|
-
creatorId?: string
|
189
|
-
|
190
|
-
@ManyToOne(type => User, { nullable: true })
|
191
|
-
@Field(type => User, { nullable: true })
|
192
|
-
updater?: User
|
193
|
-
|
194
|
-
@RelationId((dataSetHistory: DataSetHistory) => dataSetHistory.updater)
|
195
|
-
updaterId?: string
|
196
|
-
|
197
|
-
@HistoryOriginalIdColumn({ nullable: true })
|
198
|
-
public originalId!: string
|
199
|
-
|
200
|
-
@HistoryActionColumn({
|
201
|
-
nullable: false,
|
202
|
-
type:
|
203
|
-
DATABASE_TYPE == 'postgres' || DATABASE_TYPE == 'mysql' || DATABASE_TYPE == 'mariadb'
|
204
|
-
? 'enum'
|
205
|
-
: DATABASE_TYPE == 'oracle'
|
206
|
-
? 'varchar2'
|
207
|
-
: DATABASE_TYPE == 'mssql'
|
208
|
-
? 'nvarchar'
|
209
|
-
: 'varchar',
|
210
|
-
enum:
|
211
|
-
DATABASE_TYPE == 'postgres' || DATABASE_TYPE == 'mysql' || DATABASE_TYPE == 'mariadb'
|
212
|
-
? HistoryActionType
|
213
|
-
: undefined,
|
214
|
-
length: DATABASE_TYPE == 'postgres' || DATABASE_TYPE == 'mysql' || DATABASE_TYPE == 'mariadb' ? undefined : 10
|
215
|
-
})
|
216
|
-
public action!: HistoryActionType
|
217
|
-
}
|
@@ -1,17 +0,0 @@
|
|
1
|
-
import { EventSubscriber } from 'typeorm'
|
2
|
-
|
3
|
-
import { HistoryEntitySubscriber } from '@operato/typeorm-history'
|
4
|
-
|
5
|
-
import { DataSet } from '../data-set/data-set'
|
6
|
-
import { DataSetHistory } from './data-set-history'
|
7
|
-
|
8
|
-
@EventSubscriber()
|
9
|
-
export class DataSetHistoryEntitySubscriber extends HistoryEntitySubscriber<DataSet, DataSetHistory> {
|
10
|
-
public get entity() {
|
11
|
-
return DataSet
|
12
|
-
}
|
13
|
-
|
14
|
-
public get historyEntity() {
|
15
|
-
return DataSetHistory
|
16
|
-
}
|
17
|
-
}
|