feat: ingredient controller, websocket messages, ingredient controller tests

This commit is contained in:
Natalia Cholewa 2025-12-05 14:38:43 +01:00
commit 3af808ef58
13 changed files with 498 additions and 9 deletions

View file

@ -33,10 +33,7 @@ public class Ingredient {
@Column(name = "carbs", nullable = false)
public double carbsPer100g;
@SuppressWarnings("unused")
protected Ingredient() {
// for object mapper says sebastian
}
public Ingredient() {}
public Ingredient(String name,
double proteinPer100g,

View file

@ -2,4 +2,5 @@ package commons.ws;
public class Topics {
public static final String RECIPES = "/subscribe/recipe";
public static final String INGREDIENTS = "/subscribe/ingredient";
}

View file

@ -0,0 +1,30 @@
package commons.ws.messages;
import commons.Ingredient;
/**
* Message sent when a new ingredient is created.
*
* @see commons.ws.messages.Message.Type#INGREDIENT_CREATE
*/
public class CreateIngredientMessage implements Message {
private Ingredient ingredient;
public CreateIngredientMessage(Ingredient ingredient) {
this.ingredient = ingredient;
}
@Override
public Type getType() {
return Type.INGREDIENT_CREATE;
}
/**
* Get the created ingredient.
*
* @return The created ingredient.
*/
public Ingredient getIngredient() {
return ingredient;
}
}

View file

@ -0,0 +1,28 @@
package commons.ws.messages;
/**
* Message sent when an ingredient is deleted.
*
* @see commons.ws.messages.Message.Type#INGREDIENT_DELETE
*/
public class DeleteIngredientMessage implements Message {
private Long ingredientId;
public DeleteIngredientMessage(Long ingredientId) {
this.ingredientId = ingredientId;
}
@Override
public Type getType() {
return Type.INGREDIENT_DELETE;
}
/**
* Get the deleted ingredient's id.
*
* @return The deleted ingredient's id.
*/
public Long getIngredientId() {
return ingredientId;
}
}

View file

@ -21,7 +21,28 @@ public interface Message {
*
* @see commons.ws.messages.DeleteRecipeMessage
*/
RECIPE_DELETE
RECIPE_DELETE,
/**
* Message sent when a new ingredient is created.
*
* @see commons.ws.messages.CreateIngredientMessage
*/
INGREDIENT_CREATE,
/**
* Message sent when an existing ingredient is updated.
*
* @see commons.ws.messages.UpdateIngredientMessage
*/
INGREDIENT_UPDATE,
/**
* Message sent when an ingredient is deleted.
*
* @see commons.ws.messages.DeleteIngredientMessage
*/
INGREDIENT_DELETE
}
/**

View file

@ -0,0 +1,30 @@
package commons.ws.messages;
import commons.Ingredient;
/**
* Message sent when an ingredient is updated.
*
* @see commons.ws.messages.Message.Type#INGREDIENT_UPDATAE
*/
public class UpdateIngredientMessage implements Message {
private Ingredient ingredient;
public UpdateIngredientMessage(Ingredient ingredient) {
this.ingredient = ingredient;
}
@Override
public Type getType() {
return Type.INGREDIENT_UPDATE;
}
/**
* Get the updated ingredient.
*
* @return The updated ingredient.
*/
public Ingredient getIngredient() {
return ingredient;
}
}