@things-factory/integration-influxdb 7.0.0-alpha.25 → 7.0.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.
- package/client/editors/things-editor-influxdb-point-scheme.ts +21 -17
- package/dist-client/editors/things-editor-influxdb-point-scheme.d.ts +1 -1
- package/dist-client/editors/things-editor-influxdb-point-scheme.js +14 -14
- package/dist-client/editors/things-editor-influxdb-point-scheme.js.map +1 -1
- package/dist-client/tsconfig.tsbuildinfo +1 -1
- package/dist-server/engine/connector/index.d.ts +1 -0
- package/dist-server/engine/connector/influxdb.d.ts +14 -0
- package/dist-server/engine/connector/influxdb.js +2 -2
- package/dist-server/engine/connector/influxdb.js.map +1 -1
- package/dist-server/engine/index.d.ts +2 -0
- package/dist-server/engine/task/index.d.ts +2 -0
- package/dist-server/engine/task/influxdb-query.d.ts +1 -0
- package/dist-server/engine/task/influxdb-query.js +24 -13
- package/dist-server/engine/task/influxdb-query.js.map +1 -1
- package/dist-server/engine/task/influxdb-write-point.d.ts +1 -0
- package/dist-server/engine/task/influxdb-write-point.js.map +1 -1
- package/dist-server/index.d.ts +1 -0
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -3
- package/server/engine/connector/influxdb.ts +5 -2
- package/server/engine/task/influxdb-query.ts +23 -14
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"influxdb.js","sourceRoot":"","sources":["../../../server/engine/connector/influxdb.ts"],"names":[],"mappings":";;;AAAA,iEAAsD;AAEtD,uEAA2F;AAE3F,MAAa,iBAAiB;IAC5B,KAAK,CAAC,KAAK,CAAC,iBAAiB;QAC3B,MAAM,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAEjE,oCAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAA;IACjE,CAAC;IAED,uBAAuB,CAAC,MAAM,EAAE,cAAc;;QAC5C,IAAI;
|
|
1
|
+
{"version":3,"file":"influxdb.js","sourceRoot":"","sources":["../../../server/engine/connector/influxdb.ts"],"names":[],"mappings":";;;AAAA,iEAAsD;AAEtD,uEAA2F;AAE3F,MAAa,iBAAiB;IAC5B,KAAK,CAAC,KAAK,CAAC,iBAAiB;QAC3B,MAAM,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAEjE,oCAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAA;IACjE,CAAC;IAED,uBAAuB,CAAC,MAAM,EAAE,cAAc;;QAC5C,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,oCAAiB,CAAC,2BAA2B,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;YAExF,OAAO,CAAC,CAAC,CAAC,CAAA,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,MAAM,0CAAE,eAAe,MAAK,QAAQ,CAAC,CAAA;QAC7D,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,KAAK,CAAA;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,UAAU;QACtB,IAAI,EACF,QAAQ,EACR,MAAM,EAAE,EAAE,KAAK,EAAE,EAClB,GAAG,UAAU,CAAA;QAEd,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,0BAAQ,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAA;YAErD,oCAAiB,CAAC,qBAAqB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;YAE3D,oCAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,UAAU,CAAC,IAAI,IAAI,UAAU,CAAC,QAAQ,gBAAgB,CAAC,CAAA;QAC9G,CAAC;QAAC,OAAO,EAAE,EAAE,CAAC;YACZ,oCAAiB,CAAC,MAAM,CAAC,IAAI,CAC3B,uBAAuB,UAAU,CAAC,IAAI,IAAI,UAAU,CAAC,QAAQ,qBAAqB,EAClF,EAAE,CACH,CAAA;YACD,MAAM,EAAE,CAAA;QACV,CAAC;IACH,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,UAAsB;QACrC,IAAI,MAAM,GAAG,oCAAiB,CAAC,wBAAwB,CAAC,UAAU,CAAC,CAAA;QACnE,MAAM,CAAC,KAAK,EAAE,CAAA;QAEd,oCAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,UAAU,CAAC,IAAI,mBAAmB,CAAC,CAAA;IAC1F,CAAC;IAED,IAAI,aAAa;QACf,OAAO;YACL;gBACE,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,gBAAgB;aACxB;SACF,CAAA;IACH,CAAC;IAED,IAAI,YAAY;QACd,OAAO,CAAC,UAAU,CAAC,CAAA;IACrB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,0CAA0C,CAAA;IACnD,CAAC;CACF;AA9DD,8CA8DC;AAED,oCAAiB,CAAC,iBAAiB,CAAC,oBAAoB,EAAE,IAAI,iBAAiB,EAAE,CAAC,CAAA","sourcesContent":["import { InfluxDB } from '@influxdata/influxdb-client'\n\nimport { Connection, ConnectionManager, Connector } from '@things-factory/integration-base'\n\nexport class InfluxDBConnector implements Connector {\n async ready(connectionConfigs) {\n await Promise.all(connectionConfigs.map(this.connect.bind(this)))\n\n ConnectionManager.logger.info('influxdb connections are ready')\n }\n\n checkConnectionInstance(domain, connectionName): boolean {\n try {\n const connection = ConnectionManager.getConnectionInstanceByName(domain, connectionName)\n\n return !!(connection?.client?.connectionState !== 'online')\n } catch (e) {\n return false\n }\n }\n\n async connect(connection) {\n var {\n endpoint,\n params: { token }\n } = connection\n\n try {\n const client = new InfluxDB({ url: endpoint, token })\n\n ConnectionManager.addConnectionInstance(connection, client)\n\n ConnectionManager.logger.info(`influxdb connection(${connection.name}:${connection.endpoint}) is connected`)\n } catch (ex) {\n ConnectionManager.logger.info(\n `influxdb connection(${connection.name}:${connection.endpoint}) failed to connect`,\n ex\n )\n throw ex\n }\n }\n\n async disconnect(connection: Connection) {\n var client = ConnectionManager.removeConnectionInstance(connection)\n client.close()\n\n ConnectionManager.logger.info(`influxdb connection(${connection.name}) is disconnected`)\n }\n\n get parameterSpec() {\n return [\n {\n type: 'string',\n name: 'token',\n label: 'influxdb.token'\n }\n ]\n }\n\n get taskPrefixes() {\n return ['influxdb']\n }\n\n get help() {\n return 'integration/connector/influxdb-connector'\n }\n}\n\nConnectionManager.registerConnector('influxdb-connector', new InfluxDBConnector())\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import 'ses';
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const tslib_1 = require("tslib");
|
|
4
|
-
|
|
4
|
+
require("ses");
|
|
5
5
|
const integration_base_1 = require("@things-factory/integration-base");
|
|
6
6
|
const debug = require('debug')('things-factory:influxdb-query');
|
|
7
7
|
function processInfluxData(raws) {
|
|
8
|
-
|
|
9
|
-
var result = {};
|
|
8
|
+
const result = {};
|
|
10
9
|
raws.forEach(raw => {
|
|
11
10
|
const { _time, _field, _value, _measurement, _start, _stop, result: _result, table } = raw, tags = tslib_1.__rest(raw, ["_time", "_field", "_value", "_measurement", "_start", "_stop", "result", "table"]);
|
|
12
11
|
result[_time] || (result[_time] = {
|
|
@@ -26,16 +25,21 @@ async function influxdbQuery(step, { domain, user, data, variables, lng }) {
|
|
|
26
25
|
debug(`no connection : ${connection}`);
|
|
27
26
|
throw new Error(`no connection : ${connection}`);
|
|
28
27
|
}
|
|
29
|
-
const
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
}
|
|
28
|
+
const compartment = new Compartment({
|
|
29
|
+
domain,
|
|
30
|
+
user,
|
|
31
|
+
lng,
|
|
32
|
+
data,
|
|
33
|
+
variables,
|
|
34
|
+
console
|
|
37
35
|
});
|
|
38
|
-
|
|
36
|
+
let fluxQuery;
|
|
37
|
+
try {
|
|
38
|
+
fluxQuery = compartment.evaluate('`' + query + '`');
|
|
39
|
+
}
|
|
40
|
+
catch (err) {
|
|
41
|
+
throw new Error(`Failed to evaluate query: ${err.message}`);
|
|
42
|
+
}
|
|
39
43
|
const queryApi = client.getQueryApi(organization);
|
|
40
44
|
const result = await queryApi.collectRows(fluxQuery);
|
|
41
45
|
return {
|
|
@@ -51,7 +55,14 @@ influxdbQuery.parameterSpec = [
|
|
|
51
55
|
{
|
|
52
56
|
type: 'textarea',
|
|
53
57
|
name: 'query',
|
|
54
|
-
label: 'influxdb.query'
|
|
58
|
+
label: 'influxdb.query',
|
|
59
|
+
property: {
|
|
60
|
+
language: 'text',
|
|
61
|
+
showLineNumbers: true
|
|
62
|
+
},
|
|
63
|
+
styles: {
|
|
64
|
+
flex: '1'
|
|
65
|
+
}
|
|
55
66
|
}
|
|
56
67
|
];
|
|
57
68
|
influxdbQuery.help = 'integration/task/influxdb-query';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"influxdb-query.js","sourceRoot":"","sources":["../../../server/engine/task/influxdb-query.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"influxdb-query.js","sourceRoot":"","sources":["../../../server/engine/task/influxdb-query.ts"],"names":[],"mappings":";;;AAAA,eAAY;AAEZ,uEAA2F;AAE3F,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,+BAA+B,CAAC,CAAA;AAqB/D,SAAS,iBAAiB,CAAC,IAAiB;IAC1C,MAAM,MAAM,GAAmC,EAAE,CAAA;IAEjD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QACjB,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,KAAc,GAAG,EAAZ,IAAI,kBAAK,GAAG,EAA7F,mFAAuF,CAAM,CAAA;QAEnG,MAAM,CAAC,KAAK,MAAZ,MAAM,CAAC,KAAK,IAAM;YAChB,SAAS,EAAE,KAAK;YAChB,WAAW,EAAE,YAAY;YACzB,IAAI;YACJ,MAAM,EAAE,EAAE;SACX,EAAA;QAED,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,CAAA;IACvC,CAAC,CAAC,CAAA;IAEF,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;AAC9B,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAW;IAChF,MAAM,EACJ,UAAU,EACV,MAAM,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,EAChC,GAAG,IAAI,CAAA;IAER,MAAM,MAAM,GAAG,oCAAiB,CAAC,2BAA2B,CAAC,MAAM,EAAE,UAAU,CAAa,CAAA;IAC5F,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,KAAK,CAAC,mBAAmB,UAAU,EAAE,CAAC,CAAA;QACtC,MAAM,IAAI,KAAK,CAAC,mBAAmB,UAAU,EAAE,CAAC,CAAA;IAClD,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC;QAClC,MAAM;QACN,IAAI;QACJ,GAAG;QACH,IAAI;QACJ,SAAS;QACT,OAAO;KACR,CAAC,CAAA;IAEF,IAAI,SAAS,CAAA;IACb,IAAI,CAAC;QACH,SAAS,GAAG,WAAW,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK,GAAG,GAAG,CAAC,CAAA;IACrD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,6BAA6B,GAAG,CAAC,OAAO,EAAE,CAAC,CAAA;IAC7D,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,CAAA;IAEjD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,CAAA;IAEpD,OAAO;QACL,IAAI,EAAE,iBAAiB,CAAC,MAAqB,CAAC;KAC/C,CAAA;AACH,CAAC;AAED,aAAa,CAAC,aAAa,GAAG;IAC5B;QACE,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,cAAc;QACpB,KAAK,EAAE,uBAAuB;KAC/B;IACD;QACE,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,gBAAgB;QACvB,QAAQ,EAAE;YACR,QAAQ,EAAE,MAAM;YAChB,eAAe,EAAE,IAAI;SACtB;QACD,MAAM,EAAE;YACN,IAAI,EAAE,GAAG;SACV;KACF;CACF,CAAA;AAED,aAAa,CAAC,IAAI,GAAG,iCAAiC,CAAA;AAEtD,+BAAY,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,aAAa,CAAC,CAAA","sourcesContent":["import 'ses'\nimport { InfluxDB, FluxTableMetaData } from '@influxdata/influxdb-client'\nimport { ConnectionManager, Context, TaskRegistry } from '@things-factory/integration-base'\n\nconst debug = require('debug')('things-factory:influxdb-query')\n\ninterface InfluxData {\n measurement: string\n tags: { [key: string]: string }\n fields: { [key: string]: number | string | boolean }\n timestamp: string\n}\n\ninterface InfluxRaw {\n _time: string\n _start: string\n _stop: string\n _measurement: string\n _field: string\n _value: any\n table: any\n result: any\n [tag: string]: string\n}\n\nfunction processInfluxData(raws: InfluxRaw[]): InfluxData[] {\n const result: { [time: string]: InfluxData } = {}\n\n raws.forEach(raw => {\n const { _time, _field, _value, _measurement, _start, _stop, result: _result, table, ...tags } = raw\n\n result[_time] ||= {\n timestamp: _time,\n measurement: _measurement,\n tags,\n fields: {}\n }\n\n result[_time].fields[_field] = _value\n })\n\n return Object.values(result)\n}\n\nasync function influxdbQuery(step, { domain, user, data, variables, lng }: Context) {\n const {\n connection,\n params: { organization, query }\n } = step\n\n const client = ConnectionManager.getConnectionInstanceByName(domain, connection) as InfluxDB\n if (!client) {\n debug(`no connection : ${connection}`)\n throw new Error(`no connection : ${connection}`)\n }\n\n const compartment = new Compartment({\n domain,\n user,\n lng,\n data,\n variables,\n console\n })\n\n let fluxQuery\n try {\n fluxQuery = compartment.evaluate('`' + query + '`')\n } catch (err) {\n throw new Error(`Failed to evaluate query: ${err.message}`)\n }\n\n const queryApi = client.getQueryApi(organization)\n\n const result = await queryApi.collectRows(fluxQuery)\n\n return {\n data: processInfluxData(result as InfluxRaw[])\n }\n}\n\ninfluxdbQuery.parameterSpec = [\n {\n type: 'string',\n name: 'organization',\n label: 'influxdb.organization'\n },\n {\n type: 'textarea',\n name: 'query',\n label: 'influxdb.query',\n property: {\n language: 'text',\n showLineNumbers: true\n },\n styles: {\n flex: '1'\n }\n }\n]\n\ninfluxdbQuery.help = 'integration/task/influxdb-query'\n\nTaskRegistry.registerTaskHandler('influxdb-query', influxdbQuery)\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"influxdb-write-point.js","sourceRoot":"","sources":["../../../server/engine/task/influxdb-write-point.ts"],"names":[],"mappings":";;AAAA,iEAAmD;AAEnD,iDAA8C;AAC9C,uEAAkF;AAElF,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,qCAAqC,CAAC,CAAA;AASrE,KAAK,UAAU,kBAAkB,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE;IAC9D,MAAM,EACJ,UAAU,EACV,MAAM,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,EACtD,GAAG,IAAI,CAAA;IAER,MAAM,MAAM,GAAG,oCAAiB,CAAC,2BAA2B,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;IAChF,IAAI,CAAC,MAAM,EAAE;
|
|
1
|
+
{"version":3,"file":"influxdb-write-point.js","sourceRoot":"","sources":["../../../server/engine/task/influxdb-write-point.ts"],"names":[],"mappings":";;AAAA,iEAAmD;AAEnD,iDAA8C;AAC9C,uEAAkF;AAElF,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,qCAAqC,CAAC,CAAA;AASrE,KAAK,UAAU,kBAAkB,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE;IAC9D,MAAM,EACJ,UAAU,EACV,MAAM,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,EACtD,GAAG,IAAI,CAAA;IAER,MAAM,MAAM,GAAG,oCAAiB,CAAC,2BAA2B,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;IAChF,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,KAAK,CAAC,mBAAmB,UAAU,EAAE,CAAC,CAAA;QACtC,MAAM,IAAI,KAAK,CAAC,mBAAmB,UAAU,EAAE,CAAC,CAAA;IAClD,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;IAClE,MAAM,KAAK,GAAG,IAAI,uBAAK,CAAC,WAAW,CAAC,CAAA;IAEpC,MAAM,CAAC,OAAO,CAAC,CAAC,KAA0B,EAAE,EAAE;QAC5C,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAA;QAC3C,MAAM,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAA,cAAM,EAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAA;QAEjE,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,KAAK;gBACR,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;gBAC3B,MAAK;YACP,KAAK,QAAQ;gBACX,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;gBACnC,MAAK;YACP,KAAK,SAAS;gBACZ,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;gBAChC,MAAK;YACP,KAAK,UAAU;gBACb,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;gBACjC,MAAK;YACP,KAAK,OAAO;gBACV,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;gBAClC,MAAK;YACP,KAAK,SAAS;gBACZ,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;gBACpC,MAAK;QACT,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,MAAM,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;IACnC,MAAM,WAAW,CAAC,KAAK,EAAE,CAAA;IAEzB,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,MAAM;KACnB,CAAA;AACH,CAAC;AAED,kBAAkB,CAAC,aAAa,GAAG;IACjC;QACE,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,cAAc;QACpB,KAAK,EAAE,uBAAuB;KAC/B;IACD;QACE,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,iBAAiB;KACzB;IACD;QACE,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,aAAa;QACnB,KAAK,EAAE,sBAAsB;KAC9B;IACD;QACE,IAAI,EAAE,uBAAuB;QAC7B,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,uBAAuB;KAC/B;CACF,CAAA;AAED,kBAAkB,CAAC,IAAI,GAAG,uCAAuC,CAAA;AAEjE,+BAAY,CAAC,mBAAmB,CAAC,sBAAsB,EAAE,kBAAkB,CAAC,CAAA","sourcesContent":["import { Point } from '@influxdata/influxdb-client'\n\nimport { access } from '@things-factory/utils'\nimport { ConnectionManager, TaskRegistry } from '@things-factory/integration-base'\n\nconst debug = require('debug')('things-factory:influxdb-write-point')\n\ntype InfluxDBPointScheme = {\n name: string\n type: string\n val?: any\n accessor?: string\n}\n\nasync function influxdbWritePoint(step, { logger, domain, data }) {\n const {\n connection,\n params: { organization, bucket, measurement, scheme }\n } = step\n\n const client = ConnectionManager.getConnectionInstanceByName(domain, connection)\n if (!client) {\n debug(`no connection : ${connection}`)\n throw new Error(`no connection : ${connection}`)\n }\n\n const writeClient = client.getWriteApi(organization, bucket, 'ns')\n const point = new Point(measurement)\n\n scheme.forEach((field: InfluxDBPointScheme) => {\n const { name, val, type, accessor } = field\n const calculated = accessor ? access(accessor, data) || val : val\n\n switch (type) {\n case 'Tag':\n point.tag(name, calculated)\n break\n case 'String':\n point.stringField(name, calculated)\n break\n case 'Integer':\n point.intField(name, calculated)\n break\n case 'Unsigned':\n point.uintField(name, calculated)\n break\n case 'Float':\n point.floatField(name, calculated)\n break\n case 'Boolean':\n point.booleanField(name, calculated)\n break\n }\n })\n\n await writeClient.writePoint(point)\n await writeClient.close()\n\n return {\n data: point.fields\n }\n}\n\ninfluxdbWritePoint.parameterSpec = [\n {\n type: 'string',\n name: 'organization',\n label: 'influxdb.organization'\n },\n {\n type: 'string',\n name: 'bucket',\n label: 'influxdb.bucket'\n },\n {\n type: 'string',\n name: 'measurement',\n label: 'influxdb.measurement'\n },\n {\n type: 'influxdb-point-scheme',\n name: 'scheme',\n label: 'influxdb.point-scheme'\n }\n]\n\ninfluxdbWritePoint.help = 'integration/task/influxdb-write-point'\n\nTaskRegistry.registerTaskHandler('influxdb-write-point', influxdbWritePoint)\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import './engine';
|