From aeb1b17c630c4c451cc15d8be19e56b51ed01a72 Mon Sep 17 00:00:00 2001 From: 230417 <230417@epvc.pt> Date: Tue, 10 Mar 2026 16:40:54 +0000 Subject: [PATCH] . --- web/src/context/AppContext.tsx | 15 ++++----------- web/src/lib/check_db.ts | 34 +++++++++++++++++++++++++++------- 2 files changed, 31 insertions(+), 18 deletions(-) diff --git a/web/src/context/AppContext.tsx b/web/src/context/AppContext.tsx index 8206874..06728a2 100644 --- a/web/src/context/AppContext.tsx +++ b/web/src/context/AppContext.tsx @@ -123,17 +123,10 @@ export const AppProvider = ({ children }: { children: React.ReactNode }) => { })); setState((s) => { - // A BD é a fonte de verdade. - // Para a loja do utilizador atual: se ficou na BD com dados antigos, - // aplicar por cima o que o utilizador alterou nesta sessão. - const mergedShops: BarberShop[] = fetchedShops.map((fetchedShop) => { - const localVersion = s.shops.find(ls => ls.id === fetchedShop.id); - if (localVersion && s.user?.shopId === fetchedShop.id) { - // Dar prioridade ao que o utilizador alterou localmente nesta sessão - return { ...fetchedShop, ...localVersion }; - } - return fetchedShop; - }); + // A BD é agora a única fonte de verdade. + // Como o CRUD já insere na BD antes do refresh, a sobreposição com 'localVersion' foi + // eliminada para impedir a supressão das queries que vêm da Base de Dados. + const mergedShops: BarberShop[] = [...fetchedShops]; // Se a loja do utilizador NÃO está na BD (novo registo ainda não guardado), // adicionar apenas essa loja da memória local — SEM adicionar outras. diff --git a/web/src/lib/check_db.ts b/web/src/lib/check_db.ts index f0fad01..bd80f29 100644 --- a/web/src/lib/check_db.ts +++ b/web/src/lib/check_db.ts @@ -6,15 +6,35 @@ const supabaseAnonKey = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYm const supabase = createClient(supabaseUrl, supabaseAnonKey); async function check() { - console.log("Checking columns..."); - const { data: bCols } = await supabase.from('barbers').select('*').limit(1); - console.log("Barbers columns:", bCols ? Object.keys(bCols[0] || {}) : "No data"); + console.log("Checking insert..."); - const { data: sCols } = await supabase.from('services').select('*').limit(1); - console.log("Services columns:", sCols ? Object.keys(sCols[0] || {}) : "No data"); + // Auth with a test user or just try anon insert. + // If it requires user login, we can login with the previously created user: test_shop_1773154696588@test.com + const { data: authData, error: authErr } = await supabase.auth.signInWithPassword({ + email: 'test_shop_1773154696588@test.com', + password: 'Password123!' + }); - const { data: pCols } = await supabase.from('products').select('*').limit(1); - console.log("Products columns:", pCols ? Object.keys(pCols[0] || {}) : "No data"); + if (authErr && !authData?.user) { + console.error("Login err:", authErr); + } + + const userId = authData.user?.id; + const { data: shops } = await supabase.from('shops').select('id').eq('owner_id', userId).limit(1); + if (!shops || shops.length === 0) { + console.error("No shops found for user", userId); + return; + } + + const shopId = shops[0].id; + + console.log("Attempting to insert service to shop:", shopId); + + const { data, error } = await supabase.from('services').insert([ + { shop_id: shopId, name: 'Test Service', price: 10, duration: 15 } + ]).select(); + + console.log("Insert result:", { data, error }); } check();