52 lines
2.1 KiB
TypeScript
52 lines
2.1 KiB
TypeScript
import { MigrationInterface, QueryRunner } from 'typeorm';
|
|
|
|
export class F4CompanySignatureInvites1790000200000 implements MigrationInterface {
|
|
name = 'F4CompanySignatureInvites1790000200000';
|
|
|
|
public async up(queryRunner: QueryRunner): Promise<void> {
|
|
await queryRunner.query(`
|
|
CREATE TABLE inspection_act_company_signature_invites (
|
|
id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
act_id uuid NOT NULL,
|
|
token_sha256 char(64) NOT NULL UNIQUE,
|
|
recipient_email varchar(320) NOT NULL,
|
|
recipient_name varchar(200),
|
|
recipient_document_type varchar(20),
|
|
recipient_document_number varchar(40),
|
|
recipient_position varchar(200),
|
|
status varchar(20) NOT NULL DEFAULT 'PENDING',
|
|
expires_at timestamptz NOT NULL,
|
|
sent_at timestamptz,
|
|
used_at timestamptz,
|
|
revoked_at timestamptz,
|
|
created_by uuid NOT NULL,
|
|
revoked_by uuid,
|
|
created_at timestamptz NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at timestamptz NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
CONSTRAINT fk_company_signature_invite_act FOREIGN KEY (act_id)
|
|
REFERENCES inspection_acts(id) ON DELETE CASCADE,
|
|
CONSTRAINT fk_company_signature_invite_created_by FOREIGN KEY (created_by)
|
|
REFERENCES users(id) ON DELETE RESTRICT,
|
|
CONSTRAINT fk_company_signature_invite_revoked_by FOREIGN KEY (revoked_by)
|
|
REFERENCES users(id) ON DELETE SET NULL,
|
|
CONSTRAINT chk_company_signature_invite_status CHECK (
|
|
status IN ('PENDING','USED','REVOKED','EXPIRED')
|
|
)
|
|
)
|
|
`);
|
|
await queryRunner.query(`
|
|
CREATE INDEX idx_company_signature_invites_act_created
|
|
ON inspection_act_company_signature_invites(act_id,created_at DESC)
|
|
`);
|
|
await queryRunner.query(`
|
|
CREATE INDEX idx_company_signature_invites_pending_expiry
|
|
ON inspection_act_company_signature_invites(status,expires_at)
|
|
WHERE status='PENDING'
|
|
`);
|
|
}
|
|
|
|
public async down(queryRunner: QueryRunner): Promise<void> {
|
|
await queryRunner.query('DROP TABLE IF EXISTS inspection_act_company_signature_invites');
|
|
}
|
|
}
|