eletrotupi / tcc/ api/src/services/export/table.descriptors.ts8480619e654d675a3b0327e5df6b8b94dab2c32b
1.9 KB | 57 lines Raw
1
import { Mood, MoodComponent, User } from "@prisma/client";
2

3
import {
4
  baseMoodLabel,
5
  intensityLabel,
6
  moodComponentLabel,
7
} from "@app/services/export/label.map";
8
import { CsvTable } from "@app/services/export/types";
9

10
const booleanLabel = (value: boolean): string => (value ? "Sim" : "Não");
11

12
export const profileTable: CsvTable<User> = {
13
  filename: "profile.csv",
14
  columns: [
15
    { header: "id", value: (user) => user.id },
16
    { header: "Nome", value: (user) => user.firstName },
17
    { header: "Sobrenome", value: (user) => user.lastName },
18
    { header: "Email", value: (user) => user.email },
19
    { header: "Ativo", value: (user) => booleanLabel(user.active) },
20
    {
21
      header: "Notificações",
22
      value: (user) => booleanLabel(user.notificationsEnabled),
23
    },
24
    { header: "Lembrete diário", value: (user) => user.dailyReminderTime },
25
    { header: "Criado em", value: (user) => user.createdAt },
26
    { header: "Atualizado em", value: (user) => user.updatedAt },
27
  ],
28
};
29

30
export const moodTable: CsvTable<Mood> = {
31
  filename: "moods.csv",
32
  columns: [
33
    { header: "id", value: (mood) => mood.id },
34
    { header: "Humor", value: (mood) => baseMoodLabel[mood.selectedMood] },
35
    { header: "Ansiedade", value: (mood) => mood.anxietyLevel },
36
    { header: "Estresse", value: (mood) => mood.stressLevel },
37
    { header: "Energia", value: (mood) => mood.energyLevel },
38
    { header: "Momento", value: (mood) => mood.moment },
39
    { header: "Anotação", value: (mood) => mood.annotation },
40
  ],
41
};
42

43
export const moodComponentTable: CsvTable<MoodComponent> = {
44
  filename: "mood_components.csv",
45
  columns: [
46
    { header: "id", value: (component) => component.id },
47
    { header: "mood_id", value: (component) => component.moodId },
48
    {
49
      header: "Sentimento",
50
      value: (component) => moodComponentLabel[component.component],
51
    },
52
    {
53
      header: "Intensidade",
54
      value: (component) => intensityLabel[component.intensity],
55
    },
56
  ],
57
};