From 118bde32f41ff4b73e2f20251f0a0c1602990cc6 Mon Sep 17 00:00:00 2001 From: Rodribm10 Date: Mon, 13 Apr 2026 23:41:49 -0300 Subject: [PATCH] feat: seed dados de teste (unidade aguas lindas, precos, fotos, extras) + types atualizados --- src/types/database.ts | 192 +++++++++--------- .../20260413000002_seed_dados_teste.sql | 86 ++++++++ 2 files changed, 187 insertions(+), 91 deletions(-) create mode 100644 supabase/migrations/20260413000002_seed_dados_teste.sql diff --git a/src/types/database.ts b/src/types/database.ts index c95c34b..2037430 100644 --- a/src/types/database.ts +++ b/src/types/database.ts @@ -1,10 +1,16 @@ -export type Json = string | number | boolean | null | { [key: string]: Json | undefined } | Json[] +export type Json = + | string + | number + | boolean + | null + | { [key: string]: Json | undefined } + | Json[] export type Database = { // Allows to automatically instantiate createClient with right options // instead of createClient(URL, KEY) __InternalSupabase: { - PostgrestVersion: '13.0.4' + PostgrestVersion: "13.0.4" } reserva_hotel: { Tables: { @@ -89,11 +95,11 @@ export type Database = { } Relationships: [ { - foreignKeyName: 'extras_id_marca_fkey' - columns: ['id_marca'] + foreignKeyName: "extras_id_marca_fkey" + columns: ["id_marca"] isOneToOne: false - referencedRelation: 'marcas' - referencedColumns: ['id'] + referencedRelation: "marcas" + referencedColumns: ["id"] }, ] } @@ -133,11 +139,11 @@ export type Database = { } Relationships: [ { - foreignKeyName: 'fotos_categoria_id_unidade_fkey' - columns: ['id_unidade'] + foreignKeyName: "fotos_categoria_id_unidade_fkey" + columns: ["id_unidade"] isOneToOne: false - referencedRelation: 'unidades' - referencedColumns: ['id'] + referencedRelation: "unidades" + referencedColumns: ["id"] }, ] } @@ -213,11 +219,11 @@ export type Database = { } Relationships: [ { - foreignKeyName: 'precos_id_marca_fkey' - columns: ['id_marca'] + foreignKeyName: "precos_id_marca_fkey" + columns: ["id_marca"] isOneToOne: false - referencedRelation: 'marcas' - referencedColumns: ['id'] + referencedRelation: "marcas" + referencedColumns: ["id"] }, ] } @@ -242,25 +248,25 @@ export type Database = { } Relationships: [ { - foreignKeyName: 'reserva_extras_id_extra_fkey' - columns: ['id_extra'] + foreignKeyName: "reserva_extras_id_extra_fkey" + columns: ["id_extra"] isOneToOne: false - referencedRelation: 'extras' - referencedColumns: ['id'] + referencedRelation: "extras" + referencedColumns: ["id"] }, { - foreignKeyName: 'reserva_extras_id_reserva_fkey' - columns: ['id_reserva'] + foreignKeyName: "reserva_extras_id_reserva_fkey" + columns: ["id_reserva"] isOneToOne: false - referencedRelation: 'reservas' - referencedColumns: ['id'] + referencedRelation: "reservas" + referencedColumns: ["id"] }, { - foreignKeyName: 'reserva_extras_id_reserva_fkey' - columns: ['id_reserva'] + foreignKeyName: "reserva_extras_id_reserva_fkey" + columns: ["id_reserva"] isOneToOne: false - referencedRelation: 'vw_reservas_completa' - referencedColumns: ['id'] + referencedRelation: "vw_reservas_completa" + referencedColumns: ["id"] }, ] } @@ -348,18 +354,18 @@ export type Database = { } Relationships: [ { - foreignKeyName: 'reservas_id_suite_fkey' - columns: ['id_suite'] + foreignKeyName: "reservas_id_suite_fkey" + columns: ["id_suite"] isOneToOne: false - referencedRelation: 'suites' - referencedColumns: ['id'] + referencedRelation: "suites" + referencedColumns: ["id"] }, { - foreignKeyName: 'reservas_id_unidade_fkey' - columns: ['id_unidade'] + foreignKeyName: "reservas_id_unidade_fkey" + columns: ["id_unidade"] isOneToOne: false - referencedRelation: 'unidades' - referencedColumns: ['id'] + referencedRelation: "unidades" + referencedColumns: ["id"] }, ] } @@ -423,18 +429,18 @@ export type Database = { } Relationships: [ { - foreignKeyName: 'suites_unidades_id_suite_fkey' - columns: ['id_suite'] + foreignKeyName: "suites_unidades_id_suite_fkey" + columns: ["id_suite"] isOneToOne: false - referencedRelation: 'suites' - referencedColumns: ['id'] + referencedRelation: "suites" + referencedColumns: ["id"] }, { - foreignKeyName: 'suites_unidades_id_unidade_fkey' - columns: ['id_unidade'] + foreignKeyName: "suites_unidades_id_unidade_fkey" + columns: ["id_unidade"] isOneToOne: false - referencedRelation: 'unidades' - referencedColumns: ['id'] + referencedRelation: "unidades" + referencedColumns: ["id"] }, ] } @@ -483,18 +489,18 @@ export type Database = { } Relationships: [ { - foreignKeyName: 'unidades_id_conta_pagamento_fkey' - columns: ['id_conta_pagamento'] + foreignKeyName: "unidades_id_conta_pagamento_fkey" + columns: ["id_conta_pagamento"] isOneToOne: false - referencedRelation: 'contas_pagamento' - referencedColumns: ['id'] + referencedRelation: "contas_pagamento" + referencedColumns: ["id"] }, { - foreignKeyName: 'unidades_id_marca_fkey' - columns: ['id_marca'] + foreignKeyName: "unidades_id_marca_fkey" + columns: ["id_marca"] isOneToOne: false - referencedRelation: 'marcas' - referencedColumns: ['id'] + referencedRelation: "marcas" + referencedColumns: ["id"] }, ] } @@ -516,11 +522,11 @@ export type Database = { } Relationships: [ { - foreignKeyName: 'precos_id_marca_fkey' - columns: ['id_marca'] + foreignKeyName: "precos_id_marca_fkey" + columns: ["id_marca"] isOneToOne: false - referencedRelation: 'marcas' - referencedColumns: ['id'] + referencedRelation: "marcas" + referencedColumns: ["id"] }, ] } @@ -556,18 +562,18 @@ export type Database = { } Relationships: [ { - foreignKeyName: 'reservas_id_suite_fkey' - columns: ['id_suite'] + foreignKeyName: "reservas_id_suite_fkey" + columns: ["id_suite"] isOneToOne: false - referencedRelation: 'suites' - referencedColumns: ['id'] + referencedRelation: "suites" + referencedColumns: ["id"] }, { - foreignKeyName: 'reservas_id_unidade_fkey' - columns: ['id_unidade'] + foreignKeyName: "reservas_id_unidade_fkey" + columns: ["id_unidade"] isOneToOne: false - referencedRelation: 'unidades' - referencedColumns: ['id'] + referencedRelation: "unidades" + referencedColumns: ["id"] }, ] } @@ -592,31 +598,33 @@ export type Database = { } } -type DatabaseWithoutInternals = Omit +type DatabaseWithoutInternals = Omit -type DefaultSchema = DatabaseWithoutInternals[Extract] +type DefaultSchema = DatabaseWithoutInternals[Extract] export type Tables< DefaultSchemaTableNameOrOptions extends - | keyof (DefaultSchema['Tables'] & DefaultSchema['Views']) + | keyof (DefaultSchema["Tables"] & DefaultSchema["Views"]) | { schema: keyof DatabaseWithoutInternals }, TableName extends DefaultSchemaTableNameOrOptions extends { schema: keyof DatabaseWithoutInternals } - ? keyof (DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions['schema']]['Tables'] & - DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions['schema']]['Views']) + ? keyof (DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions["schema"]]["Tables"] & + DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions["schema"]]["Views"]) : never = never, > = DefaultSchemaTableNameOrOptions extends { schema: keyof DatabaseWithoutInternals } - ? (DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions['schema']]['Tables'] & - DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions['schema']]['Views'])[TableName] extends { + ? (DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions["schema"]]["Tables"] & + DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions["schema"]]["Views"])[TableName] extends { Row: infer R } ? R : never - : DefaultSchemaTableNameOrOptions extends keyof (DefaultSchema['Tables'] & DefaultSchema['Views']) - ? (DefaultSchema['Tables'] & DefaultSchema['Views'])[DefaultSchemaTableNameOrOptions] extends { + : DefaultSchemaTableNameOrOptions extends keyof (DefaultSchema["Tables"] & + DefaultSchema["Views"]) + ? (DefaultSchema["Tables"] & + DefaultSchema["Views"])[DefaultSchemaTableNameOrOptions] extends { Row: infer R } ? R @@ -625,23 +633,23 @@ export type Tables< export type TablesInsert< DefaultSchemaTableNameOrOptions extends - | keyof DefaultSchema['Tables'] + | keyof DefaultSchema["Tables"] | { schema: keyof DatabaseWithoutInternals }, TableName extends DefaultSchemaTableNameOrOptions extends { schema: keyof DatabaseWithoutInternals } - ? keyof DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions['schema']]['Tables'] + ? keyof DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions["schema"]]["Tables"] : never = never, > = DefaultSchemaTableNameOrOptions extends { schema: keyof DatabaseWithoutInternals } - ? DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions['schema']]['Tables'][TableName] extends { + ? DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions["schema"]]["Tables"][TableName] extends { Insert: infer I } ? I : never - : DefaultSchemaTableNameOrOptions extends keyof DefaultSchema['Tables'] - ? DefaultSchema['Tables'][DefaultSchemaTableNameOrOptions] extends { + : DefaultSchemaTableNameOrOptions extends keyof DefaultSchema["Tables"] + ? DefaultSchema["Tables"][DefaultSchemaTableNameOrOptions] extends { Insert: infer I } ? I @@ -650,23 +658,23 @@ export type TablesInsert< export type TablesUpdate< DefaultSchemaTableNameOrOptions extends - | keyof DefaultSchema['Tables'] + | keyof DefaultSchema["Tables"] | { schema: keyof DatabaseWithoutInternals }, TableName extends DefaultSchemaTableNameOrOptions extends { schema: keyof DatabaseWithoutInternals } - ? keyof DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions['schema']]['Tables'] + ? keyof DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions["schema"]]["Tables"] : never = never, > = DefaultSchemaTableNameOrOptions extends { schema: keyof DatabaseWithoutInternals } - ? DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions['schema']]['Tables'][TableName] extends { + ? DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions["schema"]]["Tables"][TableName] extends { Update: infer U } ? U : never - : DefaultSchemaTableNameOrOptions extends keyof DefaultSchema['Tables'] - ? DefaultSchema['Tables'][DefaultSchemaTableNameOrOptions] extends { + : DefaultSchemaTableNameOrOptions extends keyof DefaultSchema["Tables"] + ? DefaultSchema["Tables"][DefaultSchemaTableNameOrOptions] extends { Update: infer U } ? U @@ -675,36 +683,36 @@ export type TablesUpdate< export type Enums< DefaultSchemaEnumNameOrOptions extends - | keyof DefaultSchema['Enums'] + | keyof DefaultSchema["Enums"] | { schema: keyof DatabaseWithoutInternals }, EnumName extends DefaultSchemaEnumNameOrOptions extends { schema: keyof DatabaseWithoutInternals } - ? keyof DatabaseWithoutInternals[DefaultSchemaEnumNameOrOptions['schema']]['Enums'] + ? keyof DatabaseWithoutInternals[DefaultSchemaEnumNameOrOptions["schema"]]["Enums"] : never = never, > = DefaultSchemaEnumNameOrOptions extends { schema: keyof DatabaseWithoutInternals } - ? DatabaseWithoutInternals[DefaultSchemaEnumNameOrOptions['schema']]['Enums'][EnumName] - : DefaultSchemaEnumNameOrOptions extends keyof DefaultSchema['Enums'] - ? DefaultSchema['Enums'][DefaultSchemaEnumNameOrOptions] + ? DatabaseWithoutInternals[DefaultSchemaEnumNameOrOptions["schema"]]["Enums"][EnumName] + : DefaultSchemaEnumNameOrOptions extends keyof DefaultSchema["Enums"] + ? DefaultSchema["Enums"][DefaultSchemaEnumNameOrOptions] : never export type CompositeTypes< PublicCompositeTypeNameOrOptions extends - | keyof DefaultSchema['CompositeTypes'] + | keyof DefaultSchema["CompositeTypes"] | { schema: keyof DatabaseWithoutInternals }, CompositeTypeName extends PublicCompositeTypeNameOrOptions extends { schema: keyof DatabaseWithoutInternals } - ? keyof DatabaseWithoutInternals[PublicCompositeTypeNameOrOptions['schema']]['CompositeTypes'] + ? keyof DatabaseWithoutInternals[PublicCompositeTypeNameOrOptions["schema"]]["CompositeTypes"] : never = never, > = PublicCompositeTypeNameOrOptions extends { schema: keyof DatabaseWithoutInternals } - ? DatabaseWithoutInternals[PublicCompositeTypeNameOrOptions['schema']]['CompositeTypes'][CompositeTypeName] - : PublicCompositeTypeNameOrOptions extends keyof DefaultSchema['CompositeTypes'] - ? DefaultSchema['CompositeTypes'][PublicCompositeTypeNameOrOptions] + ? DatabaseWithoutInternals[PublicCompositeTypeNameOrOptions["schema"]]["CompositeTypes"][CompositeTypeName] + : PublicCompositeTypeNameOrOptions extends keyof DefaultSchema["CompositeTypes"] + ? DefaultSchema["CompositeTypes"][PublicCompositeTypeNameOrOptions] : never export const Constants = { @@ -712,3 +720,5 @@ export const Constants = { Enums: {}, }, } as const +A new version of Supabase CLI is available: v2.90.0 (currently installed v2.48.3) +We recommend updating regularly for new features and bug fixes: https://supabase.com/docs/guides/cli/getting-started#updating-the-supabase-cli diff --git a/supabase/migrations/20260413000002_seed_dados_teste.sql b/supabase/migrations/20260413000002_seed_dados_teste.sql new file mode 100644 index 0000000..5e28989 --- /dev/null +++ b/supabase/migrations/20260413000002_seed_dados_teste.sql @@ -0,0 +1,86 @@ +-- 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 $$;