<?php
declare(strict_types=1);

use Phinx\Migration\AbstractMigration;

final class Task2403221655 extends AbstractMigration
{
    public function up(): void
    {
        $this->execute(<<<SQL

            CREATE TABLE produto.tipos_liquidacoes_coberturas(
                id SERIAL,
                ds_nome varchar(255) NOT NULL,
                CONSTRAINT pk_tipos_liquidacoes_coberturas PRIMARY KEY(id)
            ) INHERITS (public.campos_default);

            INSERT INTO produto.tipos_liquidacoes_coberturas (id_usuario_criacao, dt_criacao, id, ds_nome)
                VALUES (2068, now(), 1, 'Área Total'),
                       (2068, now(), 2, 'Item Segurado'),
                       (2068, now(), 3, 'Área Sinistrada');

            SELECT setval('produto.tipos_liquidacoes_coberturas_id_seq', 3, true);

            ALTER TABLE produto.coberturas ADD COLUMN id_tipo_liquidacao_cobertura integer;
            ALTER TABLE produto.coberturas ADD CONSTRAINT fk_coberturas_liquidacao_cobertura
                FOREIGN KEY (id_tipo_liquidacao_cobertura) REFERENCES produto.tipos_liquidacoes_coberturas(id);

            -- Multirrisco II - Área Total
            -- Multirrisco - Item Segurado
            -- Resto - Área sinistrada
            UPDATE produto.coberturas SET id_tipo_liquidacao_cobertura = 3;
            UPDATE produto.coberturas SET id_tipo_liquidacao_cobertura = 1 WHERE id = 32;
            UPDATE produto.coberturas SET id_tipo_liquidacao_cobertura = 2 WHERE id = 18;

            ALTER TABLE produto.coberturas ALTER COLUMN id_tipo_liquidacao_cobertura SET NOT NULL;
SQL
        );
    }

    public function down(): void
    {
        $this->execute(<<<SQL
            ALTER TABLE produto.coberturas DROP COLUMN id_tipo_liquidacao_cobertura;
            DROP TABLE produto.tipos_liquidacoes_coberturas;
SQL
        );
    }
}
