Skip to content
Snippets Groups Projects
Commit 5838bd59 authored by Stian Lyng Stræte's avatar Stian Lyng Stræte
Browse files

Merge branch 'feature/7-recipe-endpoint' into 'main'

Feature/7 recipe endpoint

See merge request idatt2106-v23-03/backend!71
parents 789caf9e 6e8e63eb
No related branches found
No related tags found
No related merge requests found
package ntnu.idatt2016.v233.SmartMat.controller;
import org.springframework.web.bind.annotation.RestController;
import lombok.AllArgsConstructor;
import ntnu.idatt2016.v233.SmartMat.entity.Recipe;
import ntnu.idatt2016.v233.SmartMat.service.RecipeService;
import java.util.List;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
/**
* This class is responsible for handling requests related to recipes
*
* @author Stian Lyng
* @version 1.0
*/
@AllArgsConstructor
@RestController
@RequestMapping("/api/recipe")
public class RecipeController {
/**
* The recipe service
*/
private final RecipeService recipeService;
/**
* Gets a recipe by its id
* @param id the id of the recipe
* @return the recipe if it exists, otherwise 404
*/
@GetMapping("/{id}")
public ResponseEntity<Recipe> getRecipeById(@PathVariable("id") Long id) {
return recipeService.getRecipeById(id)
.map(ResponseEntity::ok)
.orElseGet(() -> ResponseEntity.notFound().build());
}
/**
* Gets all recipes with a given name
*
* @param name the name of the recipe
* @return a list of recipes with the given name, otherwise 404
*/
@GetMapping("/name/{name}")
public ResponseEntity<List<Recipe>> getRecipeByName(@PathVariable("name") String name) {
List<Recipe> recipes = recipeService.getRecipesByName(name);
if (recipes.isEmpty()) {
return ResponseEntity.notFound().build();
}
return ResponseEntity.ok(recipes);
}
}
package ntnu.idatt2016.v233.SmartMat.dto.request;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
/**
* This class represents a recipe request
*/
@Data
@Builder
@AllArgsConstructor
public class RecipeRequest {
/**
* The unique id of the recipe
*/
private long id;
/**
* The name of the recipe
*/
private String recipeName;
/**
* The description of the recipe
*/
private String recipeDescription;
}
package ntnu.idatt2016.v233.SmartMat.repository;
import java.util.Optional;
import java.util.List;
import ntnu.idatt2016.v233.SmartMat.entity.Recipe;
import org.springframework.data.jpa.repository.JpaRepository;
......@@ -18,6 +18,6 @@ public interface RecipeRepository extends JpaRepository<Recipe, Long> {
* @param name the name of the recipe
* @return an optional containing the recipe if it exists
*/
Optional<Recipe> getByName(String name);
List<Recipe> getByName(String name);
}
package ntnu.idatt2016.v233.SmartMat.service;
import ntnu.idatt2016.v233.SmartMat.entity.Recipe;
import ntnu.idatt2016.v233.SmartMat.repository.RecipeRepository;
import java.util.List;
import java.util.Optional;
/**
* This class defines the methods for the recipe service
*
* @author Stian Lyng
* @version 1.0
*/
public class RecipeService {
/**
* The recipe repository
*/
private RecipeRepository recipeRepository;
/**
* Creates a new recipe service
* @param recipeRepository
*/
public RecipeService (RecipeRepository recipeRepository) {
this.recipeRepository = recipeRepository;
}
/**
* Gets a recipe by its id
*
* @param id the id of the recipe
* @return an optional containing the recipe if it exists
*/
public Optional<Recipe> getRecipeById(Long id) {
return recipeRepository.findById(id);
}
/**
* Gets all recipes with a given name
*
* @param name the name of the recipe
* @return a list of recipes with the given name
*/
public List<Recipe> getRecipesByName(String name) {
return recipeRepository.getByName(name);
}
/**
* Gets all recipes
*
* @return a list of all recipes
*/
public List<Recipe> getAllRecipes() {
return recipeRepository.findAll();
}
/**
* Saves a recipe
*
* @param recipe the recipe to save
* @return the saved recipe
*/
public Recipe saveRecipe(Recipe recipe) {
return recipeRepository.save(recipe);
}
/**
* Deletes a recipe
*
* @param recipe a recipe object to delete
*/
public void deleteRecipe(Recipe recipe) {
recipeRepository.delete(recipe);
}
/**
* Deletes a recipe by its id
*
* @param id the id of the recipe to delete
*/
public void deleteRecipeById(Long id) {
recipeRepository.deleteById(id);
}
}
\ No newline at end of file
......@@ -15,6 +15,7 @@ import java.util.Optional;
* @since 05.04.2023
*/
public class ProductService {
ProductRepository productRepository;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment