From 3889bca7e0c0f43e821f21513c5434f5971b3f5f Mon Sep 17 00:00:00 2001 From: adm01-debug Date: Sat, 30 May 2026 12:14:45 -0300 Subject: [PATCH] refactor(engraving): migra selects diretos do external-db-bridge para invokeExternalDb MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit useEngravingWizard fazia 2 SELECTs chamando supabase.functions.invoke('external-db-bridge') diretamente — a Edge Function foi descontinuada (410), entao essas queries quebravam. Migra os 2 SELECTs (catalogo de tecnicas em 'tecnicas_gravacao' e areas salvas em 'print_area_techniques') para invokeExternalDb (PostgREST nativo). Ambas as tabelas ja estao na whitelist do rest-native; 'tecnicas_gravacao' usa o adaptador de colunas PT. As MUTACOES (insert/update/delete) permanecem inalteradas — a lacuna de escrita pos-bridge e tratada separadamente. --- .../sections/engraving/useEngravingWizard.ts | 35 ++++++++----------- 1 file changed, 14 insertions(+), 21 deletions(-) diff --git a/src/components/admin/products/sections/engraving/useEngravingWizard.ts b/src/components/admin/products/sections/engraving/useEngravingWizard.ts index cd3b3c42b..696b3f5f1 100644 --- a/src/components/admin/products/sections/engraving/useEngravingWizard.ts +++ b/src/components/admin/products/sections/engraving/useEngravingWizard.ts @@ -11,6 +11,7 @@ import { useState, useCallback, useMemo, useRef } from 'react'; import { useQuery, useQueryClient, useMutation } from '@tanstack/react-query'; import { supabase } from '@/integrations/supabase/client'; +import { invokeExternalDb } from '@/lib/external-db'; import { toast } from 'sonner'; import { sanitizeError } from '@/lib/security/sanitize-error'; import { @@ -53,17 +54,13 @@ export function useEngravingWizard(productId: string | undefined, isEdit: boolea const { data: techniques = [], isLoading: loadingTechs } = useQuery({ queryKey: ['external-techniques-catalog'], queryFn: async (): Promise => { - const { data, error } = await supabase.functions.invoke('external-db-bridge', { - body: { - table: 'tecnicas_gravacao', - operation: 'select', - orderBy: { column: 'nome', ascending: true }, - limit: 200, - }, + const result = await invokeExternalDb({ + table: 'tecnicas_gravacao', + operation: 'select', + orderBy: { column: 'nome', ascending: true }, + limit: 200, }); - if (error) throw new Error(error.message); - if (!data?.success) throw new Error(data?.error || 'Erro ao buscar técnicas'); - return data.data?.records || []; + return result.records || []; }, staleTime: 10 * 60 * 1000, }); @@ -78,18 +75,14 @@ export function useEngravingWizard(productId: string | undefined, isEdit: boolea const { data: savedAreas = [], isLoading: loadingAreas } = useQuery({ queryKey: ['print-area-techniques', productId], queryFn: async (): Promise => { - const { data, error } = await supabase.functions.invoke('external-db-bridge', { - body: { - table: 'print_area_techniques', - operation: 'select', - filters: { product_id: productId }, - orderBy: { column: 'technique_order', ascending: true }, - limit: 100, - }, + const result = await invokeExternalDb({ + table: 'print_area_techniques', + operation: 'select', + filters: { product_id: productId }, + orderBy: { column: 'technique_order', ascending: true }, + limit: 100, }); - if (error) throw new Error(error.message); - if (!data?.success) throw new Error(data?.error || 'Erro ao buscar áreas'); - const records: PrintAreaTechnique[] = data.data?.records || []; + const records: PrintAreaTechnique[] = result.records || []; return records.map((area) => enrichArea(area, techById)); }, enabled: !!productId && isEdit && techniques.length > 0,