Fix: Supabase table name issue

The errors indicate a problem with the Supabase table names being passed as strings instead of the correct type. This is causing type errors in `TransactionForm.tsx` and `transacaoService.ts`. The fix will involve ensuring the correct table names are used when calling Supabase functions.
This commit is contained in:
gpt-engineer-app[bot] 2025-05-18 13:10:04 +00:00
parent c05ba05353
commit b02d7f29e6
2 changed files with 16 additions and 14 deletions

View File

@ -91,9 +91,10 @@ export function TransactionForm({ onSuccess, onCancel }: TransactionFormProps) {
// Cria o nome da tabela dinâmica para este usuário // Cria o nome da tabela dinâmica para este usuário
const tabelaTransacoes = `transacoes_${userId}`; const tabelaTransacoes = `transacoes_${userId}`;
// Insere a transação na tabela específica do usuário // Insere a transação na tabela específica do usuário usando cast para any
// para contornar a verificação estática de tipos
const { error } = await supabase const { error } = await supabase
.from(tabelaTransacoes) .from(tabelaTransacoes as any)
.insert([ .insert([
{ {
user: userId, user: userId,

View File

@ -13,8 +13,9 @@ export async function getTransacoes(): Promise<Transaction[]> {
const tabelaTransacoes = `transacoes_${userId}`; const tabelaTransacoes = `transacoes_${userId}`;
// 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 const { data, error } = await supabase
.from(tabelaTransacoes) .from(tabelaTransacoes as any)
.select('*') .select('*')
.order('quando', { ascending: false }); .order('quando', { ascending: false });
@ -26,7 +27,7 @@ export async function getTransacoes(): Promise<Transaction[]> {
console.log("Transações encontradas:", data); console.log("Transações encontradas:", data);
// Transformar os dados recebidos para o formato esperado, normalizando os tipos // Transformar os dados recebidos para o formato esperado, normalizando os tipos
return data.map((item) => ({ return data.map((item: any) => ({
id: item.id.toString(), id: item.id.toString(),
user: item.user || '', user: item.user || '',
created_at: item.created_at, created_at: item.created_at,
@ -51,7 +52,7 @@ export async function getTransactionSummary() {
const tabelaTransacoes = `transacoes_${userId}`; const tabelaTransacoes = `transacoes_${userId}`;
const { data, error } = await supabase const { data, error } = await supabase
.from(tabelaTransacoes) .from(tabelaTransacoes as any)
.select('tipo, valor'); .select('tipo, valor');
if (error) { if (error) {
@ -62,12 +63,12 @@ export async function getTransactionSummary() {
console.log("Dados para resumo encontrados:", data); console.log("Dados para resumo encontrados:", data);
const totalReceitas = data const totalReceitas = data
.filter(item => item.tipo?.toLowerCase() === 'receita') .filter((item: any) => item.tipo?.toLowerCase() === 'receita')
.reduce((sum, item) => sum + Math.abs(item.valor || 0), 0); .reduce((sum: number, item: any) => sum + Math.abs(item.valor || 0), 0);
const totalDespesas = data const totalDespesas = data
.filter(item => (item.tipo?.toLowerCase() === 'despesa')) .filter((item: any) => (item.tipo?.toLowerCase() === 'despesa'))
.reduce((sum, item) => sum + Math.abs(item.valor || 0), 0); .reduce((sum: number, item: any) => sum + Math.abs(item.valor || 0), 0);
const resultado = { const resultado = {
receitas: totalReceitas, receitas: totalReceitas,
@ -92,7 +93,7 @@ export async function getCategorySummary() {
// Buscar todas as transações que são despesas, independente da capitalização // Buscar todas as transações que são despesas, independente da capitalização
const { data, error } = await supabase const { data, error } = await supabase
.from(tabelaTransacoes) .from(tabelaTransacoes as any)
.select('categoria, valor, tipo'); .select('categoria, valor, tipo');
if (error) { if (error) {
@ -103,7 +104,7 @@ export async function getCategorySummary() {
console.log("Dados de categorias encontrados:", data); console.log("Dados de categorias encontrados:", data);
// Filtrar usando JavaScript para pegar todas as despesas (case insensitive) // Filtrar usando JavaScript para pegar todas as despesas (case insensitive)
const despesasData = data.filter(item => const despesasData = data.filter((item: any) =>
item.tipo?.toLowerCase() === 'despesa' item.tipo?.toLowerCase() === 'despesa'
); );
@ -111,7 +112,7 @@ export async function getCategorySummary() {
// Agrupar por categoria // Agrupar por categoria
const categorias: Record<string, number> = {}; const categorias: Record<string, number> = {};
despesasData.forEach(item => { despesasData.forEach((item: any) => {
if (item.categoria && item.valor) { if (item.categoria && item.valor) {
const categoriaKey = item.categoria || 'Outros'; const categoriaKey = item.categoria || 'Outros';
if (!categorias[categoriaKey]) { if (!categorias[categoriaKey]) {
@ -151,7 +152,7 @@ export async function getMonthlyData() {
const tabelaTransacoes = `transacoes_${userId}`; const tabelaTransacoes = `transacoes_${userId}`;
const { data, error } = await supabase const { data, error } = await supabase
.from(tabelaTransacoes) .from(tabelaTransacoes as any)
.select('quando, valor, tipo'); .select('quando, valor, tipo');
if (error) { if (error) {
@ -170,7 +171,7 @@ export async function getMonthlyData() {
}); });
// Agrupar por mês, normalizando o tipo // Agrupar por mês, normalizando o tipo
data.forEach(item => { data.forEach((item: any) => {
if (item.quando && item.valor) { if (item.quando && item.valor) {
const data = new Date(item.quando); const data = new Date(item.quando);
const mesIndex = data.getMonth(); const mesIndex = data.getMonth();