| 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 | activityTable,
|
| 6 | appointmentTable,
|
| 7 | careActionTable,
|
| 8 | medicineLogTable,
|
| 9 | medicineRegimenTable,
|
| 10 | moodComponentTable,
|
| 11 | moodTable,
|
| 12 | profileTable,
|
| 13 | sleepRecordTable,
|
| 14 | triggerMoodLinkTable,
|
| 15 | triggerTable,
|
| 16 | } from "@app/services/export/table.descriptors";
|
| 17 | import { buildZip } from "@app/services/export/zip.builder";
|
| 18 | import { ExportArchive, ExportFile } from "@app/services/export/types";
|
| 19 |
|
| 20 | export async function buildExportArchive(userId: number): Promise<ExportArchive> {
|
| 21 | const {
|
| 22 | user,
|
| 23 | moods,
|
| 24 | moodComponents,
|
| 25 | sleepRecords,
|
| 26 | triggers,
|
| 27 | triggerMoodLinks,
|
| 28 | careActions,
|
| 29 | medicineLogs,
|
| 30 | appointments,
|
| 31 | activities,
|
| 32 | medicineRegimens,
|
| 33 | } = await gatherExportData(userId);
|
| 34 | const generatedAt = new Date();
|
| 35 |
|
| 36 | const files: ExportFile[] = [
|
| 37 | serializeCsv(profileTable, [user]),
|
| 38 | serializeCsv(moodTable, moods),
|
| 39 | serializeCsv(moodComponentTable, moodComponents),
|
| 40 | serializeCsv(sleepRecordTable, sleepRecords),
|
| 41 | serializeCsv(triggerTable, triggers),
|
| 42 | serializeCsv(triggerMoodLinkTable, triggerMoodLinks),
|
| 43 | serializeCsv(careActionTable, careActions),
|
| 44 | serializeCsv(medicineLogTable, medicineLogs),
|
| 45 | serializeCsv(appointmentTable, appointments),
|
| 46 | serializeCsv(activityTable, activities),
|
| 47 | serializeCsv(medicineRegimenTable, medicineRegimens),
|
| 48 | ];
|
| 49 | const manifest = buildManifest(files, generatedAt);
|
| 50 |
|
| 51 | return {
|
| 52 | filename: `nexo-dados-${generatedAt.toISOString().slice(0, 10)}.zip`,
|
| 53 | buffer: await buildZip([...files, manifest]),
|
| 54 | };
|
| 55 | }
|