Merge branch 'feature/backend-websockets' into 'main'

Backend websockets

See merge request cse1105/2025-2026/teams/csep-team-76!16
This commit is contained in:
Natalia Cholewa 2025-12-05 10:47:32 +01:00
commit 433f289c55
10 changed files with 242 additions and 8 deletions

View file

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

View file

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

View file

@ -0,0 +1,28 @@
package commons.ws.messages;
/**
* Message sent when a recipe is deleted.
*
* @see commons.ws.messages.Message.Type#RECIPE_DELETE
*/
public class DeleteRecipeMessage implements Message {
private Long recipeId;
public DeleteRecipeMessage(Long recipeId) {
this.recipeId = recipeId;
}
@Override
public Type getType() {
return Type.RECIPE_DELETE;
}
/**
* Get the ID of the deleted recipe.
*
* @return The ID of the deleted recipe.
*/
public Long getRecipeId() {
return recipeId;
}
}

View file

@ -0,0 +1,44 @@
package commons.ws.messages;
public interface Message {
public enum Type {
/**
* Message sent when a new recipe is created.
*
* @see commons.ws.messages.CreateRecipeMessage
*/
RECIPE_CREATE,
/**
* Message sent when an existing recipe is updated.
*
* @see commons.ws.messages.UpdateRecipeMessage
*/
RECIPE_UPDATE,
/**
* Message sent when a recipe is deleted.
*
* @see commons.ws.messages.DeleteRecipeMessage
*/
RECIPE_DELETE
}
/**
* Get the type of the message.
* This can be used to match the message to the appropriate handler.
*
* <h3>Example</h3>
* <pre>
* Message msg = ...;
* switch (msg.getType()) {
* case RECIPE_CREATE -> handleCreate((CreateRecipeMessage) msg);
* case RECIPE_UPDATE -> handleUpdate((UpdateRecipeMessage) msg);
* default -> { /* handle other cases *\/ }
* }
* </pre>
*
* @return The type of the message.
*/
public Type getType();
}

View file

@ -0,0 +1,30 @@
package commons.ws.messages;
import commons.Recipe;
/**
* Message sent when an existing recipe is updated.
*
* @see commons.ws.messages.Message.Type#RECIPE_UPDATE
*/
public class UpdateRecipeMessage implements Message {
private Recipe recipe;
public UpdateRecipeMessage(Recipe recipe) {
this.recipe = recipe;
}
@Override
public Type getType() {
return Type.RECIPE_UPDATE;
}
/**
* Get the updated recipe.
*
* @return The updated recipe.
*/
public Recipe getRecipe() {
return recipe;
}
}