@things-factory/integration-base 6.1.118 → 6.1.122
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/dist-server/engine/task/data-accessor.js +28 -0
- package/dist-server/engine/task/data-accessor.js.map +1 -0
- package/dist-server/engine/task/database-procedure.js +32 -5
- package/dist-server/engine/task/database-procedure.js.map +1 -1
- package/dist-server/engine/task/oracle-procedure.js +19 -21
- package/dist-server/engine/task/oracle-procedure.js.map +1 -1
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/package.json +6 -6
- package/server/engine/task/data-accessor.ts +33 -0
- package/server/engine/task/oracle-procedure.ts +26 -21
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@things-factory/integration-base",
|
3
|
-
"version": "6.1.
|
3
|
+
"version": "6.1.122",
|
4
4
|
"main": "dist-server/index.js",
|
5
5
|
"browser": "client/index.js",
|
6
6
|
"things-factory": true,
|
@@ -26,11 +26,11 @@
|
|
26
26
|
},
|
27
27
|
"dependencies": {
|
28
28
|
"@apollo/client": "^3.6.9",
|
29
|
-
"@things-factory/api": "^6.1.
|
30
|
-
"@things-factory/auth-base": "^6.1.
|
29
|
+
"@things-factory/api": "^6.1.122",
|
30
|
+
"@things-factory/auth-base": "^6.1.122",
|
31
31
|
"@things-factory/env": "^6.1.116",
|
32
|
-
"@things-factory/oauth2-client": "^6.1.
|
33
|
-
"@things-factory/scheduler-client": "^6.1.
|
32
|
+
"@things-factory/oauth2-client": "^6.1.122",
|
33
|
+
"@things-factory/scheduler-client": "^6.1.122",
|
34
34
|
"@things-factory/shell": "^6.1.118",
|
35
35
|
"async-mqtt": "^2.5.0",
|
36
36
|
"chance": "^1.1.11",
|
@@ -46,5 +46,5 @@
|
|
46
46
|
"devDependencies": {
|
47
47
|
"@types/cron": "^2.0.1"
|
48
48
|
},
|
49
|
-
"gitHead": "
|
49
|
+
"gitHead": "01735af77d98fa26fbcc312e9b982eee1638114d"
|
50
50
|
}
|
@@ -0,0 +1,33 @@
|
|
1
|
+
import { access } from '@things-factory/utils'
|
2
|
+
import { TaskRegistry } from '../task-registry'
|
3
|
+
|
4
|
+
async function DataAccessor(step, { logger, data }) {
|
5
|
+
var {
|
6
|
+
params: { target, accessor }
|
7
|
+
} = step
|
8
|
+
|
9
|
+
const input = access(target, data)
|
10
|
+
const output = access(accessor, input)
|
11
|
+
|
12
|
+
return {
|
13
|
+
data: output
|
14
|
+
}
|
15
|
+
}
|
16
|
+
|
17
|
+
DataAccessor.parameterSpec = [
|
18
|
+
{
|
19
|
+
type: 'scenario-step-input',
|
20
|
+
name: 'target',
|
21
|
+
label: 'target'
|
22
|
+
},
|
23
|
+
{
|
24
|
+
type: 'data-accessor',
|
25
|
+
name: 'accessor',
|
26
|
+
label: 'accessor'
|
27
|
+
}
|
28
|
+
]
|
29
|
+
|
30
|
+
DataAccessor.connectorFree = true
|
31
|
+
DataAccessor.help = 'integration/task/data-accessor'
|
32
|
+
|
33
|
+
TaskRegistry.registerTaskHandler('data-accessor', DataAccessor)
|
@@ -19,27 +19,33 @@ type ProcedureParameterType = {
|
|
19
19
|
maxSize?: number
|
20
20
|
}
|
21
21
|
|
22
|
+
type ValueType = {
|
23
|
+
code?: string
|
24
|
+
procedure?: string
|
25
|
+
parameters?: ProcedureParameterType[]
|
26
|
+
}
|
27
|
+
|
22
28
|
const TYPES = {
|
23
|
-
Number: oracledb
|
24
|
-
String: oracledb
|
25
|
-
Date: oracledb
|
26
|
-
Buffer: oracledb
|
27
|
-
Blob: oracledb
|
28
|
-
Clob: oracledb
|
29
|
-
Cursor: oracledb
|
29
|
+
Number: oracledb?.NUMBER,
|
30
|
+
String: oracledb?.STRING,
|
31
|
+
Date: oracledb?.DATE,
|
32
|
+
Buffer: oracledb?.BUFFER,
|
33
|
+
Blob: oracledb?.BLOB,
|
34
|
+
Clob: oracledb?.CLOB,
|
35
|
+
Cursor: oracledb?.CURSOR
|
30
36
|
}
|
31
37
|
|
32
38
|
const DIR = {
|
33
|
-
In: oracledb
|
34
|
-
Inout: oracledb
|
35
|
-
Out: oracledb
|
39
|
+
In: oracledb?.BIND_IN,
|
40
|
+
Inout: oracledb?.BIND_INOUT,
|
41
|
+
Out: oracledb?.BIND_OUT
|
36
42
|
}
|
37
43
|
|
38
44
|
async function OracleProcedure(step, context) {
|
39
45
|
var { domain, data, variables } = context
|
40
46
|
var { connection: connectionName, params } = step
|
41
47
|
|
42
|
-
var {
|
48
|
+
var { code = '', parameters = [] } = params.parameters as ValueType
|
43
49
|
|
44
50
|
var dbconnection = ConnectionManager.getConnectionInstanceByName(domain, connectionName)
|
45
51
|
|
@@ -51,7 +57,11 @@ async function OracleProcedure(step, context) {
|
|
51
57
|
}
|
52
58
|
})
|
53
59
|
|
54
|
-
|
60
|
+
if (!code) {
|
61
|
+
throw 'procedure code not defined'
|
62
|
+
}
|
63
|
+
|
64
|
+
code = vm.run('`' + code + '`')
|
55
65
|
|
56
66
|
const procedureParameters =
|
57
67
|
parameters &&
|
@@ -81,14 +91,14 @@ async function OracleProcedure(step, context) {
|
|
81
91
|
return sum
|
82
92
|
}, {})
|
83
93
|
|
84
|
-
const result = await dbconnection.execute(
|
94
|
+
const result = await dbconnection.execute(code, procedureParameters)
|
85
95
|
|
86
96
|
var taskResult = {}
|
87
97
|
let paramKeys = Object.keys(procedureParameters)
|
88
98
|
|
89
99
|
for (const paramKey of paramKeys) {
|
90
|
-
if (procedureParameters[paramKey].dir === oracledb
|
91
|
-
if (procedureParameters[paramKey].type === oracledb
|
100
|
+
if (procedureParameters[paramKey].dir === oracledb?.BIND_OUT) {
|
101
|
+
if (procedureParameters[paramKey].type === oracledb?.CURSOR) {
|
92
102
|
const resultSetTemp = result.outBinds[paramKey]
|
93
103
|
taskResult[paramKey] = await resultSetTemp.getRows()
|
94
104
|
await resultSetTemp.close()
|
@@ -106,15 +116,10 @@ async function OracleProcedure(step, context) {
|
|
106
116
|
}
|
107
117
|
|
108
118
|
OracleProcedure.parameterSpec = [
|
109
|
-
{
|
110
|
-
type: 'textarea',
|
111
|
-
name: 'procedure',
|
112
|
-
label: 'procedure'
|
113
|
-
},
|
114
119
|
{
|
115
120
|
type: 'procedure-parameters',
|
116
121
|
name: 'parameters',
|
117
|
-
label: '
|
122
|
+
label: ''
|
118
123
|
}
|
119
124
|
]
|
120
125
|
|