38 lines
1.2 KiB
TypeScript
38 lines
1.2 KiB
TypeScript
import { readFileSync } from 'node:fs';
|
|
import path from 'node:path';
|
|
|
|
export interface User { username: string; password: string; role_id: number }
|
|
export interface Sheet {
|
|
form_id: number; form_type: string; sheet: string; direction: string | null; year: number;
|
|
url: string; rows: number; owner: 'rf' | 'ssp';
|
|
}
|
|
export interface ProjectReport { project_id: number; year: number; report_type: string; url: string; rows: number }
|
|
export interface Page { name: string; url: string }
|
|
export interface Manifest {
|
|
scale: number;
|
|
users: Record<string, User>;
|
|
sheets: Sheet[];
|
|
project_reports: ProjectReport[];
|
|
svods: Page[];
|
|
modal_pages: Page[];
|
|
}
|
|
|
|
export const PERF_DIR = path.resolve(__dirname, '../..');
|
|
|
|
export function scale(): number {
|
|
return Number(process.env.PERF_SCALE ?? 1);
|
|
}
|
|
|
|
export function loadManifest(sc: number = scale()): Manifest {
|
|
const p = path.join(PERF_DIR, 'results', `manifest-s${sc}.json`);
|
|
const d = JSON.parse(readFileSync(p, 'utf-8'));
|
|
return {
|
|
scale: d.scale,
|
|
users: d.users ?? {},
|
|
sheets: (d.sheets ?? []).map((s: Sheet) => ({ owner: 'rf', ...s })),
|
|
project_reports: d.project_reports ?? [],
|
|
svods: d.svods ?? [],
|
|
modal_pages: d.modal_pages ?? [],
|
|
};
|
|
}
|