test: prepare phase 9 requalification harness and blocker register
MariaDB persistence qualification / mariadb (push) Failing after 7s
MariaDB persistence qualification / mariadb (push) Failing after 7s
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
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}'))`));
|
||||
}
|
||||
Reference in New Issue
Block a user