package domain import "time" // RecipeDuration is the duration to prepare recipe. It has JSON tags which allows it to be // marshaled into a JSON object and stored in the database (JSONB). type RecipeDuration struct { Total int `json:"total"` Prep int `json:"prep"` Cook int `json:"cook"` } // RecipeMeal is the database enum E_MEAL which defines the meal type of a recipe. Postgres enums // are case sensitive so these must match the values in the database exactly. type RecipeMeal string const ( MealBreakfast RecipeMeal = "breakfast" MealLunch RecipeMeal = "lunch" MealDinner RecipeMeal = "dinner" MealDessert RecipeMeal = "dessert" MealSnack RecipeMeal = "snack" MealSide RecipeMeal = "side" MealOther RecipeMeal = "other" ) // RecipeIngredient is a single ingredients in a recipe. These have JSON tags which allow them // to be marshaled into a JSON array and stored in the database (JSONB). type RecipeIngredient struct { Name string `json:"name"` Quantity string `json:"quantity"` } // Recipe is the database model of a recipe. There is no need to map to a different model so // this will remain in the domain. type Recipe struct { Id int Title string Description string Instructions []string Serves int Difficulty int Duration RecipeDuration Category RecipeMeal Ingredients []RecipeIngredient // Just a list of ingredients UserId int Modified *time.Time // Pointer to allow null Created time.Time }