Files
jobtrackingapp/docs/redesign/phase-9/p9-requal-01/performance/mariadb-proof.mjs
T
cesnimda 1a1b7c8221
MariaDB persistence qualification / mariadb (push) Failing after 7s
test: prepare phase 9 requalification harness and blocker register
2026-10-24 13:20:47 +02:00

30 lines
2.0 KiB
JavaScript

import { execFile } from 'node:child_process';
import { promisify } from 'node:util';
import { validateMariaDbBrowserConnection } from '../../../../../job-tracker-ui/scripts/mariadb-browser-connection.mjs';
const execute = promisify(execFile);
export async function sql(query) {
const port = process.env.JOBTRACKER_MARIADB_BROWSER_PORT;
const database = validateMariaDbBrowserConnection(process.env.JOBTRACKER_MARIADB_BROWSER_CONNECTION || '', port || '');
if (port !== '33308' || !process.env.JOBTRACKER_MARIADB_CLIENT) throw new Error('Pinned MariaDB port and native client are required.');
const { stdout } = await execute(process.env.JOBTRACKER_MARIADB_CLIENT,
['--host=127.0.0.1', `--port=${port}`, '--user=root', `--database=${database}`, '--batch', '--raw', '--skip-column-names',
`--execute=SET TRANSACTION READ ONLY; START TRANSACTION; ${query}; COMMIT;`],
{ encoding: 'utf8', timeout: 15000, maxBuffer: 4 * 1024 * 1024, env: { ...process.env, MYSQL_PWD: 'jt-integration-only' } });
return stdout.trim();
}
export async function snapshot(owner) {
if (!/^[a-zA-Z0-9-]{1,64}$/.test(owner)) throw new Error('Invalid synthetic owner ID.');
return JSON.parse(await sql(`SELECT JSON_OBJECT(
'ids',(SELECT JSON_ARRAYAGG(Id ORDER BY Id) FROM JobApplications WHERE OwnerUserId='${owner}'),
'ownerCount',(SELECT COUNT(*) FROM JobApplications WHERE OwnerUserId='${owner}'),
'deletedCount',(SELECT COUNT(*) FROM JobApplications WHERE OwnerUserId='${owner}' AND IsDeleted=1),
'tenantCounts',(SELECT JSON_ARRAYAGG(JSON_OBJECT('owner',OwnerUserId,'count',n) ORDER BY OwnerUserId)
FROM (SELECT OwnerUserId,COUNT(*) n FROM JobApplications GROUP BY OwnerUserId) counts),
'profile',(SELECT ProfileJson FROM CareerProfiles WHERE OwnerUserId='${owner}'),
'revision',(SELECT Version FROM CareerProfiles WHERE OwnerUserId='${owner}'),
'projection',(SELECT ProfileCvStructureJson FROM AspNetUsers WHERE Id='${owner}'),
'historyCount',(SELECT COUNT(*) FROM CareerProfileVersions WHERE OwnerUserId='${owner}'))`));
}