@golemio/energetics 1.3.7-dev.1317443483 → 1.3.7-dev.1317638454

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.
@@ -0,0 +1,27 @@
1
+ INSERT INTO consumption_energy_measurements ("timestamp", value, addr, var, "type", meter, "source", measurement_category, create_batch_id, created_at, created_by, update_batch_id, updated_at, updated_by) VALUES
2
+ ('2023-05-02 04:59:44.000+02', 551.800000000000000, '/10.22/VF1/core', 'core', 'provider_value', '300017125', NULL, NULL, NULL, '2023-05-03 00:30:37.779', NULL, NULL, '2023-05-03 00:30:37.779', NULL),
3
+ ('2023-05-02 04:59:11.000+02', 44592.000000000000000, '/10.12/EF1-VT/core', 'core', 'provider_value', '859182400303057720', NULL, NULL, NULL, '2023-05-03 00:30:37.779', NULL, NULL, '2023-05-03 00:30:37.779', NULL),
4
+ ('2023-05-02 04:59:11.000+02', 2.000000000000000, '/10.12/EF1-NT/core', 'core', 'provider_value', '859182400303057720', NULL, NULL, NULL, '2023-05-03 00:30:37.779', NULL, NULL, '2023-05-03 00:30:37.779', NULL),
5
+ ('2023-05-02 04:59:00.375+02', 11075.509765625000000, '/2.2/EP2/EFwActi', 'EFwActi', 'dotcontrols_value', '', NULL, NULL, NULL, '2023-05-03 00:30:44.752', NULL, NULL, '2023-05-03 00:30:44.752', NULL),
6
+ ('2023-05-02 04:59:00.115+02', 205.720001220703000, '/2.2/EP2/ERvReact', 'ERvReact', 'dotcontrols_value', '', NULL, NULL, NULL, '2023-05-03 00:30:44.752', NULL, NULL, '2023-05-03 00:30:44.752', NULL),
7
+ ('2023-05-02 04:58:59.862+02', 6666.450195312500000, '/2.2/EP2/EFwReact', 'EFwReact', 'dotcontrols_value', '', NULL, NULL, NULL, '2023-05-03 00:30:44.752', NULL, NULL, '2023-05-03 00:30:44.752', NULL),
8
+ ('2023-05-02 04:58:58.996+02', 898.159973144531000, '/2.2/EP1/EFwReact', 'EFwReact', 'dotcontrols_value', '', NULL, NULL, NULL, '2023-05-03 00:30:44.752', NULL, NULL, '2023-05-03 00:30:44.752', NULL),
9
+ ('2023-05-02 04:58:58.746+02', 8525.040039062500000, '/2.2/EP1/EFwActi', 'EFwActi', 'dotcontrols_value', '', NULL, NULL, NULL, '2023-05-03 00:30:44.752', NULL, NULL, '2023-05-03 00:30:44.752', NULL),
10
+ ('2023-05-02 04:58:57.871+02', 3481.060058593750000, '/2.2/EP1/ERvReact', 'ERvReact', 'dotcontrols_value', '', NULL, NULL, NULL, '2023-05-03 00:30:44.752', NULL, NULL, '2023-05-03 00:30:44.752', NULL),
11
+ ('2023-05-02 04:53:15.131+02', 17.700000762939500, '/2.5/Text/T', 'T', 'dotcontrols_value', '', NULL, NULL, NULL, '2023-05-03 00:30:44.752', NULL, NULL, '2023-05-03 00:30:44.752', NULL),
12
+ ('2023-05-02 04:53:15.131+02', -64.000000000000000, '/2.5/Text/RSSI', 'RSSI', 'dotcontrols_value', '', NULL, NULL, NULL, '2023-05-03 00:30:44.752', NULL, NULL, '2023-05-03 00:30:44.752', NULL),
13
+ ('2023-05-02 04:53:15.131+02', 1.000000000000000, '/2.5/Text/BAT', 'BAT', 'dotcontrols_value', '', NULL, NULL, NULL, '2023-05-03 00:30:44.752', NULL, NULL, '2023-05-03 00:30:44.752', NULL),
14
+ ('2023-05-02 04:51:33.697+02', 180790.000000000000000, '/2.2/TVP1/raw', 'raw', 'dotcontrols_value', '', NULL, NULL, NULL, '2023-05-03 00:30:44.752', NULL, NULL, '2023-05-03 00:30:44.752', NULL),
15
+ ('2023-05-02 04:00:00.000+02', 2709814.000000000000000, '/2.9/PF1/core', 'core', 'provider_value', '27ZG100Z0000521V', NULL, NULL, NULL, '2023-05-03 00:30:37.779', NULL, NULL, '2023-05-03 00:30:37.779', NULL),
16
+ ('2023-05-02 04:00:00.001+02', 19.000000000000000, '/2.9/PF1/core2', 'core2', 'provider_value', '27ZG100Z0000521V', NULL, NULL, NULL, '2023-05-03 00:30:37.779', NULL, NULL, '2023-05-03 00:30:37.779', NULL),
17
+ ('2023-05-02 03:00:00.000+02', 2709812.000000000000000, '/2.9/PF1/core', 'core', 'provider_value', '27ZG100Z0000521V', NULL, NULL, NULL, '2023-05-03 00:30:37.779', NULL, NULL, '2023-05-03 00:30:37.779', NULL),
18
+ ('2023-05-02 03:00:00.001+02', 3.000000000000000, '/2.9/PF1/core2', 'core2', 'provider_value', '27ZG100Z0000521V', NULL, NULL, NULL, '2023-05-03 00:30:37.779', NULL, NULL, '2023-05-03 00:30:37.779', NULL),
19
+ ('2023-05-02 00:00:00.000+02', 0.000000000000000, '/2.9/PF1/core', 'core', 'provider_value', '27ZG100Z0000521V', NULL, NULL, NULL, '2023-05-02 00:30:44.263', NULL, NULL, '2023-05-02 00:30:44.263', NULL),
20
+ ('2023-05-02 00:00:00.001+02', 0.000000000000000, '/2.9/PF1/core2', 'core2', 'provider_value', '27ZG100Z0000521V', NULL, NULL, NULL, '2023-05-02 00:30:44.263', NULL, NULL, '2023-05-02 00:30:44.263', NULL),
21
+ ('2023-05-01 06:00:00.000+02', 2709721.000000000000000, '/2.9/PF1/core', 'core', 'provider_value', '27ZG100Z0000521V', NULL, NULL, NULL, '2023-05-02 00:30:44.263', NULL, NULL, '2023-05-02 00:30:44.263', NULL),
22
+ ('2023-05-01 05:00:00.000+02', 2709705.000000000000000, '/2.9/PF1/core', 'core', 'provider_value', '27ZG100Z0000521V', NULL, NULL, NULL, '2023-05-02 00:30:44.263', NULL, NULL, '2023-05-02 00:30:44.263', NULL),
23
+ ('2023-05-01 05:00:00.001+02', 20.000000000000000, '/2.9/PF1/core2', 'core2', 'provider_value', '27ZG100Z0000521V', NULL, NULL, NULL, '2023-05-02 00:30:44.263', NULL, NULL, '2023-05-02 00:30:44.263', NULL),
24
+ ('2023-05-01 04:00:00.000+02', 2709691.000000000000000, '/2.9/PF1/core', 'core', 'provider_value', '27ZG100Z0000521V', NULL, NULL, NULL, '2023-05-02 00:30:44.263', NULL, NULL, '2023-05-02 00:30:44.263', NULL),
25
+ ('2023-05-01 04:00:00.001+02', 18.000000000000000, '/2.9/PF1/core2', 'core2', 'provider_value', '27ZG100Z0000521V', NULL, NULL, NULL, '2023-05-02 00:30:44.263', NULL, NULL, '2023-05-02 00:30:44.263', NULL),
26
+ ('2023-05-01 03:00:00.000+02', 2709680.000000000000000, '/2.9/PF1/core', 'core', 'provider_value', '27ZG100Z0000521V', NULL, NULL, NULL, '2023-05-02 00:30:44.263', NULL, NULL, '2023-05-02 00:30:44.263', NULL),
27
+ ('2023-05-01 03:00:00.001+02', 14.000000000000000, '/2.9/PF1/core2', 'core2', 'provider_value', '27ZG100Z0000521V', NULL, NULL, NULL, '2023-05-02 00:30:44.263', NULL, NULL, '2023-05-02 00:30:44.263', NULL);
@@ -0,0 +1,53 @@
1
+ 'use strict';
2
+
3
+ var dbm;
4
+ var type;
5
+ var seed;
6
+ var fs = require('fs');
7
+ var path = require('path');
8
+ var Promise;
9
+
10
+ /**
11
+ * We receive the dbmigrate dependency from dbmigrate initially.
12
+ * This enables us to not have to rely on NODE_PATH.
13
+ */
14
+ exports.setup = function(options, seedLink) {
15
+ dbm = options.dbmigrate;
16
+ type = dbm.dataType;
17
+ seed = seedLink;
18
+ Promise = options.Promise;
19
+ };
20
+
21
+ exports.up = function(db) {
22
+ var filePath = path.join(__dirname, 'sqls', '20240531150935-measurements-partitions-up.sql');
23
+ return new Promise( function( resolve, reject ) {
24
+ fs.readFile(filePath, {encoding: 'utf-8'}, function(err,data){
25
+ if (err) return reject(err);
26
+ console.log('received data: ' + data);
27
+
28
+ resolve(data);
29
+ });
30
+ })
31
+ .then(function(data) {
32
+ return db.runSql(data);
33
+ });
34
+ };
35
+
36
+ exports.down = function(db) {
37
+ var filePath = path.join(__dirname, 'sqls', '20240531150935-measurements-partitions-down.sql');
38
+ return new Promise( function( resolve, reject ) {
39
+ fs.readFile(filePath, {encoding: 'utf-8'}, function(err,data){
40
+ if (err) return reject(err);
41
+ console.log('received data: ' + data);
42
+
43
+ resolve(data);
44
+ });
45
+ })
46
+ .then(function(data) {
47
+ return db.runSql(data);
48
+ });
49
+ };
50
+
51
+ exports._meta = {
52
+ "version": 1
53
+ };
@@ -0,0 +1,9 @@
1
+ DROP TABLE IF EXISTS consumption_energy_measurements;
2
+ DROP INDEX IF EXISTS consumption_energy_measurements_pkey;
3
+ DROP INDEX IF EXISTS consumption_energy_measurements_measurement_category_idx;
4
+ DROP INDEX IF EXISTS consumption_energy_measurements_source_idx;
5
+
6
+ ALTER TABLE consumption_energy_measurements_old RENAME TO consumption_energy_measurements;
7
+ ALTER INDEX consumption_energy_measurements_pkey_old RENAME TO consumption_energy_measurements_pkey;
8
+ ALTER INDEX consumption_energy_measurements_measurement_category_idx_old RENAME TO consumption_energy_measurements_measurement_category_idx;
9
+ ALTER INDEX consumption_energy_measurements_source_idx_old RENAME TO consumption_energy_measurements_source_idx;
@@ -0,0 +1,47 @@
1
+ ALTER TABLE consumption_energy_measurements RENAME TO consumption_energy_measurements_old;
2
+ ALTER INDEX consumption_energy_measurements_pkey RENAME TO consumption_energy_measurements_pkey_old;
3
+ ALTER INDEX consumption_energy_measurements_measurement_category_idx RENAME TO consumption_energy_measurements_measurement_category_idx_old;
4
+ ALTER INDEX consumption_energy_measurements_source_idx RENAME TO consumption_energy_measurements_source_idx_old;
5
+
6
+ CREATE TABLE consumption_energy_measurements (
7
+ "timestamp" timestamptz NOT NULL,
8
+ value numeric(30, 15) NOT NULL,
9
+ addr varchar(255) NOT NULL,
10
+ var varchar(255) NOT NULL,
11
+ "type" varchar(255) NULL,
12
+ meter varchar(255) NOT NULL,
13
+ "source" varchar(20) NULL,
14
+ measurement_category varchar(50) NULL,
15
+ create_batch_id int8 NULL,
16
+ created_at timestamptz NULL,
17
+ created_by varchar(150) NULL,
18
+ update_batch_id int8 NULL,
19
+ updated_at timestamptz NULL,
20
+ updated_by varchar(150) NULL,
21
+
22
+ CONSTRAINT consumption_energy_measurements_pkey PRIMARY KEY ("timestamp", addr, var, meter)
23
+ ) PARTITION BY RANGE("timestamp");
24
+
25
+ CREATE INDEX consumption_energy_measurements_measurement_category_idx ON consumption_energy_measurements USING btree (measurement_category);
26
+ CREATE INDEX consumption_energy_measurements_source_idx ON consumption_energy_measurements USING btree (source);
27
+
28
+ CREATE TABLE IF NOT EXISTS consumption_energy_measurements_min PARTITION OF consumption_energy_measurements
29
+ FOR VALUES FROM (minvalue) TO ('2022-12-31T23:00:00.000Z');
30
+
31
+ CREATE TABLE IF NOT EXISTS consumption_energy_measurements_2023 PARTITION OF consumption_energy_measurements
32
+ FOR VALUES FROM ('2022-12-31T23:00:00.000Z') TO ('2023-12-31T23:00:00.000Z');
33
+
34
+ CREATE TABLE IF NOT EXISTS consumption_energy_measurements_2024 PARTITION OF consumption_energy_measurements
35
+ FOR VALUES FROM ('2023-12-31T23:00:00.000Z') TO ('2024-12-31T23:00:00.000Z');
36
+
37
+ CREATE TABLE IF NOT EXISTS consumption_energy_measurements_2025 PARTITION OF consumption_energy_measurements
38
+ FOR VALUES FROM ('2024-12-31T23:00:00.000Z') TO ('2025-12-31T23:00:00.000Z');
39
+
40
+ CREATE TABLE IF NOT EXISTS consumption_energy_measurements_2026 PARTITION OF consumption_energy_measurements
41
+ FOR VALUES FROM ('2025-12-31T23:00:00.000Z') TO ('2026-12-31T23:00:00.000Z');
42
+
43
+ CREATE TABLE IF NOT EXISTS consumption_energy_measurements_2027 PARTITION OF consumption_energy_measurements
44
+ FOR VALUES FROM ('2026-12-31T23:00:00.000Z') TO ('2027-12-31T23:00:00.000Z');
45
+
46
+ CREATE TABLE IF NOT EXISTS consumption_energy_measurements_max PARTITION OF consumption_energy_measurements
47
+ FOR VALUES FROM ('2027-12-31T23:00:00.000Z') TO (maxvalue);
@@ -404,10 +404,6 @@ Metoda sbírá historická data
404
404
 
405
405
  #### _/v2/energetics/measurements_
406
406
 
407
- #### _/v2/energetics/measurements/variables_
408
-
409
- #### _/v2/energetics/measurements/types_
410
-
411
407
  #### _/v2/energetics/measurements/monthly-reading_
412
408
 
413
409
  - zdrojové tabulky
@@ -201,9 +201,9 @@ paths:
201
201
  schema:
202
202
  $ref: '#/components/schemas/EnergeticsTypes'
203
203
  description: >-
204
- monthly_reading - hodnoty sčítané po měsících z 15 minutových spotřeb poskytovaných firmou PRE |<br />
205
- provider_value - data získaná od poskytovatelů energií |<br />
206
- dotcontrols_value - data získaná ze systémů VisApp firmy DotControls |<br />
204
+ monthly_reading - hodnoty sčítané po měsících z 15 minutových spotřeb poskytovaných firmou PRE<br />
205
+ provider_value - data získaná od poskytovatelů energií<br />
206
+ dotcontrols_value - data získaná ze systémů VisApp firmy DotControls<br />
207
207
  - name: addr1
208
208
  in: query
209
209
  required: false
@@ -1037,6 +1037,6 @@ components:
1037
1037
  - provider_value
1038
1038
  - dotcontrols_value
1039
1039
  description: >-
1040
- monthly_reading - hodnoty sčítané po měsících z 15 minutových spotřeb poskytovaných firmou PRE |<br />
1041
- provider_value - data získaná od poskytovatelů energií |<br />
1042
- dotcontrols_value - data získaná ze systémů VisApp firmy DotControls |<br />
1040
+ monthly_reading - hodnoty sčítané po měsících z 15 minutových spotřeb poskytovaných firmou PRE<br />
1041
+ provider_value - data získaná od poskytovatelů energií<br />
1042
+ dotcontrols_value - data získaná ze systémů VisApp firmy DotControls<br />
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@golemio/energetics",
3
- "version": "1.3.7-dev.1317443483",
3
+ "version": "1.3.7-dev.1317638454",
4
4
  "description": "Golemio Energetics Module",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -1,27 +0,0 @@
1
- INSERT INTO consumption_energy_measurements ("timestamp", value, addr, var, "type", meter, "source", measurement_category, create_batch_id, created_at, created_by, update_batch_id, updated_at, updated_by) VALUES
2
- ('2023-05-02 04:59:44.000', 551.800000000000000, '/10.22/VF1/core', 'core', 'provider_value', '300017125', NULL, NULL, NULL, '2023-05-03 00:30:37.779', NULL, NULL, '2023-05-03 00:30:37.779', NULL),
3
- ('2023-05-02 04:59:11.000', 44592.000000000000000, '/10.12/EF1-VT/core', 'core', 'provider_value', '859182400303057720', NULL, NULL, NULL, '2023-05-03 00:30:37.779', NULL, NULL, '2023-05-03 00:30:37.779', NULL),
4
- ('2023-05-02 04:59:11.000', 2.000000000000000, '/10.12/EF1-NT/core', 'core', 'provider_value', '859182400303057720', NULL, NULL, NULL, '2023-05-03 00:30:37.779', NULL, NULL, '2023-05-03 00:30:37.779', NULL),
5
- ('2023-05-02 04:59:00.375', 11075.509765625000000, '/2.2/EP2/EFwActi', 'EFwActi', 'dotcontrols_value', '', NULL, NULL, NULL, '2023-05-03 00:30:44.752', NULL, NULL, '2023-05-03 00:30:44.752', NULL),
6
- ('2023-05-02 04:59:00.115', 205.720001220703000, '/2.2/EP2/ERvReact', 'ERvReact', 'dotcontrols_value', '', NULL, NULL, NULL, '2023-05-03 00:30:44.752', NULL, NULL, '2023-05-03 00:30:44.752', NULL),
7
- ('2023-05-02 04:58:59.862', 6666.450195312500000, '/2.2/EP2/EFwReact', 'EFwReact', 'dotcontrols_value', '', NULL, NULL, NULL, '2023-05-03 00:30:44.752', NULL, NULL, '2023-05-03 00:30:44.752', NULL),
8
- ('2023-05-02 04:58:58.996', 898.159973144531000, '/2.2/EP1/EFwReact', 'EFwReact', 'dotcontrols_value', '', NULL, NULL, NULL, '2023-05-03 00:30:44.752', NULL, NULL, '2023-05-03 00:30:44.752', NULL),
9
- ('2023-05-02 04:58:58.746', 8525.040039062500000, '/2.2/EP1/EFwActi', 'EFwActi', 'dotcontrols_value', '', NULL, NULL, NULL, '2023-05-03 00:30:44.752', NULL, NULL, '2023-05-03 00:30:44.752', NULL),
10
- ('2023-05-02 04:58:57.871', 3481.060058593750000, '/2.2/EP1/ERvReact', 'ERvReact', 'dotcontrols_value', '', NULL, NULL, NULL, '2023-05-03 00:30:44.752', NULL, NULL, '2023-05-03 00:30:44.752', NULL),
11
- ('2023-05-02 04:53:15.131', 17.700000762939500, '/2.5/Text/T', 'T', 'dotcontrols_value', '', NULL, NULL, NULL, '2023-05-03 00:30:44.752', NULL, NULL, '2023-05-03 00:30:44.752', NULL),
12
- ('2023-05-02 04:53:15.131', -64.000000000000000, '/2.5/Text/RSSI', 'RSSI', 'dotcontrols_value', '', NULL, NULL, NULL, '2023-05-03 00:30:44.752', NULL, NULL, '2023-05-03 00:30:44.752', NULL),
13
- ('2023-05-02 04:53:15.131', 1.000000000000000, '/2.5/Text/BAT', 'BAT', 'dotcontrols_value', '', NULL, NULL, NULL, '2023-05-03 00:30:44.752', NULL, NULL, '2023-05-03 00:30:44.752', NULL),
14
- ('2023-05-02 04:51:33.697', 180790.000000000000000, '/2.2/TVP1/raw', 'raw', 'dotcontrols_value', '', NULL, NULL, NULL, '2023-05-03 00:30:44.752', NULL, NULL, '2023-05-03 00:30:44.752', NULL),
15
- ('2023-05-02 04:00:00.000', 19.000000000000000, '/2.9/PF1/core2', 'core2', 'provider_value', '27ZG100Z0000521V', NULL, NULL, NULL, '2023-05-03 00:30:37.779', NULL, NULL, '2023-05-03 00:30:37.779', NULL),
16
- ('2023-05-02 04:00:00.000', 2709814.000000000000000, '/2.9/PF1/core', 'core', 'provider_value', '27ZG100Z0000521V', NULL, NULL, NULL, '2023-05-03 00:30:37.779', NULL, NULL, '2023-05-03 00:30:37.779', NULL),
17
- ('2023-05-02 03:00:00.000', 3.000000000000000, '/2.9/PF1/core2', 'core2', 'provider_value', '27ZG100Z0000521V', NULL, NULL, NULL, '2023-05-03 00:30:37.779', NULL, NULL, '2023-05-03 00:30:37.779', NULL),
18
- ('2023-05-02 03:00:00.000', 2709812.000000000000000, '/2.9/PF1/core', 'core', 'provider_value', '27ZG100Z0000521V', NULL, NULL, NULL, '2023-05-03 00:30:37.779', NULL, NULL, '2023-05-03 00:30:37.779', NULL),
19
- ('2023-05-02 00:00:00.000', 0.000000000000000, '/2.9/PF1/core2', 'core2', 'provider_value', '27ZG100Z0000521V', NULL, NULL, NULL, '2023-05-02 00:30:44.263', NULL, NULL, '2023-05-02 00:30:44.263', NULL),
20
- ('2023-05-02 00:00:00.000', 0.000000000000000, '/2.9/PF1/core', 'core', 'provider_value', '27ZG100Z0000521V', NULL, NULL, NULL, '2023-05-02 00:30:44.263', NULL, NULL, '2023-05-02 00:30:44.263', NULL),
21
- ('2023-05-01 06:00:00.000', 2709721.000000000000000, '/2.9/PF1/core', 'core', 'provider_value', '27ZG100Z0000521V', NULL, NULL, NULL, '2023-05-02 00:30:44.263', NULL, NULL, '2023-05-02 00:30:44.263', NULL),
22
- ('2023-05-01 05:00:00.000', 20.000000000000000, '/2.9/PF1/core2', 'core2', 'provider_value', '27ZG100Z0000521V', NULL, NULL, NULL, '2023-05-02 00:30:44.263', NULL, NULL, '2023-05-02 00:30:44.263', NULL),
23
- ('2023-05-01 05:00:00.000', 2709705.000000000000000, '/2.9/PF1/core', 'core', 'provider_value', '27ZG100Z0000521V', NULL, NULL, NULL, '2023-05-02 00:30:44.263', NULL, NULL, '2023-05-02 00:30:44.263', NULL),
24
- ('2023-05-01 04:00:00.000', 18.000000000000000, '/2.9/PF1/core2', 'core2', 'provider_value', '27ZG100Z0000521V', NULL, NULL, NULL, '2023-05-02 00:30:44.263', NULL, NULL, '2023-05-02 00:30:44.263', NULL),
25
- ('2023-05-01 04:00:00.000', 2709691.000000000000000, '/2.9/PF1/core', 'core', 'provider_value', '27ZG100Z0000521V', NULL, NULL, NULL, '2023-05-02 00:30:44.263', NULL, NULL, '2023-05-02 00:30:44.263', NULL),
26
- ('2023-05-01 03:00:00.000', 14.000000000000000, '/2.9/PF1/core2', 'core2', 'provider_value', '27ZG100Z0000521V', NULL, NULL, NULL, '2023-05-02 00:30:44.263', NULL, NULL, '2023-05-02 00:30:44.263', NULL),
27
- ('2023-05-01 03:00:00.000', 2709680.000000000000000, '/2.9/PF1/core', 'core', 'provider_value', '27ZG100Z0000521V', NULL, NULL, NULL, '2023-05-02 00:30:44.263', NULL, NULL, '2023-05-02 00:30:44.263', NULL);