@things-factory/dataset 5.0.0-alpha.2 → 5.0.0-alpha.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/README.md +12 -0
  2. package/assets/data-samples.jpg +0 -0
  3. package/client/bootstrap.js +16 -1
  4. package/client/pages/data-entry-form.js +84 -0
  5. package/client/pages/data-item-list.js +58 -16
  6. package/client/pages/data-ooc-view.js +182 -0
  7. package/client/pages/data-ooc.js +469 -0
  8. package/client/pages/data-sample-view.js +97 -0
  9. package/client/pages/data-sample.js +130 -55
  10. package/client/pages/data-sensor.js +8 -18
  11. package/client/pages/data-set.js +126 -25
  12. package/client/route.js +4 -0
  13. package/dist-server/controllers/create-data-sample.js +122 -0
  14. package/dist-server/controllers/create-data-sample.js.map +1 -0
  15. package/dist-server/controllers/data-use-case.js +57 -0
  16. package/dist-server/controllers/data-use-case.js.map +1 -0
  17. package/dist-server/controllers/index.js +17 -0
  18. package/dist-server/controllers/index.js.map +1 -1
  19. package/dist-server/index.js +2 -0
  20. package/dist-server/index.js.map +1 -1
  21. package/dist-server/routes.js +9 -24
  22. package/dist-server/routes.js.map +1 -1
  23. package/dist-server/service/data-item/data-item-mutation.js +5 -1
  24. package/dist-server/service/data-item/data-item-mutation.js.map +1 -1
  25. package/dist-server/service/data-item/data-item-type.js +14 -5
  26. package/dist-server/service/data-item/data-item-type.js.map +1 -1
  27. package/dist-server/service/data-item/data-item.js +20 -7
  28. package/dist-server/service/data-item/data-item.js.map +1 -1
  29. package/dist-server/service/data-ooc/data-ooc-mutation.js +92 -0
  30. package/dist-server/service/data-ooc/data-ooc-mutation.js.map +1 -0
  31. package/dist-server/service/data-ooc/data-ooc-query.js +115 -0
  32. package/dist-server/service/data-ooc/data-ooc-query.js.map +1 -0
  33. package/dist-server/service/data-ooc/data-ooc-subscription.js +65 -0
  34. package/dist-server/service/data-ooc/data-ooc-subscription.js.map +1 -0
  35. package/dist-server/service/data-ooc/data-ooc-type.js +99 -0
  36. package/dist-server/service/data-ooc/data-ooc-type.js.map +1 -0
  37. package/dist-server/service/data-ooc/data-ooc.js +227 -0
  38. package/dist-server/service/data-ooc/data-ooc.js.map +1 -0
  39. package/dist-server/service/data-ooc/index.js +10 -0
  40. package/dist-server/service/data-ooc/index.js.map +1 -0
  41. package/dist-server/service/data-sample/data-sample-mutation.js +3 -105
  42. package/dist-server/service/data-sample/data-sample-mutation.js.map +1 -1
  43. package/dist-server/service/data-sample/data-sample-type.js +6 -43
  44. package/dist-server/service/data-sample/data-sample-type.js.map +1 -1
  45. package/dist-server/service/data-sample/data-sample.js +33 -12
  46. package/dist-server/service/data-sample/data-sample.js.map +1 -1
  47. package/dist-server/service/data-set/data-set-mutation.js +1 -2
  48. package/dist-server/service/data-set/data-set-mutation.js.map +1 -1
  49. package/dist-server/service/data-set/data-set-query.js +12 -0
  50. package/dist-server/service/data-set/data-set-query.js.map +1 -1
  51. package/dist-server/service/data-set/data-set-type.js +19 -2
  52. package/dist-server/service/data-set/data-set-type.js.map +1 -1
  53. package/dist-server/service/data-set/data-set.js +22 -10
  54. package/dist-server/service/data-set/data-set.js.map +1 -1
  55. package/dist-server/service/data-spec/data-spec-manager.js +20 -0
  56. package/dist-server/service/data-spec/data-spec-manager.js.map +1 -0
  57. package/dist-server/service/data-spec/data-spec-query.js +48 -0
  58. package/dist-server/service/data-spec/data-spec-query.js.map +1 -0
  59. package/dist-server/service/data-spec/data-spec.js +78 -0
  60. package/dist-server/service/data-spec/data-spec.js.map +1 -0
  61. package/dist-server/service/data-spec/index.js +8 -0
  62. package/dist-server/service/data-spec/index.js.map +1 -0
  63. package/dist-server/service/index.js +12 -4
  64. package/dist-server/service/index.js.map +1 -1
  65. package/package.json +15 -12
  66. package/server/controllers/create-data-sample.ts +161 -0
  67. package/server/controllers/data-use-case.ts +85 -0
  68. package/server/controllers/index.ts +1 -0
  69. package/server/index.ts +3 -0
  70. package/server/routes.ts +18 -32
  71. package/server/service/data-item/data-item-mutation.ts +6 -1
  72. package/server/service/data-item/data-item-type.ts +11 -7
  73. package/server/service/data-item/data-item.ts +16 -6
  74. package/server/service/data-ooc/data-ooc-mutation.ts +150 -0
  75. package/server/service/data-ooc/data-ooc-query.ts +63 -0
  76. package/server/service/data-ooc/data-ooc-subscription.ts +51 -0
  77. package/server/service/data-ooc/data-ooc-type.ts +62 -0
  78. package/server/service/data-ooc/data-ooc.ts +195 -0
  79. package/server/service/data-ooc/index.ts +7 -0
  80. package/server/service/data-sample/data-sample-mutation.ts +6 -128
  81. package/server/service/data-sample/data-sample-type.ts +4 -32
  82. package/server/service/data-sample/data-sample.ts +31 -10
  83. package/server/service/data-set/data-set-mutation.ts +1 -4
  84. package/server/service/data-set/data-set-query.ts +8 -1
  85. package/server/service/data-set/data-set-type.ts +17 -6
  86. package/server/service/data-set/data-set.ts +18 -8
  87. package/server/service/data-spec/data-spec-manager.ts +21 -0
  88. package/server/service/data-spec/data-spec-query.ts +21 -0
  89. package/server/service/data-spec/data-spec.ts +44 -0
  90. package/server/service/data-spec/index.ts +5 -0
  91. package/server/service/index.ts +16 -8
  92. package/things-factory.config.js +4 -0
  93. package/translations/en.json +20 -1
  94. package/translations/ko.json +21 -2
  95. package/translations/ms.json +20 -1
  96. package/translations/zh.json +20 -1
@@ -1,4 +1,3 @@
1
- import { Field, ID, Int, ObjectType, registerEnumType } from 'type-graphql'
2
1
  import {
3
2
  Column,
4
3
  CreateDateColumn,
@@ -9,17 +8,18 @@ import {
9
8
  RelationId,
10
9
  UpdateDateColumn
11
10
  } from 'typeorm'
12
-
13
- import { User } from '@things-factory/auth-base'
14
11
  import { Domain, ScalarObject } from '@things-factory/shell'
12
+ import { Field, ID, Int, ObjectType, registerEnumType } from 'type-graphql'
15
13
 
16
14
  import { DataSet } from '../data-set/data-set'
15
+ import { User } from '@things-factory/auth-base'
17
16
 
18
17
  export enum DataItemType {
19
18
  number = 'number',
20
19
  text = 'text',
21
20
  boolean = 'boolean',
22
- select = 'select'
21
+ select = 'select',
22
+ file = 'file'
23
23
  }
24
24
 
25
25
  registerEnumType(DataItemType, {
@@ -53,7 +53,7 @@ export class DataItem {
53
53
  description?: string
54
54
 
55
55
  @ManyToOne(type => DataSet, dataSet => dataSet.dataItems, { onDelete: 'CASCADE' })
56
- @Field(type => DataSet, { nullable: true })
56
+ @Field(type => DataSet, { nullable: false })
57
57
  dataSet?: DataSet
58
58
 
59
59
  @RelationId((dataItem: DataItem) => dataItem.dataSet)
@@ -81,6 +81,16 @@ export class DataItem {
81
81
  @Field({ nullable: true })
82
82
  type?: DataItemType
83
83
 
84
+ @Column('simple-json', { nullable: true })
85
+ @Field(type => ScalarObject, { nullable: true })
86
+ options?: ScalarObject
87
+
88
+ @Column({
89
+ nullable: true
90
+ })
91
+ @Field({ nullable: true })
92
+ unit?: string
93
+
84
94
  @Column({
85
95
  nullable: true
86
96
  })
@@ -89,7 +99,7 @@ export class DataItem {
89
99
 
90
100
  @Column('simple-json', { nullable: true })
91
101
  @Field(type => ScalarObject, { nullable: true })
92
- spec?: object
102
+ spec?: ScalarObject
93
103
 
94
104
  @CreateDateColumn()
95
105
  @Field({ nullable: true })
@@ -0,0 +1,150 @@
1
+ import { Resolver, Mutation, Arg, Ctx, Directive } from 'type-graphql'
2
+ import { getRepository, In } from 'typeorm'
3
+ import { DataOoc, DataOocStatus } from './data-ooc'
4
+ import { NewDataOoc, DataOocPatch } from './data-ooc-type'
5
+
6
+ @Resolver(DataOoc)
7
+ export class DataOocMutation {
8
+ @Directive('@privilege(category: "data-ooc", privilege: "mutation", domainOwnerGranted: true)')
9
+ @Directive('@transaction')
10
+ @Mutation(returns => DataOoc, { description: 'To create new DataOoc' })
11
+ async createDataOoc(@Arg('dataOoc') dataOoc: NewDataOoc, @Ctx() context: any): Promise<DataOoc> {
12
+ const { domain, user, tx } = context.state
13
+
14
+ const state = dataOoc.state || DataOocStatus.CREATED
15
+ const history = [
16
+ {
17
+ user: {
18
+ id: user.id,
19
+ name: user.name
20
+ },
21
+ state,
22
+ timestamp: Date.now()
23
+ }
24
+ ]
25
+
26
+ return await tx.getRepository(DataOoc).save({
27
+ ...dataOoc,
28
+ state,
29
+ domain,
30
+ history,
31
+ creator: user,
32
+ updater: user
33
+ })
34
+ }
35
+
36
+ @Directive('@privilege(category: "data-ooc", privilege: "mutation", domainOwnerGranted: true)')
37
+ @Directive('@transaction')
38
+ @Mutation(returns => DataOoc, { description: 'To modify DataOoc information' })
39
+ async updateDataOoc(@Arg('id') id: string, @Arg('patch') patch: DataOocPatch, @Ctx() context: any): Promise<DataOoc> {
40
+ const { domain, user, tx } = context.state
41
+
42
+ const repository = tx.getRepository(DataOoc)
43
+ const dataOoc = await repository.findOne({
44
+ where: { domain, id }
45
+ })
46
+
47
+ const state = patch.state || dataOoc.state
48
+
49
+ const history = dataOoc.history || []
50
+ history.push({
51
+ user: {
52
+ id: user.id,
53
+ name: user.name
54
+ },
55
+ state,
56
+ comment: patch.correctiveAction || '',
57
+ timestamp: Date.now()
58
+ })
59
+
60
+ const more = {} as any
61
+
62
+ if (dataOoc.state !== patch.state) {
63
+ if (patch.state === DataOocStatus.CORRECTED) {
64
+ more.corrector = user
65
+ } else {
66
+ more.corrector = null
67
+ }
68
+ }
69
+
70
+ return await repository.save({
71
+ ...dataOoc,
72
+ ...patch,
73
+ ...more,
74
+ state,
75
+ history,
76
+ updater: user
77
+ })
78
+ }
79
+
80
+ // @Directive('@privilege(category: "data-ooc", privilege: "mutation", domainOwnerGranted: true)')
81
+ // @Directive('@transaction')
82
+ // @Mutation(returns => [DataOoc], { description: "To modify multiple DataOoc' information" })
83
+ // async updateMultipleDataOoc(
84
+ // @Arg('patches', type => [DataOocPatch]) patches: DataOocPatch[],
85
+ // @Ctx() context: any
86
+ // ): Promise<DataOoc[]> {
87
+ // const { domain, user, tx } = context.state
88
+
89
+ // let results = []
90
+ // const _createRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === '+')
91
+ // const _updateRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === 'M')
92
+ // const dataOocRepo = tx.getRepository(DataOoc)
93
+
94
+ // if (_createRecords.length > 0) {
95
+ // for (let i = 0; i < _createRecords.length; i++) {
96
+ // const newRecord = _createRecords[i]
97
+
98
+ // const result = await dataOocRepo.save({
99
+ // ...newRecord,
100
+ // domain,
101
+ // creator: user,
102
+ // updater: user
103
+ // })
104
+
105
+ // results.push({ ...result, cuFlag: '+' })
106
+ // }
107
+ // }
108
+
109
+ // if (_updateRecords.length > 0) {
110
+ // for (let i = 0; i < _updateRecords.length; i++) {
111
+ // const newRecord = _updateRecords[i]
112
+ // const dataOoc = await dataOocRepo.findOne(newRecord.id)
113
+
114
+ // const result = await dataOocRepo.save({
115
+ // ...dataOoc,
116
+ // ...newRecord,
117
+ // updater: user
118
+ // })
119
+
120
+ // results.push({ ...result, cuFlag: 'M' })
121
+ // }
122
+ // }
123
+
124
+ // return results
125
+ // }
126
+
127
+ // @Directive('@privilege(category: "data-ooc", privilege: "mutation", domainOwnerGranted: true)')
128
+ // @Directive('@transaction')
129
+ // @Mutation(returns => Boolean, { description: 'To delete DataOoc' })
130
+ // async deleteDataOoc(@Arg('id') id: string, @Ctx() context: any): Promise<boolean> {
131
+ // const { domain, tx } = context.state
132
+
133
+ // await tx.getRepository(DataOoc).delete({ domain, id })
134
+ // return true
135
+ // }
136
+
137
+ // @Directive('@privilege(category: "data-ooc", privilege: "mutation", domainOwnerGranted: true)')
138
+ // @Directive('@transaction')
139
+ // @Mutation(returns => Boolean, { description: 'To delete multiple dataOocs' })
140
+ // async deleteDataOocs(@Arg('ids', type => [String]) ids: string[], @Ctx() context: any): Promise<boolean> {
141
+ // const { domain, tx } = context.state
142
+
143
+ // await tx.getRepository(DataOoc).delete({
144
+ // domain,
145
+ // id: In(ids)
146
+ // })
147
+
148
+ // return true
149
+ // }
150
+ }
@@ -0,0 +1,63 @@
1
+ import { Arg, Args, Ctx, Directive, FieldResolver, Query, Resolver, Root } from 'type-graphql'
2
+ import { getRepository } from 'typeorm'
3
+
4
+ import { User } from '@things-factory/auth-base'
5
+ import { convertListParams, Domain, ListParam } from '@things-factory/shell'
6
+
7
+ import { DataSample } from '../data-sample/data-sample'
8
+ import { DataSet } from '../data-set/data-set'
9
+ import { DataOoc } from './data-ooc'
10
+ import { DataOocList } from './data-ooc-type'
11
+
12
+ @Resolver(DataOoc)
13
+ export class DataOocQuery {
14
+ @Directive('@privilege(category: "data-ooc", privilege: "query", domainOwnerGranted: true)')
15
+ @Query(returns => DataOoc, { description: 'To fetch a DataOoc' })
16
+ async dataOoc(@Arg('id') id: string, @Ctx() context: any): Promise<DataOoc> {
17
+ const { domain } = context.state
18
+
19
+ return await getRepository(DataOoc).findOne({
20
+ where: { domain, id }
21
+ })
22
+ }
23
+
24
+ @Directive('@privilege(category: "data-ooc", privilege: "query", domainOwnerGranted: true)')
25
+ @Query(returns => DataOocList, { description: 'To fetch multiple DataOoc' })
26
+ async dataOocs(@Args() params: ListParam, @Ctx() context: any): Promise<DataOocList> {
27
+ const { domain } = context.state
28
+
29
+ const convertedParams = convertListParams(params, domain.id)
30
+ const [items, total] = await getRepository(DataOoc).findAndCount(convertedParams)
31
+
32
+ return { items, total }
33
+ }
34
+
35
+ @FieldResolver(type => DataSet)
36
+ async dataSet(@Root() dataOoc: DataOoc): Promise<DataSet> {
37
+ return await getRepository(DataSet).findOne({
38
+ id: dataOoc.dataSetId
39
+ })
40
+ }
41
+
42
+ @FieldResolver(type => DataSample)
43
+ async dataSample(@Root() dataOoc: DataOoc): Promise<DataSample> {
44
+ return await getRepository(DataSample).findOne({
45
+ id: dataOoc.dataSampleId
46
+ })
47
+ }
48
+
49
+ @FieldResolver(type => Domain)
50
+ async domain(@Root() dataOoc: DataOoc): Promise<Domain> {
51
+ return await getRepository(Domain).findOne(dataOoc.domainId)
52
+ }
53
+
54
+ @FieldResolver(type => User)
55
+ async updater(@Root() dataOoc: DataOoc): Promise<User> {
56
+ return await getRepository(User).findOne(dataOoc.updaterId)
57
+ }
58
+
59
+ @FieldResolver(type => User)
60
+ async creator(@Root() dataOoc: DataOoc): Promise<User> {
61
+ return await getRepository(User).findOne(dataOoc.creatorId)
62
+ }
63
+ }
@@ -0,0 +1,51 @@
1
+ import { Resolver, Subscription, Root } from 'type-graphql'
2
+ import { withFilter } from 'graphql-subscriptions'
3
+ import { pubsub } from '@things-factory/shell'
4
+ import { User } from '@things-factory/auth-base'
5
+ import { DataOoc } from './data-ooc'
6
+ import { getRepository } from 'typeorm'
7
+
8
+ const debug = require('debug')('things-factory:dataset:data-ooc-subscription')
9
+
10
+ @Resolver(DataOoc)
11
+ export class DataOocSubscription {
12
+ @Subscription({
13
+ subscribe: (_, args, context, info) => {
14
+ const { domain, user } = context.state
15
+ const subdomain = domain?.subdomain
16
+
17
+ debug('subscribe', subdomain)
18
+
19
+ if (!domain) {
20
+ throw new Error('domain required')
21
+ }
22
+
23
+ if (!user.domains?.find(d => d.subdomain === subdomain)) {
24
+ throw new Error(`domain(${subdomain}) is not working for user(${user.email}).`)
25
+ }
26
+
27
+ return withFilter(
28
+ () => pubsub.asyncIterator('data-ooc'),
29
+ async (payload, variables, context, info) => {
30
+ const { dataOoc, supervisoryRoleId } = payload
31
+ const { domain } = dataOoc
32
+
33
+ if (subdomain !== domain?.subdomain) {
34
+ return false
35
+ }
36
+
37
+ // check if the user has that role
38
+ const userWithRoles: User = await getRepository(User).findOne({
39
+ where: { id: user.id },
40
+ relations: ['roles']
41
+ })
42
+
43
+ return userWithRoles.roles.find(role => role.id === supervisoryRoleId)
44
+ }
45
+ )(_, args, context, info)
46
+ }
47
+ })
48
+ dataOoc(@Root() payload: { dataOoc: DataOoc; supervisoryRoleId: string }): DataOoc {
49
+ return payload.dataOoc
50
+ }
51
+ }
@@ -0,0 +1,62 @@
1
+ import { DataOoc, DataOocStatus } from './data-ooc'
2
+ import { Field, ID, InputType, Int, ObjectType, registerEnumType } from 'type-graphql'
3
+ import { ObjectRef, ScalarObject } from '@things-factory/shell'
4
+
5
+ import { User } from '@things-factory/auth-base'
6
+
7
+ @InputType()
8
+ export class NewDataOoc {
9
+ @Field()
10
+ name: string
11
+
12
+ @Field({ nullable: true })
13
+ description?: string
14
+
15
+ @Field(type => ObjectRef, { nullable: true })
16
+ dataSet?: ObjectRef
17
+
18
+ @Field(type => ObjectRef, { nullable: true })
19
+ dataSample?: ObjectRef
20
+
21
+ @Field(type => DataOocStatus, { nullable: true })
22
+ state?: DataOocStatus
23
+
24
+ @Field(type => ScalarObject, { nullable: true })
25
+ data?: ScalarObject
26
+
27
+ @Field({ nullable: true })
28
+ rawData?: string
29
+
30
+ @Field({ nullable: true })
31
+ source?: string
32
+
33
+ @Field({ nullable: true })
34
+ ooc?: boolean
35
+
36
+ @Field({ nullable: true })
37
+ oos?: boolean
38
+
39
+ @Field({ nullable: true })
40
+ collectedAt?: Date
41
+ }
42
+
43
+ @InputType()
44
+ export class DataOocPatch {
45
+ @Field(type => ID, { nullable: true })
46
+ id?: string
47
+
48
+ @Field(type => DataOocStatus, { nullable: true })
49
+ state?: DataOocStatus
50
+
51
+ @Field({ nullable: true })
52
+ correctiveAction?: string
53
+ }
54
+
55
+ @ObjectType()
56
+ export class DataOocList {
57
+ @Field(type => [DataOoc])
58
+ items: DataOoc[]
59
+
60
+ @Field(type => Int)
61
+ total: number
62
+ }
@@ -0,0 +1,195 @@
1
+ import {
2
+ Column,
3
+ CreateDateColumn,
4
+ Entity,
5
+ Index,
6
+ JoinColumn,
7
+ ManyToOne,
8
+ OneToOne,
9
+ PrimaryGeneratedColumn,
10
+ RelationId,
11
+ UpdateDateColumn
12
+ } from 'typeorm'
13
+ import { Domain, ScalarObject } from '@things-factory/shell'
14
+ import { Field, ID, Int, ObjectType, registerEnumType } from 'type-graphql'
15
+
16
+ import { DataSample } from '../data-sample/data-sample'
17
+ import { DataSet } from '../data-set/data-set'
18
+ import { User } from '@things-factory/auth-base'
19
+ import { config } from '@things-factory/env'
20
+
21
+ const ORMCONFIG = config.get('ormconfig', {})
22
+ const DATABASE_TYPE = ORMCONFIG.type
23
+
24
+ export enum DataOocStatus {
25
+ CREATED = 'CREATED',
26
+ REVIEWED = 'REVIEWED',
27
+ CORRECTED = 'CORRECTED'
28
+ }
29
+
30
+ registerEnumType(DataOocStatus, {
31
+ name: 'DataOocStatus',
32
+ description: 'Out of control data corrective action process progress status'
33
+ })
34
+
35
+ @Entity()
36
+ @Index('ix_data_ooc_0', (dataOoc: DataOoc) => [dataOoc.domain, dataOoc.dataSet], { unique: false })
37
+ @Index('ix_data_ooc_1', (dataOoc: DataOoc) => [dataOoc.domain, dataOoc.dataSample], { unique: true })
38
+ @Index('ix_data_ooc_2', (dataOoc: DataOoc) => [dataOoc.domain, dataOoc.collectedAt], { unique: false })
39
+ @ObjectType({ description: 'Entity for Out of control data' })
40
+ export class DataOoc {
41
+ @PrimaryGeneratedColumn('uuid')
42
+ @Field(type => ID)
43
+ readonly id: string
44
+
45
+ @ManyToOne(type => Domain)
46
+ @Field({ nullable: true })
47
+ domain?: Domain
48
+
49
+ @RelationId((dataOoc: DataOoc) => dataOoc.domain)
50
+ domainId?: string
51
+
52
+ @Column()
53
+ @Field()
54
+ name: string
55
+
56
+ @Column({
57
+ nullable: true
58
+ })
59
+ @Field({ nullable: true })
60
+ description?: string
61
+
62
+ @ManyToOne(type => DataSet)
63
+ @Field(type => DataSet, { nullable: true })
64
+ dataSet?: DataSet
65
+
66
+ @RelationId((dataOoc: DataOoc) => dataOoc.dataSet)
67
+ dataSetId?: string
68
+
69
+ @OneToOne(type => DataSample)
70
+ @JoinColumn()
71
+ @Field(type => DataSample, { nullable: true })
72
+ dataSample?: DataSample
73
+
74
+ @RelationId((dataOoc: DataOoc) => dataOoc.dataSample)
75
+ dataSampleId?: string
76
+
77
+ @Column({
78
+ nullable: true
79
+ })
80
+ @Field({ nullable: true })
81
+ ooc?: boolean
82
+
83
+ @Column({
84
+ nullable: true
85
+ })
86
+ @Field({ nullable: true })
87
+ oos?: boolean
88
+
89
+ @Column({
90
+ nullable: true
91
+ })
92
+ @Field({ nullable: true })
93
+ state?: DataOocStatus
94
+
95
+ @Column({
96
+ nullable: true,
97
+ type:
98
+ DATABASE_TYPE == 'mysql' || DATABASE_TYPE == 'mariadb'
99
+ ? 'longtext'
100
+ : DATABASE_TYPE == 'oracle'
101
+ ? 'clob'
102
+ : 'varchar'
103
+ })
104
+ @Field({ nullable: true })
105
+ correctiveAction?: string
106
+
107
+ @Column({
108
+ nullable: true
109
+ })
110
+ @Field({ nullable: true })
111
+ type?: string
112
+
113
+ @Column({
114
+ nullable: true
115
+ })
116
+ @Field({ nullable: true })
117
+ useCase?: string
118
+
119
+ @Column('simple-json', { nullable: true })
120
+ @Field(type => ScalarObject, { nullable: true })
121
+ partitionKeys?: ScalarObject
122
+
123
+ @Column('simple-json', { nullable: true })
124
+ @Field(type => ScalarObject, { nullable: true })
125
+ data?: ScalarObject
126
+
127
+ @Column('simple-json', { nullable: true })
128
+ @Field(type => ScalarObject, { nullable: true })
129
+ spec?: ScalarObject
130
+
131
+ @Column('simple-json', { nullable: true })
132
+ @Field(type => ScalarObject, { nullable: true })
133
+ history?: ScalarObject
134
+
135
+ @Column({
136
+ nullable: true,
137
+ type:
138
+ DATABASE_TYPE == 'mysql' || DATABASE_TYPE == 'mariadb'
139
+ ? 'longtext'
140
+ : DATABASE_TYPE == 'oracle'
141
+ ? 'clob'
142
+ : 'varchar'
143
+ })
144
+ @Field({ nullable: true })
145
+ rawData?: string
146
+
147
+ @Column({
148
+ nullable: true
149
+ })
150
+ @Field({ nullable: true })
151
+ source?: string
152
+
153
+ @Column({ nullable: true })
154
+ @Field({ nullable: true })
155
+ collectedAt?: Date
156
+
157
+ @Column({ nullable: true })
158
+ @Field({ nullable: true })
159
+ correctedAt?: Date
160
+
161
+ @CreateDateColumn()
162
+ @Field({ nullable: true })
163
+ createdAt?: Date
164
+
165
+ @UpdateDateColumn()
166
+ @Field({ nullable: true })
167
+ updatedAt?: Date
168
+
169
+ @ManyToOne(type => User, {
170
+ nullable: true
171
+ })
172
+ @Field({ nullable: true })
173
+ corrector?: User
174
+
175
+ @RelationId((dataOoc: DataOoc) => dataOoc.corrector)
176
+ correctorId?: string
177
+
178
+ @ManyToOne(type => User, {
179
+ nullable: true
180
+ })
181
+ @Field({ nullable: true })
182
+ creator?: User
183
+
184
+ @RelationId((dataOoc: DataOoc) => dataOoc.creator)
185
+ creatorId?: string
186
+
187
+ @ManyToOne(type => User, {
188
+ nullable: true
189
+ })
190
+ @Field({ nullable: true })
191
+ updater?: User
192
+
193
+ @RelationId((dataOoc: DataOoc) => dataOoc.creator)
194
+ updaterId?: string
195
+ }
@@ -0,0 +1,7 @@
1
+ import { DataOoc } from './data-ooc'
2
+ import { DataOocMutation } from './data-ooc-mutation'
3
+ import { DataOocQuery } from './data-ooc-query'
4
+ import { DataOocSubscription } from './data-ooc-subscription'
5
+
6
+ export const entities = [DataOoc]
7
+ export const resolvers = [DataOocQuery, DataOocMutation, DataOocSubscription]