@things-factory/integration-base 8.0.39 → 9.0.0-9.0.0-beta.59.0

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 (174) 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 +3 -2
  10. package/dist-server/engine/index.js +3 -2
  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/engine/task/mqtt-publish.js +29 -6
  23. package/dist-server/engine/task/mqtt-publish.js.map +1 -1
  24. package/dist-server/engine/task/mqtt-subscribe.js +178 -64
  25. package/dist-server/engine/task/mqtt-subscribe.js.map +1 -1
  26. package/dist-server/index.d.ts +6 -6
  27. package/dist-server/index.js +10 -10
  28. package/dist-server/index.js.map +1 -1
  29. package/dist-server/routes.js +6 -6
  30. package/dist-server/routes.js.map +1 -1
  31. package/dist-server/service/connection/connection-mutation.js +17 -5
  32. package/dist-server/service/connection/connection-mutation.js.map +1 -1
  33. package/dist-server/service/connection/connection-query.js +3 -0
  34. package/dist-server/service/connection/connection-query.js.map +1 -1
  35. package/dist-server/service/index.d.ts +1 -1
  36. package/dist-server/tsconfig.tsbuildinfo +1 -1
  37. package/package.json +12 -11
  38. package/translations/en.json +12 -4
  39. package/translations/ja.json +12 -4
  40. package/translations/ko.json +12 -4
  41. package/translations/ms.json +12 -4
  42. package/translations/zh.json +12 -4
  43. package/server/controllers/index.ts +0 -2
  44. package/server/controllers/publish-data.ts +0 -29
  45. package/server/controllers/scenario-controller.ts +0 -154
  46. package/server/engine/analyzer/analyze-integration.ts +0 -115
  47. package/server/engine/connection-manager.ts +0 -232
  48. package/server/engine/connector/echo-back-connector.ts +0 -51
  49. package/server/engine/connector/echo-back-server.ts +0 -72
  50. package/server/engine/connector/graphql-connector.ts +0 -126
  51. package/server/engine/connector/http-connector.ts +0 -65
  52. package/server/engine/connector/index.ts +0 -12
  53. package/server/engine/connector/mqtt-connector.ts +0 -78
  54. package/server/engine/connector/mssql-connector.ts +0 -152
  55. package/server/engine/connector/mysql-connector.ts +0 -94
  56. package/server/engine/connector/operato-connector.ts +0 -264
  57. package/server/engine/connector/oracle-connector.ts +0 -218
  58. package/server/engine/connector/postgresql-connector.ts +0 -152
  59. package/server/engine/connector/proxy-connector.ts +0 -53
  60. package/server/engine/connector/socket-server.ts +0 -86
  61. package/server/engine/connector/sqlite-connector.ts +0 -69
  62. package/server/engine/edge-client.ts +0 -45
  63. package/server/engine/index.ts +0 -10
  64. package/server/engine/pending-queue.ts +0 -97
  65. package/server/engine/scenario-engine.ts +0 -106
  66. package/server/engine/task/book-up-scenario.ts +0 -73
  67. package/server/engine/task/csv-readline.ts +0 -127
  68. package/server/engine/task/data-accessor.ts +0 -36
  69. package/server/engine/task/data-mapper.ts +0 -47
  70. package/server/engine/task/database-query.ts +0 -56
  71. package/server/engine/task/echo-receive.ts +0 -21
  72. package/server/engine/task/echo-send.ts +0 -32
  73. package/server/engine/task/empty-check.ts +0 -38
  74. package/server/engine/task/end.ts +0 -18
  75. package/server/engine/task/floating-point.ts +0 -71
  76. package/server/engine/task/goto.ts +0 -27
  77. package/server/engine/task/graphql-mutate.ts +0 -79
  78. package/server/engine/task/graphql-query.ts +0 -78
  79. package/server/engine/task/headless-post.ts +0 -147
  80. package/server/engine/task/headless-scrap.ts +0 -80
  81. package/server/engine/task/http-get.ts +0 -117
  82. package/server/engine/task/http-post.ts +0 -148
  83. package/server/engine/task/index.ts +0 -45
  84. package/server/engine/task/jsonata.ts +0 -45
  85. package/server/engine/task/local-graphql-mutate.ts +0 -100
  86. package/server/engine/task/local-graphql-query.ts +0 -100
  87. package/server/engine/task/log.ts +0 -78
  88. package/server/engine/task/mqtt-publish.ts +0 -45
  89. package/server/engine/task/mqtt-subscribe.ts +0 -139
  90. package/server/engine/task/mssql-procedure.ts +0 -128
  91. package/server/engine/task/oracle-procedure.ts +0 -124
  92. package/server/engine/task/pick-pending-scenario.ts +0 -80
  93. package/server/engine/task/publish.ts +0 -40
  94. package/server/engine/task/random.ts +0 -53
  95. package/server/engine/task/reset-pending-queue.ts +0 -17
  96. package/server/engine/task/script.ts +0 -63
  97. package/server/engine/task/set-domain.ts +0 -37
  98. package/server/engine/task/sleep.ts +0 -34
  99. package/server/engine/task/socket-listener.ts +0 -96
  100. package/server/engine/task/state-group-read.ts +0 -69
  101. package/server/engine/task/state-read.ts +0 -56
  102. package/server/engine/task/state-write.ts +0 -65
  103. package/server/engine/task/stop-scenario.ts +0 -44
  104. package/server/engine/task/sub-scenario.ts +0 -57
  105. package/server/engine/task/switch-goto.ts +0 -43
  106. package/server/engine/task/switch-range-goto.ts +0 -53
  107. package/server/engine/task/switch-range-scenario.ts +0 -79
  108. package/server/engine/task/switch-range-set.ts +0 -48
  109. package/server/engine/task/switch-scenario.ts +0 -67
  110. package/server/engine/task/switch-set.ts +0 -37
  111. package/server/engine/task/throw.ts +0 -27
  112. package/server/engine/task/utils/headless-pool-for-scenario.ts +0 -71
  113. package/server/engine/task/utils/substitute.ts +0 -44
  114. package/server/engine/task/variables.ts +0 -17
  115. package/server/engine/task-registry.ts +0 -23
  116. package/server/engine/types.ts +0 -114
  117. package/server/index.ts +0 -20
  118. package/server/migrations/index.ts +0 -9
  119. package/server/restful/index.ts +0 -1
  120. package/server/restful/unstable/index.ts +0 -7
  121. package/server/restful/unstable/run-scenario.ts +0 -51
  122. package/server/restful/unstable/scenario-instance.ts +0 -52
  123. package/server/restful/unstable/scenario-instances.ts +0 -80
  124. package/server/restful/unstable/scenario.ts +0 -41
  125. package/server/restful/unstable/scenarios.ts +0 -69
  126. package/server/restful/unstable/start-scenario.ts +0 -33
  127. package/server/restful/unstable/stop-scenario.ts +0 -30
  128. package/server/routers/scenario-schedule-callback-router.ts +0 -69
  129. package/server/routers/scenario-view-router.ts +0 -46
  130. package/server/routes.ts +0 -35
  131. package/server/service/analysis/analysis-query.ts +0 -13
  132. package/server/service/analysis/index.ts +0 -3
  133. package/server/service/connection/connection-mutation.ts +0 -190
  134. package/server/service/connection/connection-query.ts +0 -87
  135. package/server/service/connection/connection-subscription.ts +0 -104
  136. package/server/service/connection/connection-type.ts +0 -305
  137. package/server/service/connection/index.ts +0 -7
  138. package/server/service/connector/connector-query.ts +0 -62
  139. package/server/service/connector/connector-type.ts +0 -29
  140. package/server/service/connector/index.ts +0 -4
  141. package/server/service/index.ts +0 -52
  142. package/server/service/payload-log/index.ts +0 -7
  143. package/server/service/payload-log/payload-log-mutation.ts +0 -151
  144. package/server/service/payload-log/payload-log-query.ts +0 -49
  145. package/server/service/payload-log/payload-log-type.ts +0 -36
  146. package/server/service/payload-log/payload-log.ts +0 -100
  147. package/server/service/property-spec.ts +0 -24
  148. package/server/service/scenario/index.ts +0 -6
  149. package/server/service/scenario/scenario-mutation.ts +0 -396
  150. package/server/service/scenario/scenario-query.ts +0 -109
  151. package/server/service/scenario/scenario-type.ts +0 -78
  152. package/server/service/scenario/scenario.ts +0 -124
  153. package/server/service/scenario-flow/scenario-flow.ts +0 -17
  154. package/server/service/scenario-instance/index.ts +0 -6
  155. package/server/service/scenario-instance/scenario-instance-mutation.ts +0 -44
  156. package/server/service/scenario-instance/scenario-instance-query.ts +0 -42
  157. package/server/service/scenario-instance/scenario-instance-subscription.ts +0 -118
  158. package/server/service/scenario-instance/scenario-instance-type.ts +0 -557
  159. package/server/service/scenario-queue/index.ts +0 -4
  160. package/server/service/scenario-queue/scenario-queue-subscription.ts +0 -55
  161. package/server/service/scenario-queue/scenario-queue-type.ts +0 -27
  162. package/server/service/state-register/data-resolver.ts +0 -56
  163. package/server/service/state-register/index.ts +0 -8
  164. package/server/service/state-register/state-register-mutation.ts +0 -166
  165. package/server/service/state-register/state-register-query.ts +0 -80
  166. package/server/service/state-register/state-register-type.ts +0 -80
  167. package/server/service/state-register/state-register.ts +0 -113
  168. package/server/service/step/index.ts +0 -6
  169. package/server/service/step/step-mutation.ts +0 -52
  170. package/server/service/step/step-query.ts +0 -55
  171. package/server/service/step/step-type.ts +0 -238
  172. package/server/service/task-type/index.ts +0 -4
  173. package/server/service/task-type/task-type-query.ts +0 -95
  174. 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
- }