Hozifa Elgharbawy commited on
Commit
b561958
·
1 Parent(s): c7ae7c3

refactor: Add image property to meal serialization and populate serialization

Browse files
src/common/models/meal.model.ts CHANGED
@@ -4,6 +4,7 @@ import { MealType } from "@common/enums/meal-type.enum";
4
  export interface IMeal {
5
  name: string;
6
  created_at: Date;
 
7
  ingredients: string[];
8
  calories: number;
9
  carbs: number;
@@ -15,6 +16,7 @@ export interface IMeal {
15
  const mealSchema = new Schema({
16
  name: { type: String, required: true, unique: true, dropDups: true },
17
  created_at: { type: Date, default: Date.now() },
 
18
  type: {
19
  type: String,
20
  enum: MealType,
 
4
  export interface IMeal {
5
  name: string;
6
  created_at: Date;
7
+ image: string;
8
  ingredients: string[];
9
  calories: number;
10
  carbs: number;
 
16
  const mealSchema = new Schema({
17
  name: { type: String, required: true, unique: true, dropDups: true },
18
  created_at: { type: Date, default: Date.now() },
19
+ image: { type: String, required: true },
20
  type: {
21
  type: String,
22
  enum: MealType,
src/common/serializers/meal.serialization.ts CHANGED
@@ -15,6 +15,10 @@ export class MealSerialization {
15
  @SwaggerResponseProperty({ type: "string" })
16
  created_at: Date;
17
 
 
 
 
 
18
  @Expose()
19
  @SwaggerResponseProperty({ type: ["string"] })
20
  ingredients: any;
 
15
  @SwaggerResponseProperty({ type: "string" })
16
  created_at: Date;
17
 
18
+ @Expose()
19
+ @SwaggerResponseProperty({ type: "string" })
20
+ image: string;
21
+
22
  @Expose()
23
  @SwaggerResponseProperty({ type: ["string"] })
24
  ingredients: any;
src/common/serializers/mealPopulate.serialization.ts CHANGED
@@ -17,6 +17,10 @@ export class MealPopulateSerialization {
17
  @SwaggerResponseProperty({ type: "string" })
18
  created_at: Date;
19
 
 
 
 
 
20
  @Expose()
21
  @SwaggerResponseProperty({ type: [IngredientSerialization] })
22
  @Transform(
 
17
  @SwaggerResponseProperty({ type: "string" })
18
  created_at: Date;
19
 
20
+ @Expose()
21
+ @SwaggerResponseProperty({ type: "string" })
22
+ image: string;
23
+
24
  @Expose()
25
  @SwaggerResponseProperty({ type: [IngredientSerialization] })
26
  @Transform(
src/modules/console/modules/meals/validations/create-meals.validation.ts CHANGED
@@ -5,6 +5,7 @@ import { MealType } from "@common/enums/meal-type.enum";
5
  export interface ICreateMeal {
6
  name: string;
7
  created_at?: Date;
 
8
  ingredients: string[];
9
  calories: number;
10
  carbs: number;
@@ -24,6 +25,12 @@ export const createMealSchema = createSchema<ICreateMeal>({
24
  "date.empty": "created_at can not be empty",
25
  }),
26
 
 
 
 
 
 
 
27
  calories: joi.number().empty().required().messages({
28
  "number.base": "please enter a valid calories",
29
  "any.required": "calories is required",
 
5
  export interface ICreateMeal {
6
  name: string;
7
  created_at?: Date;
8
+ image: string;
9
  ingredients: string[];
10
  calories: number;
11
  carbs: number;
 
25
  "date.empty": "created_at can not be empty",
26
  }),
27
 
28
+ image: joi.string().empty().required().messages({
29
+ "string.base": "please enter a valid image",
30
+ "any.required": "image is required",
31
+ "string.empty": "image can not be empty",
32
+ }),
33
+
34
  calories: joi.number().empty().required().messages({
35
  "number.base": "please enter a valid calories",
36
  "any.required": "calories is required",
src/modules/console/modules/meals/validations/update-meals.validation.ts CHANGED
@@ -5,6 +5,7 @@ import { MealType } from "@common/enums/meal-type.enum";
5
  export interface IUpdateMeal {
6
  name?: string;
7
  created_at?: Date;
 
8
  ingredients?: [string];
9
  calories?: number;
10
  carbs?: number;
@@ -22,6 +23,10 @@ export const updateMealSchema = createSchema<IUpdateMeal>({
22
  "date.base": "please enter a valid created_at",
23
  "date.empty": "created_at can not be empty",
24
  }),
 
 
 
 
25
  ingredients: joi.array().items(joi.string()).optional().messages({
26
  "array.base": "please enter a valid ingredients",
27
  }),
 
5
  export interface IUpdateMeal {
6
  name?: string;
7
  created_at?: Date;
8
+ image?: string;
9
  ingredients?: [string];
10
  calories?: number;
11
  carbs?: number;
 
23
  "date.base": "please enter a valid created_at",
24
  "date.empty": "created_at can not be empty",
25
  }),
26
+ image: joi.string().empty().optional().messages({
27
+ "string.base": "please enter a valid image",
28
+ "string.empty": "image can not be empty",
29
+ }),
30
  ingredients: joi.array().items(joi.string()).optional().messages({
31
  "array.base": "please enter a valid ingredients",
32
  }),
src/resources/meals1.json DELETED
The diff for this file is too large to render. See raw diff
 
src/resources/meals2.json DELETED
The diff for this file is too large to render. See raw diff
 
src/seeder/seeders/9-meals.seeder.ts CHANGED
@@ -21,6 +21,8 @@ export default seederWrapper(Meal, async () => {
21
  console.log('preping meals data...')
22
  const data = await Promise.all(dbStore.mealsDataset.map(async (mealJson) => ({
23
  name: mealJson.Name,
 
 
24
  ingredients: mealJson.RecipeIngredientParts.map(name => ingredientsIds.find(i => i.name === name)._id),
25
  calories: mealJson.Calories,
26
  carbs: mealJson.CarbohydrateContent,
 
21
  console.log('preping meals data...')
22
  const data = await Promise.all(dbStore.mealsDataset.map(async (mealJson) => ({
23
  name: mealJson.Name,
24
+ created_at: new Date(),
25
+ image: `https://placehold.co/300x400`,
26
  ingredients: mealJson.RecipeIngredientParts.map(name => ingredientsIds.find(i => i.name === name)._id),
27
  calories: mealJson.Calories,
28
  carbs: mealJson.CarbohydrateContent,