eletrotupi / tcc/ api/src/services/export/export.service.ts19821da369359c6ba1cc9b4afa45b47d0e72f116
927 B | 24 lines Raw
1
import { findUserById } from "@app/services/user.service";
2
import { serializeCsv } from "@app/services/export/csv.serializer";
3
import { buildManifest } from "@app/services/export/manifest.builder";
4
import { profileTable } from "@app/services/export/table.descriptors";
5
import { buildZip } from "@app/services/export/zip.builder";
6
import { ExportArchive, ExportFile } from "@app/services/export/types";
7

8
export async function buildExportArchive(userId: number): Promise<ExportArchive> {
9
  const user = await findUserById(userId);
10

11
  if (!user) {
12
    throw new Error(`Usuário ${userId} não encontrado para exportação`);
13
  }
14

15
  const generatedAt = new Date();
16

17
  const files: ExportFile[] = [serializeCsv(profileTable, [user])];
18
  const manifest = buildManifest(files, generatedAt);
19

20
  return {
21
    filename: `nexo-dados-${generatedAt.toISOString().slice(0, 10)}.zip`,
22
    buffer: await buildZip([...files, manifest]),
23
  };
24
}