@things-factory/integration-base 8.0.0 → 9.0.0-beta.3

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 (160) hide show
  1. package/dist-server/engine/connector/headless-connector.d.ts +23 -0
  2. package/dist-server/engine/connector/headless-connector.js +357 -0
  3. package/dist-server/engine/connector/headless-connector.js.map +1 -0
  4. package/dist-server/engine/connector/http-connector.js +1 -1
  5. package/dist-server/engine/connector/http-connector.js.map +1 -1
  6. package/dist-server/engine/connector/index.d.ts +1 -0
  7. package/dist-server/engine/connector/index.js +1 -0
  8. package/dist-server/engine/connector/index.js.map +1 -1
  9. package/dist-server/engine/index.d.ts +1 -0
  10. package/dist-server/engine/index.js +1 -0
  11. package/dist-server/engine/index.js.map +1 -1
  12. package/dist-server/engine/resource-pool/headless-pool.d.ts +1 -0
  13. package/dist-server/engine/resource-pool/headless-pool.js +62 -0
  14. package/dist-server/engine/resource-pool/headless-pool.js.map +1 -0
  15. package/dist-server/engine/resource-pool/index.d.ts +1 -0
  16. package/dist-server/engine/resource-pool/index.js +5 -0
  17. package/dist-server/engine/resource-pool/index.js.map +1 -0
  18. package/dist-server/engine/task/headless-post.js +19 -33
  19. package/dist-server/engine/task/headless-post.js.map +1 -1
  20. package/dist-server/engine/task/headless-scrap.js +20 -13
  21. package/dist-server/engine/task/headless-scrap.js.map +1 -1
  22. package/dist-server/tsconfig.tsbuildinfo +1 -1
  23. package/package.json +12 -11
  24. package/translations/en.json +12 -4
  25. package/translations/ja.json +12 -4
  26. package/translations/ko.json +12 -4
  27. package/translations/ms.json +12 -4
  28. package/translations/zh.json +12 -4
  29. package/server/controllers/index.ts +0 -2
  30. package/server/controllers/publish-data.ts +0 -29
  31. package/server/controllers/scenario-controller.ts +0 -156
  32. package/server/engine/analyzer/analyze-integration.ts +0 -115
  33. package/server/engine/connection-manager.ts +0 -239
  34. package/server/engine/connector/echo-back-connector.ts +0 -51
  35. package/server/engine/connector/echo-back-server.ts +0 -72
  36. package/server/engine/connector/graphql-connector.ts +0 -126
  37. package/server/engine/connector/http-connector.ts +0 -65
  38. package/server/engine/connector/index.ts +0 -12
  39. package/server/engine/connector/mqtt-connector.ts +0 -78
  40. package/server/engine/connector/mssql-connector.ts +0 -152
  41. package/server/engine/connector/mysql-connector.ts +0 -94
  42. package/server/engine/connector/operato-connector.ts +0 -264
  43. package/server/engine/connector/oracle-connector.ts +0 -218
  44. package/server/engine/connector/postgresql-connector.ts +0 -152
  45. package/server/engine/connector/proxy-connector.ts +0 -53
  46. package/server/engine/connector/socket-server.ts +0 -86
  47. package/server/engine/connector/sqlite-connector.ts +0 -69
  48. package/server/engine/edge-client.ts +0 -45
  49. package/server/engine/index.ts +0 -10
  50. package/server/engine/pending-queue.ts +0 -97
  51. package/server/engine/scenario-engine.ts +0 -106
  52. package/server/engine/task/book-up-scenario.ts +0 -73
  53. package/server/engine/task/csv-readline.ts +0 -127
  54. package/server/engine/task/data-accessor.ts +0 -36
  55. package/server/engine/task/data-mapper.ts +0 -47
  56. package/server/engine/task/database-query.ts +0 -56
  57. package/server/engine/task/echo-receive.ts +0 -21
  58. package/server/engine/task/echo-send.ts +0 -32
  59. package/server/engine/task/empty-check.ts +0 -38
  60. package/server/engine/task/end.ts +0 -18
  61. package/server/engine/task/floating-point.ts +0 -71
  62. package/server/engine/task/goto.ts +0 -27
  63. package/server/engine/task/graphql-mutate.ts +0 -79
  64. package/server/engine/task/graphql-query.ts +0 -78
  65. package/server/engine/task/headless-post.ts +0 -147
  66. package/server/engine/task/headless-scrap.ts +0 -80
  67. package/server/engine/task/http-get.ts +0 -117
  68. package/server/engine/task/http-post.ts +0 -148
  69. package/server/engine/task/index.ts +0 -45
  70. package/server/engine/task/jsonata.ts +0 -45
  71. package/server/engine/task/local-graphql-mutate.ts +0 -100
  72. package/server/engine/task/local-graphql-query.ts +0 -100
  73. package/server/engine/task/log.ts +0 -78
  74. package/server/engine/task/mqtt-publish.ts +0 -45
  75. package/server/engine/task/mqtt-subscribe.ts +0 -139
  76. package/server/engine/task/mssql-procedure.ts +0 -128
  77. package/server/engine/task/oracle-procedure.ts +0 -124
  78. package/server/engine/task/pick-pending-scenario.ts +0 -80
  79. package/server/engine/task/publish.ts +0 -40
  80. package/server/engine/task/random.ts +0 -53
  81. package/server/engine/task/reset-pending-queue.ts +0 -17
  82. package/server/engine/task/script.ts +0 -63
  83. package/server/engine/task/set-domain.ts +0 -37
  84. package/server/engine/task/sleep.ts +0 -34
  85. package/server/engine/task/socket-listener.ts +0 -96
  86. package/server/engine/task/state-group-read.ts +0 -69
  87. package/server/engine/task/state-read.ts +0 -56
  88. package/server/engine/task/state-write.ts +0 -65
  89. package/server/engine/task/stop-scenario.ts +0 -44
  90. package/server/engine/task/sub-scenario.ts +0 -57
  91. package/server/engine/task/switch-goto.ts +0 -43
  92. package/server/engine/task/switch-range-goto.ts +0 -53
  93. package/server/engine/task/switch-range-scenario.ts +0 -79
  94. package/server/engine/task/switch-range-set.ts +0 -48
  95. package/server/engine/task/switch-scenario.ts +0 -67
  96. package/server/engine/task/switch-set.ts +0 -37
  97. package/server/engine/task/throw.ts +0 -27
  98. package/server/engine/task/utils/headless-pool-for-scenario.ts +0 -71
  99. package/server/engine/task/utils/substitute.ts +0 -44
  100. package/server/engine/task/variables.ts +0 -17
  101. package/server/engine/task-registry.ts +0 -23
  102. package/server/engine/types.ts +0 -114
  103. package/server/index.ts +0 -20
  104. package/server/migrations/index.ts +0 -9
  105. package/server/restful/index.ts +0 -1
  106. package/server/restful/unstable/index.ts +0 -7
  107. package/server/restful/unstable/run-scenario.ts +0 -51
  108. package/server/restful/unstable/scenario-instance.ts +0 -52
  109. package/server/restful/unstable/scenario-instances.ts +0 -80
  110. package/server/restful/unstable/scenario.ts +0 -41
  111. package/server/restful/unstable/scenarios.ts +0 -69
  112. package/server/restful/unstable/start-scenario.ts +0 -33
  113. package/server/restful/unstable/stop-scenario.ts +0 -30
  114. package/server/routers/scenario-schedule-callback-router.ts +0 -69
  115. package/server/routers/scenario-view-router.ts +0 -46
  116. package/server/routes.ts +0 -30
  117. package/server/service/analysis/analysis-query.ts +0 -13
  118. package/server/service/analysis/index.ts +0 -3
  119. package/server/service/connection/connection-mutation.ts +0 -190
  120. package/server/service/connection/connection-query.ts +0 -87
  121. package/server/service/connection/connection-subscription.ts +0 -104
  122. package/server/service/connection/connection-type.ts +0 -288
  123. package/server/service/connection/index.ts +0 -7
  124. package/server/service/connector/connector-query.ts +0 -62
  125. package/server/service/connector/connector-type.ts +0 -29
  126. package/server/service/connector/index.ts +0 -4
  127. package/server/service/index.ts +0 -52
  128. package/server/service/payload-log/index.ts +0 -7
  129. package/server/service/payload-log/payload-log-mutation.ts +0 -151
  130. package/server/service/payload-log/payload-log-query.ts +0 -49
  131. package/server/service/payload-log/payload-log-type.ts +0 -36
  132. package/server/service/payload-log/payload-log.ts +0 -100
  133. package/server/service/property-spec.ts +0 -24
  134. package/server/service/scenario/index.ts +0 -6
  135. package/server/service/scenario/scenario-mutation.ts +0 -396
  136. package/server/service/scenario/scenario-query.ts +0 -109
  137. package/server/service/scenario/scenario-type.ts +0 -78
  138. package/server/service/scenario/scenario.ts +0 -124
  139. package/server/service/scenario-flow/scenario-flow.ts +0 -17
  140. package/server/service/scenario-instance/index.ts +0 -6
  141. package/server/service/scenario-instance/scenario-instance-mutation.ts +0 -44
  142. package/server/service/scenario-instance/scenario-instance-query.ts +0 -42
  143. package/server/service/scenario-instance/scenario-instance-subscription.ts +0 -118
  144. package/server/service/scenario-instance/scenario-instance-type.ts +0 -563
  145. package/server/service/scenario-queue/index.ts +0 -4
  146. package/server/service/scenario-queue/scenario-queue-subscription.ts +0 -55
  147. package/server/service/scenario-queue/scenario-queue-type.ts +0 -27
  148. package/server/service/state-register/data-resolver.ts +0 -56
  149. package/server/service/state-register/index.ts +0 -8
  150. package/server/service/state-register/state-register-mutation.ts +0 -166
  151. package/server/service/state-register/state-register-query.ts +0 -80
  152. package/server/service/state-register/state-register-type.ts +0 -80
  153. package/server/service/state-register/state-register.ts +0 -113
  154. package/server/service/step/index.ts +0 -6
  155. package/server/service/step/step-mutation.ts +0 -52
  156. package/server/service/step/step-query.ts +0 -55
  157. package/server/service/step/step-type.ts +0 -215
  158. package/server/service/task-type/index.ts +0 -4
  159. package/server/service/task-type/task-type-query.ts +0 -95
  160. package/server/service/task-type/task-type-type.ts +0 -29
@@ -1,166 +0,0 @@
1
- import { Resolver, Mutation, Arg, Ctx, Directive } from 'type-graphql'
2
- import { In } from 'typeorm'
3
-
4
- import { ScalarObject } from '@things-factory/shell'
5
- import { StateRegister } from './state-register'
6
- import { NewStateRegister, StateRegisterPatch } from './state-register-type'
7
-
8
- @Resolver(StateRegister)
9
- export class StateRegisterMutation {
10
- @Directive('@transaction')
11
- @Directive('@privilege(category: "state-register", privilege: "mutation", domainOwnerGranted: true)')
12
- @Mutation(returns => StateRegister, { description: 'To create new StateRegister' })
13
- async createStateRegister(
14
- @Arg('stateRegister') stateRegister: NewStateRegister,
15
- @Ctx() context: ResolverContext
16
- ): Promise<StateRegister> {
17
- const { domain, user, tx } = context.state
18
-
19
- return await tx.getRepository(StateRegister).save({
20
- ...stateRegister,
21
- domain,
22
- creator: user,
23
- updater: user
24
- })
25
- }
26
-
27
- @Directive('@transaction')
28
- @Directive('@privilege(category: "state-register", privilege: "mutation", domainOwnerGranted: true)')
29
- @Mutation(returns => StateRegister, { description: 'To modify StateRegister information' })
30
- async updateStateRegister(
31
- @Arg('id') id: string,
32
- @Arg('patch') patch: StateRegisterPatch,
33
- @Ctx() context: ResolverContext
34
- ): Promise<StateRegister> {
35
- const { domain, user, tx } = context.state
36
-
37
- const repository = tx.getRepository(StateRegister)
38
- const stateRegister = await repository.findOne({
39
- where: { domain: { id: domain.id }, id }
40
- })
41
-
42
- return await repository.save({
43
- ...stateRegister,
44
- ...patch,
45
- updater: user
46
- })
47
- }
48
-
49
- @Directive('@transaction')
50
- @Directive('@privilege(category: "state-register", privilege: "mutation", domainOwnerGranted: true)')
51
- @Mutation(returns => [StateRegister], { description: "To modify multiple StateRegisters' information" })
52
- async updateMultipleStateRegister(
53
- @Arg('patches', type => [StateRegisterPatch]) patches: StateRegisterPatch[],
54
- @Ctx() context: ResolverContext
55
- ): Promise<StateRegister[]> {
56
- const { domain, user, tx } = context.state
57
-
58
- let results = []
59
- const _createRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === '+')
60
- const _updateRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === 'M')
61
- const stateRegisterRepo = tx.getRepository(StateRegister)
62
-
63
- if (_createRecords.length > 0) {
64
- for (let i = 0; i < _createRecords.length; i++) {
65
- const newRecord = _createRecords[i]
66
-
67
- const result = await stateRegisterRepo.save({
68
- ...newRecord,
69
- domain,
70
- creator: user,
71
- updater: user
72
- })
73
-
74
- results.push({ ...result, cuFlag: '+' })
75
- }
76
- }
77
-
78
- if (_updateRecords.length > 0) {
79
- for (let i = 0; i < _updateRecords.length; i++) {
80
- const updateRecord = _updateRecords[i]
81
- const stateRegister = await stateRegisterRepo.findOneBy({ id: updateRecord.id })
82
-
83
- const result = await stateRegisterRepo.save({
84
- ...stateRegister,
85
- ...updateRecord,
86
- updater: user
87
- })
88
-
89
- results.push({ ...result, cuFlag: 'M' })
90
- }
91
- }
92
-
93
- return results
94
- }
95
-
96
- @Directive('@transaction')
97
- @Directive('@privilege(category: "state-register", privilege: "mutation", domainOwnerGranted: true)')
98
- @Mutation(returns => StateRegister, { description: 'To update state of StateRegister by name' })
99
- async updateStateRegisterByName(
100
- @Arg('name') name: string,
101
- @Arg('state', type => ScalarObject) state: any,
102
- @Ctx() context: ResolverContext
103
- ): Promise<StateRegister> {
104
- const { domain, user = null, tx } = context.state
105
-
106
- const repository = tx.getRepository(StateRegister)
107
- const stateRegister = await repository.findOne({
108
- where: { domain: { id: domain?.id }, name }
109
- })
110
-
111
- return await repository.save({
112
- ...stateRegister,
113
- state,
114
- writer: user,
115
- wroteAt: new Date()
116
- })
117
- }
118
-
119
- @Directive('@transaction')
120
- @Directive('@privilege(category: "state-register", privilege: "mutation", domainOwnerGranted: true)')
121
- @Mutation(returns => Boolean, { description: 'To delete StateRegister' })
122
- async deleteStateRegister(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<boolean> {
123
- const { domain, tx } = context.state
124
-
125
- await tx.getRepository(StateRegister).delete({ domain: { id: domain.id }, id })
126
-
127
- return true
128
- }
129
-
130
- @Directive('@transaction')
131
- @Directive('@privilege(category: "state-register", privilege: "mutation", domainOwnerGranted: true)')
132
- @Mutation(returns => Boolean, { description: 'To delete multiple StateRegisters' })
133
- async deleteStateRegisters(
134
- @Arg('ids', type => [String]) ids: string[],
135
- @Ctx() context: ResolverContext
136
- ): Promise<boolean> {
137
- const { domain, tx } = context.state
138
-
139
- await tx.getRepository(StateRegister).delete({
140
- domain: { id: domain.id },
141
- id: In(ids)
142
- })
143
-
144
- return true
145
- }
146
-
147
- @Directive('@transaction')
148
- @Directive('@privilege(category: "state-register", privilege: "mutation", domainOwnerGranted: true)')
149
- @Mutation(returns => Boolean, { description: 'To import multiple StateRegisters' })
150
- async importStateRegisters(
151
- @Arg('stateRegisters', type => [StateRegisterPatch]) stateRegisters: StateRegisterPatch[],
152
- @Ctx() context: ResolverContext
153
- ): Promise<boolean> {
154
- const { domain, tx } = context.state
155
-
156
- await Promise.all(
157
- stateRegisters.map(async (stateRegister: StateRegisterPatch) => {
158
- const createdStateRegister: StateRegister = await tx
159
- .getRepository(StateRegister)
160
- .save({ domain, ...stateRegister })
161
- })
162
- )
163
-
164
- return true
165
- }
166
- }
@@ -1,80 +0,0 @@
1
- import { Resolver, Query, FieldResolver, Root, Args, Arg, Ctx, Directive } from 'type-graphql'
2
- import { Domain, getQueryBuilderFromListParams, getRepository, ListParam, ScalarObject } from '@things-factory/shell'
3
- import { User } from '@things-factory/auth-base'
4
- import { StateRegister } from './state-register'
5
- import { StateRegisterList } from './state-register-type'
6
-
7
- @Resolver(StateRegister)
8
- export class StateRegisterQuery {
9
- @Directive('@privilege(category: "state-register", privilege: "query", domainOwnerGranted: true)')
10
- @Query(returns => StateRegister!, { nullable: true, description: 'To fetch a StateRegister' })
11
- async stateRegister(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<StateRegister> {
12
- const { domain } = context.state
13
-
14
- return await getRepository(StateRegister).findOne({
15
- where: { domain: { id: domain.id }, id }
16
- })
17
- }
18
-
19
- @Directive('@privilege(category: "state-register", privilege: "query", domainOwnerGranted: true)')
20
- @Query(returns => StateRegister!, { nullable: true, description: 'To fetch a StateRegister by name' })
21
- async stateRegisterByName(@Arg('name') name: string, @Ctx() context: ResolverContext): Promise<StateRegister> {
22
- const { domain } = context.state
23
-
24
- return await getRepository(StateRegister).findOne({
25
- where: { domain: { id: domain.id }, name }
26
- })
27
- }
28
-
29
- @Directive('@privilege(category: "state-register", privilege: "query", domainOwnerGranted: true)')
30
- @Query(returns => StateRegisterList, { description: 'To fetch multiple StateRegisters' })
31
- async stateRegisters(
32
- @Args(type => ListParam) params: ListParam,
33
- @Ctx() context: ResolverContext
34
- ): Promise<StateRegisterList> {
35
- const { domain } = context.state
36
-
37
- const queryBuilder = getQueryBuilderFromListParams({
38
- domain,
39
- params,
40
- repository: await getRepository(StateRegister),
41
- searchables: ['name', 'description', 'group']
42
- })
43
-
44
- const [items, total] = await queryBuilder.getManyAndCount()
45
-
46
- return { items, total }
47
- }
48
-
49
- @FieldResolver(type => ScalarObject)
50
- async state(@Root() stateRegister: StateRegister): Promise<any> {
51
- const { state, wroteAt, ttl } = stateRegister
52
-
53
- if (!isNaN(ttl) && Number(ttl) > 0) {
54
- const expired = (wroteAt?.getTime() || 0) + Number(ttl) * 1000 < Date.now()
55
- return expired ? null : state
56
- } else {
57
- return state
58
- }
59
- }
60
-
61
- @FieldResolver(type => Domain)
62
- async domain(@Root() stateRegister: StateRegister): Promise<Domain> {
63
- return stateRegister.domainId && (await getRepository(Domain).findOneBy({ id: stateRegister.domainId }))
64
- }
65
-
66
- @FieldResolver(type => User)
67
- async writer(@Root() stateRegister: StateRegister): Promise<User> {
68
- return stateRegister.writerId && (await getRepository(User).findOneBy({ id: stateRegister.writerId }))
69
- }
70
-
71
- @FieldResolver(type => User)
72
- async updater(@Root() stateRegister: StateRegister): Promise<User> {
73
- return stateRegister.updaterId && (await getRepository(User).findOneBy({ id: stateRegister.updaterId }))
74
- }
75
-
76
- @FieldResolver(type => User)
77
- async creator(@Root() stateRegister: StateRegister): Promise<User> {
78
- return stateRegister.creatorId && (await getRepository(User).findOneBy({ id: stateRegister.creatorId }))
79
- }
80
- }
@@ -1,80 +0,0 @@
1
- import { ObjectType, Field, InputType, Int, ID } from 'type-graphql'
2
-
3
- import { ScalarObject } from '@things-factory/shell'
4
-
5
- import { StateRegister } from './state-register'
6
-
7
- @InputType()
8
- export class NewStateRegister {
9
- @Field({ description: 'Name of the state register' })
10
- name: string
11
-
12
- @Field({ nullable: true, description: 'Description of the state register' })
13
- description?: string
14
-
15
- @Field({ nullable: true, description: 'Group name for the state register' })
16
- group?: string
17
-
18
- @Field({ nullable: true, description: 'Type of the state' })
19
- type?: string
20
-
21
- @Field({ nullable: true, description: 'Number of decimal places if the state is a number type' })
22
- place?: string
23
-
24
- @Field({ nullable: true, description: 'Unit of the state value' })
25
- unit?: string
26
-
27
- @Field(type => ScalarObject, { nullable: true, description: 'Current state value' })
28
- state?: any
29
-
30
- @Field(type => Int, { nullable: true, description: 'Time to live for the state value in seconds' })
31
- ttl?: number
32
-
33
- @Field({ nullable: true, description: 'Reference to an external entity or data, used as a flexible foreign key' })
34
- refBy?: string
35
- }
36
-
37
- @InputType()
38
- export class StateRegisterPatch {
39
- @Field(type => ID, { nullable: true, description: 'ID of the state register' })
40
- id?: string
41
-
42
- @Field({ nullable: true, description: 'Name of the state register' })
43
- name?: string
44
-
45
- @Field({ nullable: true, description: 'Description of the state register' })
46
- description?: string
47
-
48
- @Field({ nullable: true, description: 'Group name for the state register' })
49
- group?: string
50
-
51
- @Field({ nullable: true, description: 'Type of the state' })
52
- type?: string
53
-
54
- @Field({ nullable: true, description: 'Number of decimal places if the state is a number type' })
55
- place?: string
56
-
57
- @Field({ nullable: true, description: 'Unit of the state value' })
58
- unit?: string
59
-
60
- @Field(type => ScalarObject, { nullable: true, description: 'Current state value' })
61
- state?: any
62
-
63
- @Field(type => Int, { nullable: true, description: 'Time to live for the state value in seconds' })
64
- ttl?: number
65
-
66
- @Field({ nullable: true, description: 'Reference to an external entity or data, used as a flexible foreign key' })
67
- refBy?: string
68
-
69
- @Field({ nullable: true, description: 'Flag indicating create/update operations' })
70
- cuFlag?: string
71
- }
72
-
73
- @ObjectType()
74
- export class StateRegisterList {
75
- @Field(type => [StateRegister], { description: 'List of state registers' })
76
- items: StateRegister[]
77
-
78
- @Field(type => Int, { description: 'Total number of state registers' })
79
- total: number
80
- }
@@ -1,113 +0,0 @@
1
- import {
2
- CreateDateColumn,
3
- UpdateDateColumn,
4
- Entity,
5
- Index,
6
- Column,
7
- RelationId,
8
- ManyToOne,
9
- PrimaryGeneratedColumn
10
- } from 'typeorm'
11
- import { ObjectType, Field, Int, ID } from 'type-graphql'
12
-
13
- import { Domain, ScalarObject } from '@things-factory/shell'
14
- import { User } from '@things-factory/auth-base'
15
-
16
- @Entity()
17
- @Index('ix_state_register_0', (stateRegister: StateRegister) => [stateRegister.domain, stateRegister.name], {
18
- unique: true
19
- })
20
- @Index(
21
- 'ix_state_register_1',
22
- (stateRegister: StateRegister) => [stateRegister.domain, stateRegister.group, stateRegister.name],
23
- {
24
- unique: true,
25
- where: '"group" IS NOT NULL'
26
- }
27
- )
28
- @ObjectType({ description: 'Entity for StateRegister' })
29
- export class StateRegister {
30
- @PrimaryGeneratedColumn('uuid')
31
- @Field(type => ID)
32
- readonly id: string
33
-
34
- @ManyToOne(type => Domain)
35
- @Field(type => Domain, { description: 'Associated domain for the state register' })
36
- domain?: Domain
37
-
38
- @RelationId((stateRegister: StateRegister) => stateRegister.domain)
39
- @Field({ description: 'ID of the associated domain' })
40
- domainId?: string
41
-
42
- @Column()
43
- @Field({ nullable: true, description: 'Name of the state register' })
44
- name?: string
45
-
46
- @Column({ nullable: true })
47
- @Field({ nullable: true, description: 'Description of the state register' })
48
- description?: string
49
-
50
- @Column({ nullable: true })
51
- @Field({ nullable: true, description: 'Group name for the state register' })
52
- group?: string
53
-
54
- @Column({ nullable: true })
55
- @Field({ nullable: true, description: 'Type of the state' })
56
- type?: string
57
-
58
- @Column({ nullable: true })
59
- @Field({ nullable: true, description: 'Number of decimal places if the state is a number type' })
60
- place?: string
61
-
62
- @Column({ nullable: true })
63
- @Field({ nullable: true, description: 'Unit of the state value' })
64
- unit?: string
65
-
66
- @Column('simple-json', { nullable: true, default: null })
67
- @Field(type => ScalarObject, { nullable: true, description: 'Current state value' })
68
- state?: any
69
-
70
- @Column({ nullable: true, default: null })
71
- @Field(type => Int, { nullable: true, description: 'Time to live for the state value in seconds' })
72
- ttl?: number
73
-
74
- @Column({ nullable: true })
75
- @Field({ nullable: true, description: 'Reference to an external entity or data, used as a flexible foreign key' })
76
- refBy?: string
77
-
78
- @Column({ nullable: true })
79
- @Field({ nullable: true, description: 'Time when the state was recorded' })
80
- wroteAt?: Date
81
-
82
- @CreateDateColumn()
83
- @Field({ nullable: true, description: 'Creation time of the state register' })
84
- createdAt?: Date
85
-
86
- @UpdateDateColumn()
87
- @Field({ nullable: true, description: 'Last update time of the state register' })
88
- updatedAt?: Date
89
-
90
- @ManyToOne(type => User, { nullable: true })
91
- @Field(type => User, { nullable: true, description: 'User who wrote the state' })
92
- writer?: User
93
-
94
- @RelationId((stateRegister: StateRegister) => stateRegister.writer)
95
- @Field({ nullable: true, description: 'ID of the user who wrote the state' })
96
- writerId?: string
97
-
98
- @ManyToOne(type => User, { nullable: true })
99
- @Field(type => User, { nullable: true, description: 'User who created the state register' })
100
- creator?: User
101
-
102
- @RelationId((stateRegister: StateRegister) => stateRegister.creator)
103
- @Field({ nullable: true, description: 'ID of the user who created the state register' })
104
- creatorId?: string
105
-
106
- @ManyToOne(type => User, { nullable: true })
107
- @Field(type => User, { nullable: true, description: 'User who last updated the state register' })
108
- updater?: User
109
-
110
- @RelationId((stateRegister: StateRegister) => stateRegister.updater)
111
- @Field({ nullable: true, description: 'ID of the user who last updated the state register' })
112
- updaterId?: string
113
- }
@@ -1,6 +0,0 @@
1
- import { Step } from './step-type'
2
- import { StepQuery } from './step-query'
3
- import { StepMutation } from './step-mutation'
4
-
5
- export const entities = [Step]
6
- export const resolvers = [StepQuery, StepMutation]
@@ -1,52 +0,0 @@
1
- import { Arg, Ctx, Directive, Mutation, Resolver } from 'type-graphql'
2
- import { In } from 'typeorm'
3
-
4
- import { Scenario } from '../scenario/scenario'
5
- import { Step, StepPatch } from './step-type'
6
-
7
- @Resolver(Step)
8
- export class StepMutation {
9
- @Directive('@transaction')
10
- @Mutation(returns => [Step], { description: "To modify multiple steps' in a scenario" })
11
- async updateMultipleStep(
12
- @Arg('scenarioId') scenarioId: string,
13
- @Arg('patches', type => [StepPatch]) patches: StepPatch[],
14
- @Ctx() context: ResolverContext
15
- ): Promise<Step[]> {
16
- const { domain, user, tx } = context.state
17
-
18
- let results = []
19
- const stepRepo = tx.getRepository(Step)
20
- const scenario = await tx.getRepository(Scenario).findOneBy({ id: scenarioId })
21
-
22
- await stepRepo.delete({ domain: { id: domain.id }, scenario: { id: scenarioId } })
23
-
24
- for (let i = 0; i < patches.length; i++) {
25
- const result = await stepRepo.save({
26
- ...patches[i],
27
- sequence: i,
28
- scenario,
29
- domain,
30
- creator: user,
31
- updater: user
32
- })
33
-
34
- results.push({ ...result, cuFlag: '+' })
35
- }
36
-
37
- return results
38
- }
39
-
40
- @Directive('@transaction')
41
- @Mutation(returns => Boolean, { description: 'To delete multiple steps' })
42
- async deleteSteps(@Arg('ids', type => [String]) ids: string[], @Ctx() context: ResolverContext): Promise<boolean> {
43
- const { domain, tx } = context.state
44
-
45
- await tx.getRepository(Step).delete({
46
- domain: { id: domain.id },
47
- id: In(ids.filter(Boolean))
48
- })
49
-
50
- return true
51
- }
52
- }
@@ -1,55 +0,0 @@
1
- import { Arg, Args, Ctx, FieldResolver, Query, Resolver, Root } from 'type-graphql'
2
-
3
- import { User } from '@things-factory/auth-base'
4
- import { Domain, getQueryBuilderFromListParams, getRepository, ListParam } from '@things-factory/shell'
5
-
6
- import { Scenario } from '../scenario/scenario'
7
- import { Step, StepList } from './step-type'
8
-
9
- @Resolver(Step)
10
- export class StepQuery {
11
- @Query(returns => Step, { description: 'To fetch a step' })
12
- async step(@Arg('name') name: string, @Ctx() context: ResolverContext): Promise<Step> {
13
- const { domain } = context.state
14
-
15
- return await getRepository(Step).findOne({
16
- where: { domain: { id: domain.id }, name }
17
- })
18
- }
19
-
20
- @Query(returns => StepList, { description: 'To fetch multiple steps' })
21
- async steps(@Args(type => ListParam) params: ListParam, @Ctx() context: ResolverContext): Promise<StepList> {
22
- const { domain } = context.state
23
-
24
- const queryBuilder = getQueryBuilderFromListParams({
25
- repository: getRepository(Step),
26
- params,
27
- domain,
28
- searchables: ['name', 'description']
29
- })
30
-
31
- const [items, total] = await queryBuilder.getManyAndCount()
32
-
33
- return { items, total }
34
- }
35
-
36
- @FieldResolver(type => Scenario)
37
- async scenario(@Root() step: Step) {
38
- return await getRepository(Scenario).findOneBy({ id: step.scenarioId })
39
- }
40
-
41
- @FieldResolver(type => Domain)
42
- async domain(@Root() step: Step) {
43
- return await getRepository(Domain).findOneBy({ id: step.domainId })
44
- }
45
-
46
- @FieldResolver(type => User)
47
- async updater(@Root() step: Step): Promise<User> {
48
- return await getRepository(User).findOneBy({ id: step.updaterId })
49
- }
50
-
51
- @FieldResolver(type => User)
52
- async creator(@Root() step: Step): Promise<User> {
53
- return await getRepository(User).findOneBy({ id: step.creatorId })
54
- }
55
- }