mirror of
https://github.com/felipegcoutinho/openmonetis.git
synced 2026-05-09 11:01:45 +00:00
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>
This commit is contained in:
23
src/features/transactions/actions/fetch-by-id.ts
Normal file
23
src/features/transactions/actions/fetch-by-id.ts
Normal file
@@ -0,0 +1,23 @@
|
||||
"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;
|
||||
}
|
||||
Reference in New Issue
Block a user