reserva_chatmotel/supabase/migrations/20260413000002_seed_dados_teste.sql

87 lines
3.7 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- Seed de dados de teste para Reserva Rede 1001 (Fase 2+3)
-- Já aplicada via MCP. Este arquivo é source of truth.
--
-- Popula:
-- • 1 unidade (Hotel 1001 Águas Lindas) amarrada ao Captain::Unit id=4 do Chatwoot
-- • 6 preços (2 categorias × 3 permanências)
-- • 4 fotos por categoria (URLs Unsplash de placeholder)
-- • 2 extras
--
-- Idempotente: checa existência antes de inserir.
do $$
declare
v_marca_id uuid;
v_unidade_id uuid;
v_conta_id uuid;
begin
-- 1. Garante a marca com categorias e permanências coerentes
select id into v_marca_id from reserva_hotel.marcas where nome = 'Hotel 1001 Noites' limit 1;
if v_marca_id is null then
insert into reserva_hotel.marcas (nome, categorias, permanencias, ativa)
values ('Hotel 1001 Noites',
array['Standard','Hidromassagem'],
array['3hrs','4hrs','Pernoite'],
true)
returning id into v_marca_id;
else
update reserva_hotel.marcas
set categorias = array['Standard','Hidromassagem'],
permanencias = array['3hrs','4hrs','Pernoite']
where id = v_marca_id;
end if;
-- 2. Pega a primeira conta_pagamento existente (o POC tinha uma seedada)
select id into v_conta_id from reserva_hotel.contas_pagamento limit 1;
-- 3. Cria a unidade amarrada ao Captain::Unit id=4 (Hotel 1001 Águas Lindas)
select id into v_unidade_id from reserva_hotel.unidades where chatwoot_unit_id = 4 limit 1;
if v_unidade_id is null then
insert into reserva_hotel.unidades
(nome, id_marca, id_conta_pagamento, categorias_visiveis,
endereco, telefone, ativa, chatwoot_unit_id)
values
('Hotel 1001 Águas Lindas',
v_marca_id,
v_conta_id,
array['Standard','Hidromassagem'],
'Águas Lindas, GO',
'(61) 99999-0000',
true,
4)
returning id into v_unidade_id;
end if;
-- 4. Preços
if not exists (
select 1 from reserva_hotel.precos
where id_marca = v_marca_id and categoria = 'Standard' and permanencia = '3hrs'
) then
insert into reserva_hotel.precos (id_marca, categoria, permanencia, periodo_semana, valor, ativo) values
(v_marca_id, 'Standard', '3hrs', 'default', 120.00, true),
(v_marca_id, 'Standard', '4hrs', 'default', 150.00, true),
(v_marca_id, 'Standard', 'Pernoite', 'default', 220.00, true),
(v_marca_id, 'Hidromassagem', '3hrs', 'default', 170.00, true),
(v_marca_id, 'Hidromassagem', '4hrs', 'default', 210.00, true),
(v_marca_id, 'Hidromassagem', 'Pernoite', 'default', 290.00, true);
end if;
-- 5. Fotos
if not exists (select 1 from reserva_hotel.fotos_categoria where id_unidade = v_unidade_id) then
insert into reserva_hotel.fotos_categoria (id_unidade, categoria, url_foto, alt, ordem) values
(v_unidade_id, 'Standard', 'https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=800', 'Suíte Standard 1', 0),
(v_unidade_id, 'Standard', 'https://images.unsplash.com/photo-1590490360182-c33d57733427?w=800', 'Suíte Standard 2', 1),
(v_unidade_id, 'Hidromassagem', 'https://images.unsplash.com/photo-1582719508461-905c673771fd?w=800', 'Suíte Hidromassagem 1', 0),
(v_unidade_id, 'Hidromassagem', 'https://images.unsplash.com/photo-1578683010236-d716f9a3f461?w=800', 'Suíte Hidromassagem 2', 1);
end if;
-- 6. Extras
if not exists (select 1 from reserva_hotel.extras where id_marca = v_marca_id) then
insert into reserva_hotel.extras (id_marca, titulo, descricao, preco, ativo, ordem) values
(v_marca_id, 'Tira-gosto', 'Porção de petiscos servida na suíte', 35.00, true, 0),
(v_marca_id, 'Decoração romântica', 'Pétalas, velas e champanhe', 90.00, true, 1);
end if;
end $$;