This commit is contained in:
2026-03-03 16:32:50 +00:00
parent 2f4b145552
commit 6590256201

View File

@@ -442,8 +442,21 @@ export const AppProvider = ({ children }: { children: React.ReactNode }) => {
};
const updateShopDetails: AppContextValue['updateShopDetails'] = async (shopId, payload) => {
// Preparar os dados para o Supabase: remover arrays relacionais que não existem como colunas na tabela shops
const dbPayload: any = { ...payload };
delete dbPayload.services;
delete dbPayload.products;
delete dbPayload.barbers;
delete dbPayload.id; // Não atualizar a primary key acidentalmente
// Mapear imageUrl para image_url (o Supabase usa snake_case em colunas por padrão, então isto resolve ambos os casos)
if (dbPayload.imageUrl !== undefined) {
dbPayload.image_url = dbPayload.imageUrl;
delete dbPayload.imageUrl;
}
// Executa o update na Base de Dados e pede de volta a linha modificada para sabermos se o update afetou 0 linhas
const { data, error } = await supabase.from('shops').update(payload).eq('id', shopId).select();
const { data, error } = await supabase.from('shops').update(dbPayload).eq('id', shopId).select();
// Se o supabase mandar um erro, mandamos o erro para fora para a UI apanhar
if (error) {
@@ -451,7 +464,7 @@ export const AppProvider = ({ children }: { children: React.ReactNode }) => {
throw error;
}
// Se o update funcionou mas não afetou nenhuma linha (data.length === 0), significa que a loja NUNCA foi inserida com sucesso no registo antes (talvez por RLS ou porque o trigger não funcionou).
// Se o update funcionou mas não afetou nenhuma linha (data.length === 0), significa que a loja NUNCA foi inserida com sucesso no registo.
// Neste caso, forçamos um UPSERT completo!
if (data && data.length === 0) {
console.warn('A loja não existia na base de dados! Forçando a criação (upsert)...');
@@ -462,7 +475,7 @@ export const AppProvider = ({ children }: { children: React.ReactNode }) => {
name: existingShopLocal?.name || 'Barbearia',
address: existingShopLocal?.address || 'Endereço a definir',
rating: 0,
...payload
...dbPayload
});
if (upsertErr) {