import { MigrationInterface, QueryRunner, Table, TableForeignKey } from "typeorm";

export class CreatePortfolioImagesTable1697798432654 implements MigrationInterface {

    public async up(queryRunner: QueryRunner): Promise<void> {
        await queryRunner.createTable(new Table({
            name: "portfolio_images",
            columns: [
                {
                    name: 'id',
                    type: 'uuid',
                    isPrimary: true,
                    default: 'uuid_generate_v4()',
                    isNullable: false,
                    isGenerated: true,
                },
                {
                    name: "portfolio_images",
                    type: "text",
                    isNullable: false
                },
                {
                    name: "portfolio_id",
                    type: "uuid",
                    isNullable: false
                },
                {
                    name: "updated_at",
                    type: "timestamp",
                    default: "CURRENT_TIMESTAMP"
                },
                {
                    name: "created_at",
                    type: "timestamp",
                    default: "CURRENT_TIMESTAMP"
                },
                {
                    name: "deleted_at",
                    type: "timestamp",
                    isNullable: true
                }
            ],
        }), true);

        await queryRunner.createForeignKey("portfolio_images", new TableForeignKey({
            name: "portfolio_images_portfolios_id_fk",
            columnNames: ["portfolio_id"],
            referencedColumnNames: ["id"],
            referencedTableName: "portfolios",
            onDelete: "CASCADE",
        }));
    }

    public async down(queryRunner: QueryRunner): Promise<void> {
        await queryRunner.dropForeignKey("portfolio_images", "portfolio_images_portfolios_id_fk");

        await queryRunner.dropTable("portfolio_images");
    }

}