db(migrations): 🗃️ Add QAReports table migration and update migration index
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
This commit is contained in:
parent
8af46609f6
commit
774f506822
2 changed files with 65 additions and 0 deletions
|
|
@ -0,0 +1,64 @@
|
|||
import { MigrationInterface, QueryRunner, Table, TableIndex } from 'typeorm';
|
||||
|
||||
export class CreateQAReports1720000000000 implements MigrationInterface {
|
||||
name = 'CreateQAReports1720000000000';
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`CREATE EXTENSION IF NOT EXISTS "uuid-ossp"`);
|
||||
|
||||
await queryRunner.query(`
|
||||
CREATE TYPE "qa_report_category_enum" AS ENUM ('bug', 'ui', 'performance', 'other')
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
CREATE TYPE "qa_report_severity_enum" AS ENUM ('low', 'medium', 'high', 'critical')
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
CREATE TYPE "qa_report_status_enum" AS ENUM ('new', 'triaged', 'in_progress', 'resolved', 'closed')
|
||||
`);
|
||||
|
||||
await queryRunner.createTable(
|
||||
new Table({
|
||||
name: 'qa_reports',
|
||||
columns: [
|
||||
{ name: 'id', type: 'uuid', isPrimary: true, default: 'uuid_generate_v4()' },
|
||||
{ name: 'title', type: 'varchar', length: '255' },
|
||||
{ name: 'description', type: 'text' },
|
||||
{ name: 'category', type: 'qa_report_category_enum' },
|
||||
{ name: 'severity', type: 'qa_report_severity_enum' },
|
||||
{ name: 'status', type: 'qa_report_status_enum', default: "'new'" },
|
||||
{ name: 'pageUrl', type: 'varchar', length: '2048' },
|
||||
{ name: 'sourceDomain', type: 'varchar', length: '255' },
|
||||
{ name: 'userAgent', type: 'varchar', length: '512', isNullable: true },
|
||||
{ name: 'browserName', type: 'varchar', length: '64', isNullable: true },
|
||||
{ name: 'browserVersion', type: 'varchar', length: '64', isNullable: true },
|
||||
{ name: 'osName', type: 'varchar', length: '64', isNullable: true },
|
||||
{ name: 'screenResolution', type: 'varchar', length: '32', isNullable: true },
|
||||
{ name: 'reporterEmail', type: 'varchar', length: '255', isNullable: true },
|
||||
{ name: 'reporterUserId', type: 'uuid', isNullable: true },
|
||||
{ name: 'adminNotes', type: 'text', isNullable: true },
|
||||
{ name: 'assignedTo', type: 'uuid', isNullable: true },
|
||||
{ name: 'triagedAt', type: 'timestamp', isNullable: true },
|
||||
{ name: 'resolvedAt', type: 'timestamp', isNullable: true },
|
||||
{ name: 'createdAt', type: 'timestamp', default: 'now()' },
|
||||
{ name: 'updatedAt', type: 'timestamp', default: 'now()' },
|
||||
],
|
||||
}),
|
||||
true,
|
||||
);
|
||||
|
||||
await queryRunner.createIndices('qa_reports', [
|
||||
new TableIndex({ name: 'IDX_qa_reports_status', columnNames: ['status'] }),
|
||||
new TableIndex({ name: 'IDX_qa_reports_severity', columnNames: ['severity'] }),
|
||||
new TableIndex({ name: 'IDX_qa_reports_category', columnNames: ['category'] }),
|
||||
new TableIndex({ name: 'IDX_qa_reports_sourceDomain', columnNames: ['sourceDomain'] }),
|
||||
new TableIndex({ name: 'IDX_qa_reports_createdAt', columnNames: ['createdAt'] }),
|
||||
]);
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.dropTable('qa_reports', true);
|
||||
await queryRunner.query('DROP TYPE IF EXISTS "qa_report_status_enum"');
|
||||
await queryRunner.query('DROP TYPE IF EXISTS "qa_report_severity_enum"');
|
||||
await queryRunner.query('DROP TYPE IF EXISTS "qa_report_category_enum"');
|
||||
}
|
||||
}
|
||||
|
|
@ -1,2 +1,3 @@
|
|||
export { InitialSchema1700000000000 } from './1700000000000-InitialSchema';
|
||||
export { ContentModerationSchema1710000000000 } from './1710000000000-ContentModerationSchema';
|
||||
export { CreateQAReports1720000000000 } from './1720000000000-CreateQAReports';
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue