@things-factory/integration-base 8.0.0-beta.1 → 8.0.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +10 -10
- package/server/controllers/index.ts +0 -2
- package/server/controllers/publish-data.ts +0 -29
- package/server/controllers/scenario-controller.ts +0 -156
- package/server/engine/analyzer/analyze-integration.ts +0 -115
- package/server/engine/connection-manager.ts +0 -239
- package/server/engine/connector/echo-back-connector.ts +0 -51
- package/server/engine/connector/echo-back-server.ts +0 -72
- package/server/engine/connector/graphql-connector.ts +0 -126
- package/server/engine/connector/headless-connector.ts +0 -341
- package/server/engine/connector/http-connector.ts +0 -65
- package/server/engine/connector/index.ts +0 -13
- package/server/engine/connector/mqtt-connector.ts +0 -78
- package/server/engine/connector/mssql-connector.ts +0 -152
- package/server/engine/connector/mysql-connector.ts +0 -94
- package/server/engine/connector/operato-connector.ts +0 -264
- package/server/engine/connector/oracle-connector.ts +0 -218
- package/server/engine/connector/postgresql-connector.ts +0 -152
- package/server/engine/connector/proxy-connector.ts +0 -53
- package/server/engine/connector/socket-server.ts +0 -86
- package/server/engine/connector/sqlite-connector.ts +0 -69
- package/server/engine/edge-client.ts +0 -45
- package/server/engine/index.ts +0 -11
- package/server/engine/pending-queue.ts +0 -97
- package/server/engine/resource-pool/headless-pool.ts +0 -136
- package/server/engine/resource-pool/index.ts +0 -1
- package/server/engine/scenario-engine.ts +0 -106
- package/server/engine/task/book-up-scenario.ts +0 -73
- package/server/engine/task/csv-readline.ts +0 -127
- package/server/engine/task/data-accessor.ts +0 -36
- package/server/engine/task/data-mapper.ts +0 -47
- package/server/engine/task/database-query.ts +0 -56
- package/server/engine/task/echo-receive.ts +0 -21
- package/server/engine/task/echo-send.ts +0 -32
- package/server/engine/task/empty-check.ts +0 -38
- package/server/engine/task/end.ts +0 -18
- package/server/engine/task/floating-point.ts +0 -71
- package/server/engine/task/goto.ts +0 -27
- package/server/engine/task/graphql-mutate.ts +0 -79
- package/server/engine/task/graphql-query.ts +0 -78
- package/server/engine/task/headless-post.ts +0 -128
- package/server/engine/task/headless-scrap.ts +0 -83
- package/server/engine/task/http-get.ts +0 -117
- package/server/engine/task/http-post.ts +0 -148
- package/server/engine/task/index.ts +0 -45
- package/server/engine/task/jsonata.ts +0 -45
- package/server/engine/task/local-graphql-mutate.ts +0 -100
- package/server/engine/task/local-graphql-query.ts +0 -100
- package/server/engine/task/log.ts +0 -78
- package/server/engine/task/mqtt-publish.ts +0 -45
- package/server/engine/task/mqtt-subscribe.ts +0 -139
- package/server/engine/task/mssql-procedure.ts +0 -128
- package/server/engine/task/oracle-procedure.ts +0 -124
- package/server/engine/task/pick-pending-scenario.ts +0 -80
- package/server/engine/task/publish.ts +0 -40
- package/server/engine/task/random.ts +0 -53
- package/server/engine/task/reset-pending-queue.ts +0 -17
- package/server/engine/task/script.ts +0 -63
- package/server/engine/task/set-domain.ts +0 -37
- package/server/engine/task/sleep.ts +0 -34
- package/server/engine/task/socket-listener.ts +0 -96
- package/server/engine/task/state-group-read.ts +0 -69
- package/server/engine/task/state-read.ts +0 -56
- package/server/engine/task/state-write.ts +0 -65
- package/server/engine/task/stop-scenario.ts +0 -44
- package/server/engine/task/sub-scenario.ts +0 -57
- package/server/engine/task/switch-goto.ts +0 -43
- package/server/engine/task/switch-range-goto.ts +0 -53
- package/server/engine/task/switch-range-scenario.ts +0 -79
- package/server/engine/task/switch-range-set.ts +0 -48
- package/server/engine/task/switch-scenario.ts +0 -67
- package/server/engine/task/switch-set.ts +0 -37
- package/server/engine/task/throw.ts +0 -27
- package/server/engine/task/utils/headless-pool-for-scenario.ts +0 -71
- package/server/engine/task/utils/substitute.ts +0 -44
- package/server/engine/task/variables.ts +0 -17
- package/server/engine/task-registry.ts +0 -23
- package/server/engine/types.ts +0 -114
- package/server/index.ts +0 -20
- package/server/migrations/index.ts +0 -9
- package/server/restful/index.ts +0 -1
- package/server/restful/unstable/index.ts +0 -7
- package/server/restful/unstable/run-scenario.ts +0 -51
- package/server/restful/unstable/scenario-instance.ts +0 -52
- package/server/restful/unstable/scenario-instances.ts +0 -80
- package/server/restful/unstable/scenario.ts +0 -41
- package/server/restful/unstable/scenarios.ts +0 -69
- package/server/restful/unstable/start-scenario.ts +0 -33
- package/server/restful/unstable/stop-scenario.ts +0 -30
- package/server/routers/scenario-schedule-callback-router.ts +0 -69
- package/server/routers/scenario-view-router.ts +0 -46
- package/server/routes.ts +0 -30
- package/server/service/analysis/analysis-query.ts +0 -13
- package/server/service/analysis/index.ts +0 -3
- package/server/service/connection/connection-mutation.ts +0 -190
- package/server/service/connection/connection-query.ts +0 -87
- package/server/service/connection/connection-subscription.ts +0 -104
- package/server/service/connection/connection-type.ts +0 -288
- package/server/service/connection/index.ts +0 -7
- package/server/service/connector/connector-query.ts +0 -62
- package/server/service/connector/connector-type.ts +0 -29
- package/server/service/connector/index.ts +0 -4
- package/server/service/index.ts +0 -52
- package/server/service/payload-log/index.ts +0 -7
- package/server/service/payload-log/payload-log-mutation.ts +0 -151
- package/server/service/payload-log/payload-log-query.ts +0 -49
- package/server/service/payload-log/payload-log-type.ts +0 -36
- package/server/service/payload-log/payload-log.ts +0 -100
- package/server/service/property-spec.ts +0 -24
- package/server/service/scenario/index.ts +0 -6
- package/server/service/scenario/scenario-mutation.ts +0 -396
- package/server/service/scenario/scenario-query.ts +0 -109
- package/server/service/scenario/scenario-type.ts +0 -78
- package/server/service/scenario/scenario.ts +0 -124
- package/server/service/scenario-flow/scenario-flow.ts +0 -17
- package/server/service/scenario-instance/index.ts +0 -6
- package/server/service/scenario-instance/scenario-instance-mutation.ts +0 -44
- package/server/service/scenario-instance/scenario-instance-query.ts +0 -42
- package/server/service/scenario-instance/scenario-instance-subscription.ts +0 -118
- package/server/service/scenario-instance/scenario-instance-type.ts +0 -563
- package/server/service/scenario-queue/index.ts +0 -4
- package/server/service/scenario-queue/scenario-queue-subscription.ts +0 -55
- package/server/service/scenario-queue/scenario-queue-type.ts +0 -27
- package/server/service/state-register/data-resolver.ts +0 -56
- package/server/service/state-register/index.ts +0 -8
- package/server/service/state-register/state-register-mutation.ts +0 -166
- package/server/service/state-register/state-register-query.ts +0 -80
- package/server/service/state-register/state-register-type.ts +0 -80
- package/server/service/state-register/state-register.ts +0 -113
- package/server/service/step/index.ts +0 -6
- package/server/service/step/step-mutation.ts +0 -52
- package/server/service/step/step-query.ts +0 -55
- package/server/service/step/step-type.ts +0 -215
- package/server/service/task-type/index.ts +0 -4
- package/server/service/task-type/task-type-query.ts +0 -95
- 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,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
|
-
}
|