diff --git a/requests.http b/requests.http
index d51fde8dc0b81d562777227dd8523f0330788ad3..da3f1e5294b8863d6b2d04c02492a474576c3a20 100644
--- a/requests.http
+++ b/requests.http
@@ -21,3 +21,18 @@ content-type: application/json
   "email": "lukas.karsch@gmx.de",
   "password": "12345678"
 }
+
+### Get all plants from wishlist
+GET http://localhost:8080/api/v1/wishlist
+
+### Get amount of plants in wishlist
+GET http://localhost:8080/api/v1/wishlist/count
+
+### Add plant to wishlist
+POST http://localhost:8080/api/v1/wishlist/add/1
+
+### Remove plant from wishlist
+DELETE http://localhost:8080/api/v1/wishlist/remove/1
+
+### Remove all plants from wishlist
+DELETE http://localhost:8080/api/v1/wishlist/remove/all
\ No newline at end of file
diff --git a/src/main/java/hdm/mi/growbros/controllers/WishListController.java b/src/main/java/hdm/mi/growbros/controllers/WishListController.java
index aee0cf747b16113a13d416cd9506588b6a4a12f5..3a827014e1e2b446cf37038230221c7dcc4c5623 100644
--- a/src/main/java/hdm/mi/growbros/controllers/WishListController.java
+++ b/src/main/java/hdm/mi/growbros/controllers/WishListController.java
@@ -2,10 +2,9 @@ package hdm.mi.growbros.controllers;
 
 import hdm.mi.growbros.models.plant.Plant;
 import hdm.mi.growbros.models.user.User;
-import hdm.mi.growbros.service.PlantsService;
 import hdm.mi.growbros.service.WishListService;
-import jakarta.validation.Valid;
 import lombok.RequiredArgsConstructor;
+import org.springframework.http.ResponseEntity;
 import org.springframework.security.core.annotation.AuthenticationPrincipal;
 import org.springframework.web.bind.annotation.*;
 
@@ -22,26 +21,31 @@ public class WishListController {
     @GetMapping("/")
     public Collection<Plant> getAllPlantsInWishList(@RequestParam(value = "sort", required = false) String sort,
                                                     @AuthenticationPrincipal User user) {
-        //TODO: get the user by adding (Authentication authentication) as params
         return wishListService.getWishedPlants(user, sort);
     }
 
+    @GetMapping("/count")
+    public int getWishListSize(
+            @AuthenticationPrincipal User user) {
+        return wishListService.countByUser(user);
+    }
+
 
     @PostMapping("/add/{plantId}")
-    public void addPlantToGarden(@PathVariable Long plantId,
-                                 @AuthenticationPrincipal User user) {
+    public ResponseEntity<Integer> addPlantToGarden(@PathVariable Long plantId,
+                                                   @AuthenticationPrincipal User user) {
         wishListService.addPlantToWishList(plantId, user);
+        return ResponseEntity.status(201).build();
     }
 
     @DeleteMapping("/remove/{entryId}")
-    public void removePlantFromGarden(@PathVariable Long entryId) {
-        wishListService.removeFromWishList(entryId);
+    public void removePlantFromGarden(@PathVariable Long entryId,
+                                      @AuthenticationPrincipal User user) {
+        wishListService.removeFromWishList(entryId, user);
     }
 
     @DeleteMapping("/remove/all")
-    public Long removeAllPlantsFromGarden() {
-        return wishListService.clearWishList();
+    public Long removeAllPlantsFromGarden(@AuthenticationPrincipal User user) {
+        return wishListService.clearWishList(user);
     }
-
-
-}
+}
\ No newline at end of file
diff --git a/src/main/java/hdm/mi/growbros/exceptions/PlantAlreadyInWishList.java b/src/main/java/hdm/mi/growbros/exceptions/PlantAlreadyInWishList.java
new file mode 100644
index 0000000000000000000000000000000000000000..31a8159abf317af677d333f01d44b76f99b022f1
--- /dev/null
+++ b/src/main/java/hdm/mi/growbros/exceptions/PlantAlreadyInWishList.java
@@ -0,0 +1,10 @@
+package hdm.mi.growbros.exceptions;
+
+import hdm.mi.growbros.models.plant.Plant;
+
+public class PlantAlreadyInWishList extends RuntimeException {
+
+    public PlantAlreadyInWishList (Plant plant) {
+        super("Plant " + plant + " not added to Wishlist because it already is in Wishlist");
+    }
+}
diff --git a/src/main/java/hdm/mi/growbros/exceptions/PlantNotFoundException.java b/src/main/java/hdm/mi/growbros/exceptions/PlantNotFoundException.java
new file mode 100644
index 0000000000000000000000000000000000000000..7e43fc8abcfa3d774ec0dc81bea14a5fbbfc399e
--- /dev/null
+++ b/src/main/java/hdm/mi/growbros/exceptions/PlantNotFoundException.java
@@ -0,0 +1,8 @@
+package hdm.mi.growbros.exceptions;
+
+public class PlantNotFoundException extends RuntimeException {
+    public PlantNotFoundException(Long id) {
+        super(String.format("Plant with id '%d' was not found", id));
+    }
+}
+
diff --git a/src/main/java/hdm/mi/growbros/models/WishListEntry.java b/src/main/java/hdm/mi/growbros/models/WishListEntry.java
index e717d16053a8ce49adb947aafa1d149ecc0618d0..eda640725ade4678f001216f8823884385678292 100644
--- a/src/main/java/hdm/mi/growbros/models/WishListEntry.java
+++ b/src/main/java/hdm/mi/growbros/models/WishListEntry.java
@@ -28,4 +28,4 @@ public class WishListEntry {
 
     @Id
     private Long id;
-}
+}
\ No newline at end of file
diff --git a/src/main/java/hdm/mi/growbros/repositories/WishListRepository.java b/src/main/java/hdm/mi/growbros/repositories/WishListRepository.java
index bf2a2d20638226894c2fcb71e711c88fa1547c6f..f1c8d560b25478583f2844f4643b697dac68565d 100644
--- a/src/main/java/hdm/mi/growbros/repositories/WishListRepository.java
+++ b/src/main/java/hdm/mi/growbros/repositories/WishListRepository.java
@@ -3,6 +3,7 @@ package hdm.mi.growbros.repositories;
 import hdm.mi.growbros.models.plant.Plant;
 import hdm.mi.growbros.models.WishListEntry;
 import hdm.mi.growbros.models.user.User;
+import org.springframework.data.domain.Sort;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.Query;
 import org.springframework.data.repository.query.Param;
@@ -14,8 +15,19 @@ import java.util.List;
 @Repository
 public interface WishListRepository extends JpaRepository<WishListEntry, Long> {
 
+    List<WishListEntry> findByUser(User user);
+
+    List<WishListEntry> findByUser(User user, Sort sort);
+
+    int countByUser(User user);
+
+    int deleteAllByUser(User user);
+
+    void deleteByIdAndUser(long entryId, User user);
+
     @Query("""
                 SELECT ge FROM WishListEntry ge
+                WHERE ge.user = :user
                 ORDER BY
                     CASE
                         WHEN :week <= ge.plant.plantWeekStart
@@ -25,21 +37,15 @@ public interface WishListRepository extends JpaRepository<WishListEntry, Long> {
                     ge.plant.name
                 ASC
             """)
-    List<WishListEntry> findAllByNearestPlantingWeek(@Param("week") int currentWeek);
-
-    boolean existsByUserAndPlant(User user, Plant plant);
-
-}
-
-
-
-
-
-
-
-
-
-
-
+    List<WishListEntry> findAllByNearestPlantingWeek(@Param("user") User user, @Param("week") int currentWeek);
 
+    @Query("""
+                SELECT ge FROM WishListEntry ge
+                WHERE ge.user = :user
+                AND ge.plant.plantWeekStart <= :week
+                AND ge.plant.plantWeekEnd >= :week
+            """)
+    List<WishListEntry> findByCurrentPlantingWeek(@Param("user") User user, @Param("week") int currentWeek);
 
+    boolean existsByUserAndPlant(User user, Plant plant);
+}
\ No newline at end of file
diff --git a/src/main/java/hdm/mi/growbros/service/WishListService.java b/src/main/java/hdm/mi/growbros/service/WishListService.java
index 8743744b2923b8129de26efcc9eeb6289ca22019..c48e649f547b9caeb61cbe93ba5c476fac35f6f9 100644
--- a/src/main/java/hdm/mi/growbros/service/WishListService.java
+++ b/src/main/java/hdm/mi/growbros/service/WishListService.java
@@ -1,10 +1,13 @@
 package hdm.mi.growbros.service;
 
+import hdm.mi.growbros.exceptions.PlantAlreadyInWishList;
+import hdm.mi.growbros.exceptions.PlantNotFoundException;
 import hdm.mi.growbros.models.plant.Plant;
 import hdm.mi.growbros.models.WishListEntry;
 import hdm.mi.growbros.models.user.User;
 import hdm.mi.growbros.repositories.PlantRepository;
 import hdm.mi.growbros.repositories.WishListRepository;
+import hdm.mi.growbros.util.DateTimeUtils;
 import lombok.RequiredArgsConstructor;
 import org.springframework.data.domain.Sort;
 import org.springframework.stereotype.Service;
@@ -24,56 +27,59 @@ public class WishListService {
     private final PlantRepository plantRepository;
 
     public List<Plant> getWishedPlants(User user, String sort) {
-        //todo: check for current user?
-        if (sort == null) return getAllPlantsOrderedByName();
+        if (sort == null) return getAllPlantsOrderedByName(user);
         return switch (sort) {
-            case "createdAt" -> getAllPlantsOrderedByCreatedDate();
-            case "plantDate" -> getAllPlantsOrderedByNextPossiblePlantDate();
-            default -> getAllPlantsOrderedByName();
+            case "createdAt" -> getAllPlantsOrderedByCreatedDate(user);
+            case "plantDate" -> getAllPlantsOrderedByNextPossiblePlantDate(user);
+            case "currentPlantable" -> getCurrentPlantablePlants(user);
+            default -> getAllPlantsOrderedByName(user);
         };
     }
 
     public void addPlantToWishList(Long plantId, User user) {
-        //todo: get user
         Plant plant = plantRepository.findById(plantId).orElseThrow(() -> new PlantNotFoundException(plantId));
 
         if(!wishListRepository.existsByUserAndPlant(user, plant)) {
             WishListEntry wishListEntry = new WishListEntry();
             wishListEntry.setPlant(plant);
+            wishListEntry.setUser(user);
             wishListRepository.save(wishListEntry);
         } else {
             throw new PlantAlreadyInWishList(plant);
-            //todo: Exception erstellen
         }
     }
 
-    public void removeFromWishList(Long entryId) {
-        //TODO: only allow this if the authenticated user created the entry
-        wishListRepository.deleteById(entryId);
+    public void removeFromWishList(Long entryId, User user) {
+        wishListRepository.deleteByIdAndUser(entryId, user);
     }
 
-    public Long clearWishList() {
-        //TODO: this needs to be filtered by user
+    public Long clearWishList(User user) {
         Long deleted = wishListRepository.count();
-        wishListRepository.deleteAll();
+        wishListRepository.deleteAllByUser(user);
         return deleted;
     }
 
-    private List<Plant> getAllPlantsOrderedByName() {
+    private List<Plant> getAllPlantsOrderedByName(User user) {
         return mapWishListEntriesToPlants(
-                wishListRepository.findAll(Sort.by("plant.name"))
+                wishListRepository.findByUser(user, Sort.by("plant.name"))
         );
     }
 
-    private List<Plant> getAllPlantsOrderedByCreatedDate() {
+    private List<Plant> getAllPlantsOrderedByCreatedDate(User user) {
         return mapWishListEntriesToPlants(
-                wishListRepository.findAll(Sort.by("createdAt"))
+                wishListRepository.findByUser(user, Sort.by("createdAt"))
         );
     }
 
-    private List<Plant> getAllPlantsOrderedByNextPossiblePlantDate() {
+    private List<Plant> getAllPlantsOrderedByNextPossiblePlantDate(User user) {
         return mapWishListEntriesToPlants(
-                wishListRepository.findAllByNearestPlantingWeek(DateTimeUtils.getCurrentWeekForToday())
+                wishListRepository.findAllByNearestPlantingWeek(user, DateTimeUtils.getCurrentWeekForToday())
+        );
+    }
+
+    private List<Plant> getCurrentPlantablePlants(User user) {
+        return mapWishListEntriesToPlants(
+                wishListRepository.findByCurrentPlantingWeek(user, DateTimeUtils.getCurrentWeekForToday())
         );
     }
 
@@ -84,6 +90,11 @@ public class WishListService {
                 .toList();
     }
 
+    public int countByUser(User user) {
+        return wishListRepository.countByUser(user);
+    }
+
+
     /*public List<Plant> sort(String sortKey) {
         switch (sortKey) {
             case ("name"):
@@ -109,5 +120,4 @@ public class WishListService {
 
         return week-1;  //because in class Plant weeks are indexed at 0
     }*/
-
-}
+}
\ No newline at end of file
diff --git a/src/main/java/hdm/mi/growbros/util/DateTimeUtils.java b/src/main/java/hdm/mi/growbros/util/DateTimeUtils.java
new file mode 100644
index 0000000000000000000000000000000000000000..5faccd352f3e6f6536002f38fc9b3f223beabfdc
--- /dev/null
+++ b/src/main/java/hdm/mi/growbros/util/DateTimeUtils.java
@@ -0,0 +1,14 @@
+package hdm.mi.growbros.util;
+
+import java.time.LocalDate;
+import java.time.temporal.ChronoField;
+
+public class DateTimeUtils {
+    public static int getCurrentWeekForToday() {
+        return getCurrentWeekFromDate(LocalDate.now());
+    }
+
+    public static int getCurrentWeekFromDate(LocalDate date) {
+        return date.get(ChronoField.ALIGNED_WEEK_OF_YEAR);
+    }
+}