eletrotupi / tcc/ api/src/services/export/export.service.ts8480619e654d675a3b0327e5df6b8b94dab2c32b
1009 B | 27 lines Raw
1
import { serializeCsv } from "@app/services/export/csv.serializer";
2
import { gatherExportData } from "@app/services/export/data.gatherer";
3
import { buildManifest } from "@app/services/export/manifest.builder";
4
import {
5
  moodComponentTable,
6
  moodTable,
7
  profileTable,
8
} from "@app/services/export/table.descriptors";
9
import { buildZip } from "@app/services/export/zip.builder";
10
import { ExportArchive, ExportFile } from "@app/services/export/types";
11

12
export async function buildExportArchive(userId: number): Promise<ExportArchive> {
13
  const { user, moods, moodComponents } = await gatherExportData(userId);
14
  const generatedAt = new Date();
15

16
  const files: ExportFile[] = [
17
    serializeCsv(profileTable, [user]),
18
    serializeCsv(moodTable, moods),
19
    serializeCsv(moodComponentTable, moodComponents),
20
  ];
21
  const manifest = buildManifest(files, generatedAt);
22

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