39 lines
1.2 KiB
JavaScript
39 lines
1.2 KiB
JavaScript
'use strict';
|
|
|
|
const db = require('../src/infra/db');
|
|
|
|
async function main() {
|
|
await db.execute(
|
|
`CREATE TABLE IF NOT EXISTS export_jobs (
|
|
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
job_uuid CHAR(36) NOT NULL,
|
|
export_type VARCHAR(32) NOT NULL,
|
|
params JSON NULL,
|
|
status ENUM('queued','processing','completed','failed','expired') NOT NULL DEFAULT 'queued',
|
|
progress INT NOT NULL DEFAULT 0,
|
|
requested_by BIGINT NOT NULL,
|
|
file_name VARCHAR(255) NULL,
|
|
file_path VARCHAR(1024) NULL,
|
|
mime_type VARCHAR(128) NULL,
|
|
file_size BIGINT NULL,
|
|
file_hash CHAR(64) NULL,
|
|
error VARCHAR(1000) NULL,
|
|
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
started_at DATETIME NULL,
|
|
completed_at DATETIME NULL,
|
|
expires_at DATETIME NULL,
|
|
UNIQUE KEY uk_job_uuid (job_uuid),
|
|
KEY idx_requested_created (requested_by, created_at),
|
|
KEY idx_status_expires (status, expires_at)
|
|
) ENGINE=InnoDB`,
|
|
);
|
|
console.log('P4.5 schema ready: export_jobs');
|
|
}
|
|
|
|
main()
|
|
.catch((error) => {
|
|
console.error(error);
|
|
process.exitCode = 1;
|
|
})
|
|
.finally(() => db.close());
|