File size: 1,940 Bytes
d491754
eb78df6
da50ce9
eb78df6
 
 
da50ce9
eb78df6
 
 
da50ce9
eb78df6
 
 
 
 
da50ce9
eb78df6
 
 
da50ce9
eb78df6
 
d491754
339fa48
 
 
 
 
 
 
 
 
 
d491754
 
da50ce9
d491754
 
 
da50ce9
d491754
eb78df6
 
da50ce9
eb78df6
 
 
da50ce9
eb78df6
 
 
ce1ade1
da50ce9
eb78df6
 
 
da50ce9
eb78df6
 
 
da50ce9
eb78df6
 
 
da50ce9
eb78df6
 
 
da50ce9
eb78df6
 
 
339fa48
eb78df6
 
 
da50ce9
eb78df6
 
 
ce1ade1
da50ce9
eb78df6
9d56cbc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
import { Expose, Transform } from "class-transformer";
import { serialize } from "@helpers/serialize";
import { SwaggerResponseProperty } from "@lib/decorators/swagger-response-property.decorator";

class ExpectedDurationRange {
  @Expose()
  @SwaggerResponseProperty({ type: "number" })
  min: number;

  @Expose()
  @SwaggerResponseProperty({ type: "number" })
  max: number;
}

class Media {
  @Expose()
  @SwaggerResponseProperty({ type: "string" })
  type: string;

  @Expose()
  @SwaggerResponseProperty({ type: "string" })
  url: string;
}

class TargetMuscles {
  @Expose()
  @SwaggerResponseProperty({ type: "string" })
  primary: string;

  @Expose()
  @SwaggerResponseProperty({ type: "string" })
  secondary: string;
}

export class ExerciseSerialization {
  @Expose({ name: "_id" })
  @SwaggerResponseProperty({ type: "string" })
  id: string;

  @Expose()
  @SwaggerResponseProperty({ type: "string" })
  name: string;

  @Expose()
  @SwaggerResponseProperty({ type: "string" })
  category: string;

  @Expose()
  @SwaggerResponseProperty({ type: "number" })
  duration: number | null;

  @Expose({ name: "expectedDurationRange" })
  @SwaggerResponseProperty({ type: ExpectedDurationRange })
  @Transform(({ value }) => serialize(value, ExpectedDurationRange))
  expectedDurationRange: object;

  @Expose()
  @SwaggerResponseProperty({ type: "number" })
  reps: number;

  @Expose()
  @SwaggerResponseProperty({ type: "number" })
  sets: number;

  @Expose()
  @SwaggerResponseProperty({ type: "string" })
  instructions: string;

  @Expose()
  @SwaggerResponseProperty({ type: "string" })
  benefits: string;

  @Expose()
  @SwaggerResponseProperty({ type: [TargetMuscles] })
  targetMuscles: any;

  @Expose()
  @SwaggerResponseProperty({ type: ["string"] })
  equipments: any;

  @Expose({ name: "media" })
  @SwaggerResponseProperty({ type: Media })
  @Transform(({ value }) => serialize(value, Media))
  media: object;
}