File size: 1,729 Bytes
d491754
eb78df6
da50ce9
eb78df6
 
 
da50ce9
eb78df6
 
 
da50ce9
eb78df6
 
 
 
 
da50ce9
eb78df6
 
 
da50ce9
eb78df6
 
d491754
 
 
da50ce9
d491754
 
 
da50ce9
d491754
eb78df6
 
da50ce9
eb78df6
 
 
da50ce9
eb78df6
 
 
da50ce9
 
eb78df6
 
 
da50ce9
eb78df6
 
 
da50ce9
eb78df6
 
 
da50ce9
eb78df6
 
 
da50ce9
eb78df6
 
 
da50ce9
eb78df6
 
 
da50ce9
eb78df6
 
 
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
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;
}

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: {} })
  @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: ["string"] })
  targetMuscles: any;

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

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