<?php
declare(strict_types=1);

use Phinx\Migration\AbstractMigration;

final class Task2402011651 extends AbstractMigration
{
    public function up(): void
    {
        $this->execute(<<<SQL
DROP VIEW sinistro.v_laudos_cobranca_preliminar_final;
CREATE OR REPLACE VIEW sinistro.v_laudos_cobranca_preliminar_final AS
SELECT lf.id_cobertura,
       pr.id                                            AS id_processo,
       v_id_proposta_mae.id_proposta_mae,
       po.ds_nome_proponente,
       m.ds_nome_municipio,
       e.ds_sigla,
       ep.ds_nome_fantasia,
       ep.id                                            AS id_empresa,
       vlf.id_vistoria,
       cu.ds_nome_cultura,
       lf.ds_itens_segurados                            AS itens,
       lf.ds_variedades                                 AS variedade,
       lf.vl_area_vistoriada,
       'Final'::text                                    AS tp_vistoria,
       pg.id_tipo_produto,
       cu.id                                            AS id_cultura,
       p.id                                             AS id_proposta,
       e.id                                             AS id_estado,
       pr.id_processo_seguradora,
       lf.dt_vistoria,
       vistoriadores_laudos_finais.municipio_perito,
       vistoriadores_laudos_finais.nome_perito          AS perito,
       string_agg(vgaf.nome_auxiliar::text, ', '::text) AS auxiliar,
       lf.fl_evento_nao_constatado                      AS evento_nao_constatado,
       pd.id                                            AS id_produto,
       pd.id_seguradora,
       pd.id_produto_geral,
       ep.cpf_cnpj                                      AS cpf_cnpj_empresa,
       p.nr_apolice,
       em.ds_nome_municipio                             AS ds_nome_municipio_empresa,
       ee.ds_sigla                                      AS ds_sigla_uf_empresa,
       m.id                                             AS id_municipio,
       vistoriadores_laudos_finais.id_perito,
       to_char(
               p.dt_criacao::timestamp with time zone,
               'YYYY-MM-DD'::text
           )                                            AS data_criacao_proposta
FROM seguro.propostas_endosso ped
         JOIN seguro.propostas p ON ped.id_proposta = p.id AND ped.fl_proposta_vigente
         JOIN seguro.propostas_proponentes po ON po.id_proposta = p.id
         JOIN seguro.propostas_propriedades pp ON pp.id_proposta = p.id
         JOIN sistema.municipios m ON m.id = pp.id_municipio
         JOIN sistema.estados e ON e.id = m.id_estado
         JOIN produto.produtos pd ON pd.id = p.id_produto
         JOIN produto.produtos_geral pg ON pg.id = pd.id_produto_geral
         JOIN produto.culturas cu ON cu.id = pg.id_cultura
         JOiN sinistro.processos pr ON pr.id_proposta = p.id
         JOIN sinistro.processos_empresas pe ON pe.id_processo = pr.id
         JOIN sistema.empresas ep ON ep.id = pe.id_empresa
         JOIN sistema.municipios em ON em.id = ep.id_municipio
         JOIN sistema.estados ee ON ee.id = em.id_estado
         JOIN sinistro.laudos_finais lf ON lf.id_processo = pr.id
         JOIN sistema.vistorias_laudos_finais vlf ON vlf.id_laudo_final = lf.id
         LEFT JOIN sinistro.v_get_auxiliares_final vgaf ON vgaf.id_laudo_final = vlf.id_laudo_final
         JOIN sistema.usuarios u ON u.id = lf.id_usuario_criacao
         JOIN sistema.vistorias v ON v.id = vlf.id_vistoria
         JOIN sistema.vistorias_empresas ve ON ve.id_empresa = ep.id AND ve.id_vistoria = vlf.id_vistoria
         LEFT JOIN seguro.v_id_proposta_mae ON v_id_proposta_mae.id_proposta = p.id_proposta_mae
         LEFT JOIN (SELECT x.id_laudo_final,
                           STRING_AGG(x.nome_perito, ', ')           AS nome_perito,
                           STRING_AGG(x.ds_municipio_completo, ', ') AS municipio_perito,
                           ARRAY_AGG(x.id_perito)                    AS id_perito
                    FROM (SELECT laudos_finais.id                                  AS id_laudo_final
                               , CAST(funcionarios.ds_nome_funcionario AS VARCHAR) AS nome_perito
                               , COALESCE(fm.ds_nome_municipio, 'NAO INFORMADO') || '/' ||
                                 COALESCE(fe.ds_sigla, '-')                        as ds_municipio_completo
                               , CAST(funcionarios.id AS VARCHAR)                  AS id_perito
                          FROM sistema.funcionarios
                                   JOIN sinistro.laudos_finais_funcionarios
                                        ON laudos_finais_funcionarios.id_funcionario = funcionarios.id
                                   JOIN sinistro.laudos_finais
                                        ON laudos_finais.id = laudos_finais_funcionarios.id_laudo_final
                                   JOIN sistema.usuarios
                                        ON funcionarios.id_usuario = usuarios.id AND usuarios.tp_usuario <> 'H'
                                   LEFT JOIN sistema.municipios fm ON fm.id = funcionarios.id_municipio
                                   LEFT JOIN sistema.estados fe ON fe.id = fm.id_estado
                          GROUP BY laudos_finais.id
                                 , funcionarios.ds_nome_funcionario
                                 , fm.ds_nome_municipio
                                 , funcionarios.id
                                 , fe.ds_sigla
                          ORDER BY funcionarios.ds_nome_funcionario) as x
                    GROUP BY x.id_laudo_final) as vistoriadores_laudos_finais
                   ON vistoriadores_laudos_finais.id_laudo_final = lf.id
WHERE (
            lf.id_status = 110
        OR lf.id_status = 205
    )
  AND pr.id_status <> 5
  AND pd.id_safra >= (select id - 1
                      from produto.safras
                      where fl_vigente = true)
GROUP BY lf.id_cobertura,
         pr.id,
         v_id_proposta_mae.id_proposta_mae,
         po.ds_nome_proponente,
         m.ds_nome_municipio,
         e.ds_sigla,
         ep.ds_nome_fantasia,
         ep.id,
         vlf.id_vistoria,
         cu.ds_nome_cultura,
         lf.ds_itens_segurados,
         lf.ds_variedades,
         lf.vl_area_vistoriada,
         'Final'::text,
         pg.id_tipo_produto,
         cu.id,
         p.id,
         e.id,
         pr.id_processo_seguradora,
         lf.dt_vistoria,
         vistoriadores_laudos_finais.municipio_perito,
         e.ds_sigla,
         vistoriadores_laudos_finais.nome_perito,
         vgaf.nome_auxiliar,
         lf.fl_evento_nao_constatado,
         pd.id,
         pd.id_seguradora,
         pd.id_produto_geral,
         ep.cpf_cnpj,
         p.nr_apolice,
         em.ds_nome_municipio,
         ee.ds_sigla,
         m.id,
         vistoriadores_laudos_finais.id_perito,
         p.dt_criacao
UNION
SELECT lp.id_cobertura,
       pr.id                                            AS id_processo,
       v_id_proposta_mae.id_proposta_mae,
       po.ds_nome_proponente,
       m.ds_nome_municipio,
       e.ds_sigla,
       ep.ds_nome_fantasia,
       ep.id                                            AS id_empresa,
       vlp.id_vistoria,
       cu.ds_nome_cultura,
       lp.ds_itens_segurados                            AS itens,
       lp.ds_variedades                                 AS variedade,
       lp.vl_area_vistoriada,
       'Preliminar'::text                               AS tp_vistoria,
       pg.id_tipo_produto,
       cu.id                                            AS id_cultura,
       p.id                                             AS id_proposta,
       e.id                                             AS id_estado,
       pr.id_processo_seguradora,
       lp.dt_vistoria,
       vistoriadores_laudos_preliminares.municipio_perito,
       vistoriadores_laudos_preliminares.nome_perito    AS perito,
       string_agg(vgap.nome_auxiliar::text, ', '::text) AS auxiliar,
       lp.fl_evento_nao_constatado                      AS evento_nao_constatado,
       pd.id                                            AS id_produto,
       pd.id_seguradora,
       pd.id_produto_geral,
       ep.cpf_cnpj                                      AS cpf_cnpj_empresa,
       p.nr_apolice,
       em.ds_nome_municipio                             AS ds_nome_municipio_empresa,
       ee.ds_sigla                                      AS ds_sigla_uf_empresa,
       m.id                                             AS id_municipio,
       vistoriadores_laudos_preliminares.id_perito,
       to_char(
               p.dt_criacao::timestamp with time zone,
               'YYYY-MM-DD'::text
           )                                            AS data_criacao_proposta
FROM seguro.propostas_endosso ped
         JOIN seguro.propostas p ON ped.id_proposta = p.id AND ped.fl_proposta_vigente
         JOIN seguro.propostas_proponentes po ON po.id_proposta = p.id
         JOIN seguro.propostas_propriedades pp ON pp.id_proposta = p.id
         JOIN sistema.municipios m ON m.id = pp.id_municipio
         JOIN sistema.estados e ON e.id = m.id_estado
         JOIN produto.produtos pd ON pd.id = p.id_produto
         JOIN produto.produtos_geral pg ON pg.id = pd.id_produto_geral
         JOIN produto.culturas cu ON cu.id = pg.id_cultura
         JOIN sinistro.processos pr ON pr.id_proposta = p.id
         JOIN sinistro.processos_empresas pe ON pe.id_processo = pr.id
         JOIN sistema.empresas ep ON ep.id = pe.id_empresa
         JOIN sistema.municipios em ON em.id = ep.id_municipio
         JOIN sistema.estados ee ON ee.id = em.id_estado
         JOIN sinistro.laudos_preliminares lp ON lp.id_processo = pr.id
         JOIN sistema.vistorias_laudos_preliminares vlp ON vlp.id_laudo_preliminar = lp.id
         LEFT JOIN sinistro.v_get_auxiliares_preliminar vgap ON vgap.id_laudo_preliminar = vlp.id_laudo_preliminar
         JOIN sistema.usuarios u ON u.id = lp.id_usuario_criacao AND u.tp_usuario <> 'H'::bpchar
         JOIN sistema.vistorias v ON v.id = vlp.id_vistoria
         JOIN sistema.vistorias_empresas ve ON ve.id_empresa = ep.id AND ve.id_vistoria = vlp.id_vistoria
         LEFT JOIN seguro.v_id_proposta_mae ON v_id_proposta_mae.id_proposta = p.id_proposta_mae
         LEFT JOIN (SELECT x.id_laudo_preliminar,
                           STRING_AGG(x.nome_perito, ', ')           AS nome_perito,
                           STRING_AGG(x.ds_municipio_completo, ', ') AS municipio_perito,
                           ARRAY_AGG(x.id_perito)                    AS id_perito
                    FROM (SELECT laudos_preliminares.id                            AS id_laudo_preliminar
                               , CAST(funcionarios.ds_nome_funcionario AS VARCHAR) AS nome_perito
                               , COALESCE(fm.ds_nome_municipio, 'NAO INFORMADO') || '/' ||
                                 COALESCE(fe.ds_sigla, '-')                        as ds_municipio_completo
                               , CAST(funcionarios.id AS VARCHAR)                  AS id_perito
                          FROM sistema.funcionarios
                                   JOIN sistema.vistorias_funcionarios
                                        ON vistorias_funcionarios.id_funcionario = funcionarios.id
                                   JOIN sistema.vistorias_laudos_preliminares
                                        ON vistorias_laudos_preliminares.id_vistoria =
                                           vistorias_funcionarios.id_vistoria
                                   JOIN sinistro.laudos_preliminares
                                        ON laudos_preliminares.id = vistorias_laudos_preliminares.id_laudo_preliminar
                                   JOIN sistema.usuarios
                                        ON funcionarios.id_usuario = usuarios.id AND usuarios.tp_usuario <> 'H'
                                   LEFT JOIN sistema.municipios fm ON fm.id = funcionarios.id_municipio
                                   LEFT JOIN sistema.estados fe ON fe.id = fm.id_estado
                          GROUP BY laudos_preliminares.id
                                 , funcionarios.ds_nome_funcionario
                                 , funcionarios.id
                                 , fm.ds_nome_municipio
                                 , fe.ds_sigla
                          ORDER BY funcionarios.ds_nome_funcionario) as x
                    GROUP BY x.id_laudo_preliminar) AS vistoriadores_laudos_preliminares
                   ON vistoriadores_laudos_preliminares.id_laudo_preliminar = vlp.id_laudo_preliminar
WHERE (
            lp.id_status = 76
        OR lp.id_status = 204
    )
  AND pe.fl_ativo = true
  AND pr.id_status <> 5
  AND pe.fl_ativo = true
  AND pd.id_safra >= (select id - 1
                      from produto.safras
                      where fl_vigente = true)
GROUP BY lp.id_cobertura,
         pr.id,
         v_id_proposta_mae.id_proposta_mae,
         po.ds_nome_proponente,
         m.ds_nome_municipio,
         e.ds_sigla,
         ep.ds_nome_fantasia,
         ep.id,
         vlp.id_vistoria,
         cu.ds_nome_cultura,
         lp.ds_itens_segurados,
         lp.ds_variedades,
         lp.vl_area_vistoriada,
         pg.id_tipo_produto,
         cu.id,
         p.id,
         e.id,
         pr.id_processo_seguradora,
         lp.dt_vistoria,
         vistoriadores_laudos_preliminares.municipio_perito,
         e.ds_sigla,
         vistoriadores_laudos_preliminares.nome_perito,
         vgap.nome_auxiliar,
         lp.fl_evento_nao_constatado,
         pd.id,
         pd.id_seguradora,
         pd.id_produto_geral,
         ep.cpf_cnpj,
         p.nr_apolice,
         em.ds_nome_municipio,
         ee.ds_sigla,
         m.id,
         vistoriadores_laudos_preliminares.id_perito,
         p.dt_criacao;
SQL
);
    }

    public function down(): void
    {
        $this->execute(<<<SQL
DROP VIEW sinistro.v_laudos_cobranca_preliminar_final;
CREATE
OR REPLACE VIEW sinistro.v_laudos_cobranca_preliminar_final AS
SELECT
  lf.id_cobertura,
  pr.id AS id_processo,
  v_id_proposta_mae.id_proposta_mae,
  po.ds_nome_proponente,
  m.ds_nome_municipio,
  e.ds_sigla,
  ep.ds_nome_fantasia,
  ep.id AS id_empresa,
  vlf.id_vistoria,
  cu.ds_nome_cultura,
  lf.ds_itens_segurados AS itens,
  lf.ds_variedades AS variedade,
  lf.vl_area_vistoriada,
  'Final' :: text AS tp_vistoria,
  pg.id_tipo_produto,
  cu.id AS id_cultura,
  p.id AS id_proposta,
  e.id AS id_estado,
  pr.id_processo_seguradora,
  lf.dt_vistoria,
  (
    COALESCE(
      municipio_perito.ds_nome_municipio :: character varying,
      'NAO INFORMADO' :: character varying
    ) :: text || '/' :: text || COALESCE(estado_perito.ds_sigla, '-' :: bpchar) :: text
  ) AS municipio_perito,
  funcionarios.ds_nome_funcionario AS perito,
  string_agg(vgaf.nome_auxiliar :: text, ', ' :: text) AS auxiliar,
  lf.fl_evento_nao_constatado AS evento_nao_constatado,
  pd.id AS id_produto,
  pd.id_seguradora,
  pd.id_produto_geral,
  ep.cpf_cnpj AS cpf_cnpj_empresa,
  p.nr_apolice,
  em.ds_nome_municipio AS ds_nome_municipio_empresa,
  ee.ds_sigla AS ds_sigla_uf_empresa,
  m.id AS id_municipio,
  funcionarios.id AS id_perito,
  to_char(
    p.dt_criacao :: timestamp with time zone,
    'YYYY-MM-DD' :: text
  ) AS data_criacao_proposta
FROM
  seguro.propostas_endosso ped
  JOIN seguro.propostas p ON ped.id_proposta = p.id
  AND ped.fl_proposta_vigente
  JOIN seguro.propostas_proponentes po ON po.id_proposta = p.id
  JOIN seguro.propostas_propriedades pp ON pp.id_proposta = p.id
  JOIN sistema.municipios m ON m.id = pp.id_municipio
  JOIN sistema.estados e ON e.id = m.id_estado
  JOIN produto.produtos pd ON pd.id = p.id_produto
  JOIN produto.produtos_geral pg ON pg.id = pd.id_produto_geral
  JOIN produto.culturas cu ON cu.id = pg.id_cultura
  JOiN sinistro.processos pr ON pr.id_proposta = p.id
  JOIN sinistro.processos_empresas pe ON pe.id_processo = pr.id
  JOIN sistema.empresas ep ON ep.id = pe.id_empresa
  JOIN sistema.municipios em ON em.id = ep.id_municipio
  JOIN sistema.estados ee ON ee.id = em.id_estado
  JOIN sinistro.laudos_finais lf ON lf.id_processo = pr.id
  JOIN sistema.vistorias_laudos_finais vlf ON vlf.id_laudo_final = lf.id
  LEFT JOIN sinistro.v_get_auxiliares_final vgaf ON vgaf.id_laudo_final = vlf.id_laudo_final
  JOIN sistema.usuarios u ON u.id = lf.id_usuario_criacao
  JOIN sistema.vistorias v ON v.id = vlf.id_vistoria
  JOIN sistema.vistorias_empresas ve ON ve.id_empresa = ep.id
  AND ve.id_vistoria = vlf.id_vistoria
  LEFT JOIN seguro.v_id_proposta_mae ON v_id_proposta_mae.id_proposta = p.id_proposta_mae
  LEFT JOIN sinistro.laudos_finais_funcionarios ON laudos_finais_funcionarios.id_laudo_final = lf.id
  LEFT JOIN sistema.funcionarios ON funcionarios.id = laudos_finais_funcionarios.id_funcionario
  LEFT JOIN sistema.municipios AS municipio_perito ON municipio_perito.id = funcionarios.id_municipio
  LEFT JOIN sistema.estados AS estado_perito ON estado_perito.id = municipio_perito.id_estado
WHERE
  (
    lf.id_status = 110
    OR lf.id_status = 205
  )
  AND pr.id_status <> 5
  AND pd.id_safra >= (
    select
      id - 1
    from
      produto.safras
    where
      fl_vigente = true
  )
GROUP BY
  lf.id_cobertura,
  pr.id,
  v_id_proposta_mae.id_proposta_mae,
  po.ds_nome_proponente,
  m.ds_nome_municipio,
  e.ds_sigla,
  ep.ds_nome_fantasia,
  ep.id,
  vlf.id_vistoria,
  cu.ds_nome_cultura,
  lf.ds_itens_segurados,
  lf.ds_variedades,
  lf.vl_area_vistoriada,
  'Final' :: text,
  pg.id_tipo_produto,
  cu.id,
  p.id,
  e.id,
  pr.id_processo_seguradora,
  lf.dt_vistoria,
  municipio_perito.ds_nome_municipio,
  estado_perito.ds_sigla,
  funcionarios.ds_nome_funcionario,
  vgaf.nome_auxiliar,
  lf.fl_evento_nao_constatado,
  pd.id,
  pd.id_seguradora,
  pd.id_produto_geral,
  ep.cpf_cnpj,
  p.nr_apolice,
  em.ds_nome_municipio,
  ee.ds_sigla,
  m.id,
  funcionarios.id,
  p.dt_criacao
UNION
SELECT
  lp.id_cobertura,
  pr.id AS id_processo,
  v_id_proposta_mae.id_proposta_mae,
  po.ds_nome_proponente,
  m.ds_nome_municipio,
  e.ds_sigla,
  ep.ds_nome_fantasia,
  ep.id AS id_empresa,
  vlp.id_vistoria,
  cu.ds_nome_cultura,
  lp.ds_itens_segurados AS itens,
  lp.ds_variedades AS variedade,
  lp.vl_area_vistoriada,
  'Preliminar' :: text AS tp_vistoria,
  pg.id_tipo_produto,
  cu.id AS id_cultura,
  p.id AS id_proposta,
  e.id AS id_estado,
  pr.id_processo_seguradora,
  lp.dt_vistoria,
  (
    COALESCE(
      municipio_perito.ds_nome_municipio :: character varying,
      'NAO INFORMADO' :: character varying
    ) :: text || '/' :: text || COALESCE(estado_perito.ds_sigla, '-' :: bpchar) :: text
  ) AS municipio_perito,
  funcionarios.ds_nome_funcionario AS perito,
  string_agg(vgap.nome_auxiliar :: text, ', ' :: text) AS auxiliar,
  lp.fl_evento_nao_constatado AS evento_nao_constatado,
  pd.id AS id_produto,
  pd.id_seguradora,
  pd.id_produto_geral,
  ep.cpf_cnpj AS cpf_cnpj_empresa,
  p.nr_apolice,
  em.ds_nome_municipio AS ds_nome_municipio_empresa,
  ee.ds_sigla AS ds_sigla_uf_empresa,
  m.id AS id_municipio,
  funcionarios.id AS id_perito,
  to_char(
    p.dt_criacao :: timestamp with time zone,
    'YYYY-MM-DD' :: text
  ) AS data_criacao_proposta
FROM
  seguro.propostas_endosso ped
  JOIN seguro.propostas p ON ped.id_proposta = p.id
  AND ped.fl_proposta_vigente
  JOIN seguro.propostas_proponentes po ON po.id_proposta = p.id
  JOIN seguro.propostas_propriedades pp ON pp.id_proposta = p.id
  JOIN sistema.municipios m ON m.id = pp.id_municipio
  JOIN sistema.estados e ON e.id = m.id_estado
  JOIN produto.produtos pd ON pd.id = p.id_produto
  JOIN produto.produtos_geral pg ON pg.id = pd.id_produto_geral
  JOIN produto.culturas cu ON cu.id = pg.id_cultura
  JOIN sinistro.processos pr ON pr.id_proposta = p.id
  JOIN sinistro.processos_empresas pe ON pe.id_processo = pr.id
  JOIN sistema.empresas ep ON ep.id = pe.id_empresa
  JOIN sistema.municipios em ON em.id = ep.id_municipio
  JOIN sistema.estados ee ON ee.id = em.id_estado
  JOIN sinistro.laudos_preliminares lp ON lp.id_processo = pr.id
  JOIN sistema.vistorias_laudos_preliminares vlp ON vlp.id_laudo_preliminar = lp.id
  LEFT JOIN sinistro.v_get_auxiliares_preliminar vgap ON vgap.id_laudo_preliminar = vlp.id_laudo_preliminar
  JOIN sistema.usuarios u ON u.id = lp.id_usuario_criacao
  AND u.tp_usuario <> 'H' :: bpchar
  JOIN sistema.vistorias v ON v.id = vlp.id_vistoria
  JOIN sistema.vistorias_empresas ve ON ve.id_empresa = ep.id
  AND ve.id_vistoria = vlp.id_vistoria
  LEFT JOIN seguro.v_id_proposta_mae ON v_id_proposta_mae.id_proposta = p.id_proposta_mae
  LEFT JOIN sistema.vistorias_funcionarios ON vistorias_funcionarios.id_vistoria = vlp.id_vistoria
  LEFT JOIN sistema.funcionarios ON funcionarios.id = vistorias_funcionarios.id_funcionario
  LEFT JOIN sistema.municipios AS municipio_perito ON municipio_perito.id = funcionarios.id_municipio
  LEFT JOIN sistema.estados AS estado_perito ON estado_perito.id = municipio_perito.id_estado
WHERE
  (
    lp.id_status = 76
    OR lp.id_status = 204
  )
  AND pe.fl_ativo = true
  AND pr.id_status <> 5
  AND pe.fl_ativo = true
  AND pd.id_safra >= (
    select
      id - 1
    from
      produto.safras
    where
      fl_vigente = true
  )
GROUP BY
  lp.id_cobertura,
  pr.id,
  v_id_proposta_mae.id_proposta_mae,
  po.ds_nome_proponente,
  m.ds_nome_municipio,
  e.ds_sigla,
  ep.ds_nome_fantasia,
  ep.id,
  vlp.id_vistoria,
  cu.ds_nome_cultura,
  lp.ds_itens_segurados,
  lp.ds_variedades,
  lp.vl_area_vistoriada,
  pg.id_tipo_produto,
  cu.id,
  p.id,
  e.id,
  pr.id_processo_seguradora,
  lp.dt_vistoria,
  municipio_perito.ds_nome_municipio,
  estado_perito.ds_sigla,
  funcionarios.ds_nome_funcionario,
  vgap.nome_auxiliar,
  lp.fl_evento_nao_constatado,
  pd.id,
  pd.id_seguradora,
  pd.id_produto_geral,
  ep.cpf_cnpj,
  p.nr_apolice,
  em.ds_nome_municipio,
  ee.ds_sigla,
  m.id,
  funcionarios.id,
  p.dt_criacao;
SQL
);
    }
}
