Fix: Transaction save error

Investigate and resolve an issue where saving new transactions fails, potentially unrelated to the database.
This commit is contained in:
gpt-engineer-app[bot] 2025-05-18 13:19:36 +00:00
parent 23ac89e158
commit 22136fc8a1
2 changed files with 36 additions and 5 deletions

View File

@ -88,16 +88,31 @@ export function TransactionForm({ onSuccess, onCancel }: TransactionFormProps) {
? Math.abs(valorNumerico)
: Math.abs(valorNumerico);
// Obtém a sessão atual para acessar o token JWT
const { data: sessionData, error: sessionError } = await supabase.auth.getSession();
if (sessionError || !sessionData.session) {
console.error('Erro ao obter sessão:', sessionError);
toast({
title: "Erro de autenticação",
description: "Não foi possível validar sua sessão. Tente fazer login novamente.",
variant: "destructive"
});
setIsSubmitting(false);
return;
}
// Cria o nome da tabela dinâmica para este usuário
const tabelaTransacoes = `transacoes_${userId}`;
// Insere a transação na tabela específica do usuário usando cast para any
// para contornar a verificação estática de tipos
console.log(`Inserindo transação na tabela ${tabelaTransacoes} para o usuário ${userId}`);
// Insere a transação na tabela específica do usuário
const { error } = await supabase
.from(tabelaTransacoes as any)
.insert([
{
usuario_id: userId, // Alterado de user para usuario_id
usuario_id: userId,
estabelecimento: data.estabelecimento,
valor: valorFinal,
detalhes: data.detalhes,
@ -111,7 +126,7 @@ export function TransactionForm({ onSuccess, onCancel }: TransactionFormProps) {
console.error('Erro ao salvar transação:', error);
toast({
title: "Erro ao salvar",
description: "Não foi possível salvar a transação",
description: `Não foi possível salvar a transação: ${error.message}`,
variant: "destructive"
});
} else {

View File

@ -11,8 +11,17 @@ export async function getTransacoes(): Promise<Transaction[]> {
return [];
}
// Verificar se temos uma sessão válida
const { data: sessionData } = await supabase.auth.getSession();
if (!sessionData.session) {
console.error('Sessão não encontrada');
return [];
}
const tabelaTransacoes = `transacoes_${userId}`;
console.log(`Consultando tabela: ${tabelaTransacoes}`);
// Usando .rpc para chamar uma função SQL ou .from() com cast para any para contornar a checagem de tipos
const { data, error } = await supabase
.from(tabelaTransacoes as any)
@ -29,7 +38,7 @@ export async function getTransacoes(): Promise<Transaction[]> {
// Transformar os dados recebidos para o formato esperado, normalizando os tipos
return data.map((item: any) => ({
id: item.id.toString(),
user: item.usuario_id || '', // Alterado de user para usuario_id
user: item.usuario_id || '',
created_at: item.created_at,
valor: item.tipo?.toLowerCase() === 'receita' ? Math.abs(item.valor || 0) : -Math.abs(item.valor || 0),
quando: item.quando || new Date().toISOString(),
@ -49,6 +58,13 @@ export async function getTransactionSummary() {
return { receitas: 0, despesas: 0, saldo: 0 };
}
// Verificar se temos uma sessão válida
const { data: sessionData } = await supabase.auth.getSession();
if (!sessionData.session) {
console.error('Sessão não encontrada');
return { receitas: 0, despesas: 0, saldo: 0 };
}
const tabelaTransacoes = `transacoes_${userId}`;
const { data, error } = await supabase