Files
openmonetis/src/features/transactions/actions/fetch-by-id.ts
Felipe Coutinho 0ab3298cef feat(anexos): página de galeria de comprovantes e documentos
Adiciona rota `/attachments` com visualização de todos os anexos do
usuário em grade, visualização inline de imagem e PDF, navegação entre
arquivos do mesmo lançamento e download direto.

Inclui também:
- API REST em `/api/attachments` para servir os arquivos
- Actions `fetch-by-id` e `fetch-dialog-options` em transactions
- Item "Anexos" adicionado à navbar
- `formatBytes` extraído para `src/shared/utils/number.ts`
- Migrations de banco atualizadas
- Fix: uploads e remoções de anexo agora funcionam para todos os
  lançamentos, não apenas os pertencentes a séries

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-01 14:13:54 +00:00

24 lines
772 B
TypeScript

"use server";
import { eq } from "drizzle-orm";
import { transactions } from "@/db/schema";
import { mapTransactionsData } from "@/features/transactions/page-helpers";
import { fetchTransactionsWithRelations } from "@/features/transactions/queries";
import { getUser } from "@/shared/lib/auth/server";
import type { TransactionItem } from "../components/types";
export async function fetchTransactionByIdAction(
transactionId: string,
): Promise<TransactionItem | null> {
const user = await getUser();
const rows = await fetchTransactionsWithRelations({
filters: [
eq(transactions.id, transactionId),
eq(transactions.userId, user.id),
],
excludeInitialBalanceFromIncome: false,
});
const mapped = mapTransactionsData(rows);
return mapped[0] ?? null;
}