node-red-contrib-postgresql
Version:
Node-RED node for PostgreSQL, supporting parameters, split, back-pressure
292 lines (291 loc) • 5.43 kB
JSON
[
{
"id": "36d7a2e7.38e4de",
"type": "inject",
"z": "6bd3da1a.7e2b84",
"name": "Start",
"props": [
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"topic": "",
"payloadType": "date",
"x": 190,
"y": 1620,
"wires": [
[
"1b00f74dc3098005"
]
]
},
{
"id": "ee38d447.1c13a8",
"type": "debug",
"z": "6bd3da1a.7e2b84",
"name": "Done",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": true,
"complete": "true",
"targetType": "full",
"statusVal": "complete",
"statusType": "msg",
"x": 1210,
"y": 1620,
"wires": []
},
{
"id": "12f229bfef5ad2a5",
"type": "function",
"z": "6bd3da1a.7e2b84",
"name": "Ready for next lines",
"func": "return [\n msg.complete || msg.abort ? msg : null,\n { tick: true },\n];\n",
"outputs": 2,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 980,
"y": 1560,
"wires": [
[
"ee38d447.1c13a8"
],
[
"1b00f74dc3098005"
]
]
},
{
"id": "178252a8d3c54b16",
"type": "function",
"z": "6bd3da1a.7e2b84",
"name": "",
"func": "let payload = `(0, FALSE),`;\nif (msg.payload && msg.payload.length > 0) {\n for (const line of msg.payload) {\n const valid = 'TRUE'; // Call some kind of test\n payload += `(${line['id']}, ${valid}),`;\n }\n}\nmsg.payload = payload.slice(0, - 1);\nreturn msg;\n",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 560,
"y": 1620,
"wires": [
[
"6d2073ec4db26f2f"
]
]
},
{
"id": "4fd30ba36702842a",
"type": "debug",
"z": "6bd3da1a.7e2b84",
"name": "Progress",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": true,
"complete": "true",
"targetType": "full",
"statusVal": "parts.index",
"statusType": "msg",
"x": 940,
"y": 1620,
"wires": []
},
{
"id": "1b00f74dc3098005",
"type": "postgresql",
"z": "6bd3da1a.7e2b84",
"name": "SELECT many",
"query": "SELECT * FROM mytable\nORDER BY id ASC\nLIMIT 2000;\n",
"postgreSQLConfig": "20ae1e52d1eef983",
"split": true,
"rowsPerMsg": "100",
"outputs": 1,
"x": 380,
"y": 1620,
"wires": [
[
"178252a8d3c54b16"
]
]
},
{
"id": "6d2073ec4db26f2f",
"type": "postgresql",
"z": "6bd3da1a.7e2b84",
"name": "UPDATE many",
"query": "UPDATE mytable AS c\nSET validity = v.validity\nFROM (VALUES\n\t{{{ msg.payload }}}\n) AS v (id, validity)\nWHERE v.id = c.id;\n",
"postgreSQLConfig": "20ae1e52d1eef983",
"split": false,
"rowsPerMsg": "1",
"outputs": 1,
"x": 740,
"y": 1620,
"wires": [
[
"12f229bfef5ad2a5",
"4fd30ba36702842a"
]
]
},
{
"id": "64a657de3954a4b5",
"type": "debug",
"z": "6bd3da1a.7e2b84",
"name": "Results",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": true,
"complete": "true",
"targetType": "full",
"statusVal": "pgsql.rowCount",
"statusType": "msg",
"x": 560,
"y": 1700,
"wires": []
},
{
"id": "adf069475c5e0ba3",
"type": "postgresql",
"z": "6bd3da1a.7e2b84",
"name": "SELECT",
"query": "SELECT * FROM mytable\nWHERE id < 100;\n",
"postgreSQLConfig": "20ae1e52d1eef983",
"split": false,
"rowsPerMsg": "1",
"outputs": 1,
"x": 360,
"y": 1700,
"wires": [
[
"64a657de3954a4b5"
]
]
},
{
"id": "3134bfc0f12e13c3",
"type": "inject",
"z": "6bd3da1a.7e2b84",
"name": "Start",
"props": [
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"topic": "",
"payloadType": "date",
"x": 190,
"y": 1700,
"wires": [
[
"adf069475c5e0ba3"
]
]
},
{
"id": "d04c65ee97e3a273",
"type": "inject",
"z": "6bd3da1a.7e2b84",
"name": "Prepare",
"props": [
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"topic": "",
"payloadType": "date",
"x": 180,
"y": 1520,
"wires": [
[
"82b7c689d6682f72"
]
]
},
{
"id": "c5f0b4b2442e3137",
"type": "debug",
"z": "6bd3da1a.7e2b84",
"name": "Done",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": true,
"complete": "true",
"targetType": "full",
"statusVal": "pgsql",
"statusType": "msg",
"x": 550,
"y": 1520,
"wires": []
},
{
"id": "82b7c689d6682f72",
"type": "postgresql",
"z": "6bd3da1a.7e2b84",
"name": "ADD COLUMN",
"query": "ALTER TABLE mytable\n DROP COLUMN IF EXISTS validity;\n\nALTER TABLE mytable\n ADD COLUMN validity BOOLEAN;\n",
"postgreSQLConfig": "20ae1e52d1eef983",
"split": false,
"rowsPerMsg": "10",
"outputs": 1,
"x": 380,
"y": 1520,
"wires": [
[
"c5f0b4b2442e3137"
]
]
},
{
"id": "20ae1e52d1eef983",
"type": "postgreSQLConfig",
"name": "myuser@timescale:5432/iot",
"host": "timescale",
"hostFieldType": "str",
"port": "5432",
"portFieldType": "num",
"database": "iot",
"databaseFieldType": "str",
"ssl": "false",
"sslFieldType": "bool",
"max": "10",
"maxFieldType": "num",
"idle": "1000",
"idleFieldType": "num",
"connectionTimeout": "10000",
"connectionTimeoutFieldType": "num",
"user": "myuser",
"userFieldType": "str",
"password": "???",
"passwordFieldType": "str"
}
]