@socialgouv/matomo-postgres 2.3.0 → 2.3.1
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/__tests__/run.test.js +3 -2
- package/dist/db.js +17 -8
- package/dist/importDate.js +4 -1
- package/dist/importEvent.js +4 -1
- package/package.json +3 -5
|
@@ -85,6 +85,7 @@ test('run: should run SQL queries', () => __awaiter(void 0, void 0, void 0, func
|
|
|
85
85
|
yield run();
|
|
86
86
|
expect(queries).toMatchSnapshot();
|
|
87
87
|
// Updated expectation based on actual behavior with INITIAL_OFFSET=3 (5 days total: 3 days before + today + 1 day after)
|
|
88
|
-
// 5 days * (6 events per day + 1 count query per day)
|
|
89
|
-
|
|
88
|
+
// 5 days * (6 events per day + 1 count query per day)
|
|
89
|
+
// Note: The initial findLastEventInMatomo query is not captured in the test mock environment
|
|
90
|
+
expect(queries.length).toEqual(5 * (6 + 1));
|
|
90
91
|
}));
|
package/dist/db.js
CHANGED
|
@@ -4,19 +4,28 @@ import pkg from 'pg';
|
|
|
4
4
|
const { Pool } = pkg;
|
|
5
5
|
import { PGDATABASE } from './config.js';
|
|
6
6
|
startDebug('db');
|
|
7
|
+
export const pool = new Pool({
|
|
8
|
+
connectionString: PGDATABASE,
|
|
9
|
+
ssl: {
|
|
10
|
+
rejectUnauthorized: false
|
|
11
|
+
}
|
|
12
|
+
});
|
|
13
|
+
// Validate pool is properly initialized
|
|
14
|
+
if (!pool || typeof pool.connect !== 'function') {
|
|
15
|
+
throw new Error('Failed to initialize PostgreSQL connection pool');
|
|
16
|
+
}
|
|
7
17
|
export const db = new Kysely({
|
|
8
18
|
dialect: new PostgresDialect({
|
|
9
|
-
pool:
|
|
10
|
-
connectionString: PGDATABASE,
|
|
11
|
-
ssl: {
|
|
12
|
-
rejectUnauthorized: false
|
|
13
|
-
}
|
|
14
|
-
})
|
|
19
|
+
pool: pool
|
|
15
20
|
}),
|
|
16
21
|
log(event) {
|
|
17
22
|
if (event.level === 'query') {
|
|
18
|
-
// debug(event.query.sql)
|
|
19
|
-
// debug(event.query.parameters)
|
|
23
|
+
// debug(event.query.sql)
|
|
24
|
+
// debug(event.query.parameters)
|
|
20
25
|
}
|
|
21
26
|
}
|
|
22
27
|
});
|
|
28
|
+
// Validate the Kysely instance
|
|
29
|
+
if (!db) {
|
|
30
|
+
throw new Error('Failed to initialize Kysely database instance');
|
|
31
|
+
}
|
package/dist/importDate.js
CHANGED
|
@@ -12,13 +12,16 @@ import startDebug from 'debug';
|
|
|
12
12
|
import { sql } from 'kysely';
|
|
13
13
|
import pAll from 'p-all';
|
|
14
14
|
import { DESTINATION_TABLE, MATOMO_SITE, RESULTPERPAGE } from './config.js';
|
|
15
|
-
import { db } from './db.js';
|
|
15
|
+
import { db, pool } from './db.js';
|
|
16
16
|
import { getEventsFromMatomoVisit, importEvent } from './importEvent.js';
|
|
17
17
|
const debug = startDebug('importDate');
|
|
18
18
|
/** return date as ISO yyyy-mm-dd */
|
|
19
19
|
const isoDate = (date) => formatISO(date, { representation: 'date' });
|
|
20
20
|
/** check how many visits complete for a given date */
|
|
21
21
|
const getRecordsCount = (date) => __awaiter(void 0, void 0, void 0, function* () {
|
|
22
|
+
if (!pool || typeof pool.connect !== 'function') {
|
|
23
|
+
throw new Error('Database connection pool is invalid or undefined in getRecordsCount');
|
|
24
|
+
}
|
|
22
25
|
const result = yield db
|
|
23
26
|
.selectFrom(DESTINATION_TABLE)
|
|
24
27
|
.select(db.fn.count('idvisit').distinct().as('count'))
|
package/dist/importEvent.js
CHANGED
|
@@ -8,7 +8,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
10
|
import { sql } from 'kysely';
|
|
11
|
-
import { db } from './db.js';
|
|
11
|
+
import { db, pool } from './db.js';
|
|
12
12
|
/**
|
|
13
13
|
*
|
|
14
14
|
* @param {Client} client
|
|
@@ -78,6 +78,9 @@ export const importEvent = (event) => __awaiter(void 0, void 0, void 0, function
|
|
|
78
78
|
throw new Error('importEvent(): action_timestamp is invalid');
|
|
79
79
|
}
|
|
80
80
|
try {
|
|
81
|
+
if (!pool || typeof pool.connect !== 'function') {
|
|
82
|
+
throw new Error('Database connection pool is invalid or undefined');
|
|
83
|
+
}
|
|
81
84
|
// Keep the stored procedure but centralize mapping to avoid parameter mis-ordering
|
|
82
85
|
yield sql `
|
|
83
86
|
SELECT insert_into_matomo_partitioned(
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@socialgouv/matomo-postgres",
|
|
3
3
|
"description": "Extract visitor events from Matomo API and push to Postgres",
|
|
4
|
-
"version": "2.3.
|
|
4
|
+
"version": "2.3.1",
|
|
5
5
|
"types": "types/index.d.ts",
|
|
6
6
|
"license": "Apache-2.0",
|
|
7
7
|
"main": "dist/index.js",
|
|
@@ -10,15 +10,13 @@
|
|
|
10
10
|
"access": "public"
|
|
11
11
|
},
|
|
12
12
|
"type": "module",
|
|
13
|
-
"bin":
|
|
14
|
-
"matomo-postgres": "./bin/index.js"
|
|
15
|
-
},
|
|
13
|
+
"bin": "./bin/index.js",
|
|
16
14
|
"files": [
|
|
17
15
|
"bin",
|
|
18
16
|
"dist"
|
|
19
17
|
],
|
|
20
18
|
"scripts": {
|
|
21
|
-
"start": "yarn migrate && node ./
|
|
19
|
+
"start": "yarn migrate && node ./bin/index.js",
|
|
22
20
|
"build": "tsc",
|
|
23
21
|
"prepublish": "yarn build",
|
|
24
22
|
"migrate": "node ./dist/migrate-latest.js",
|