diff --git a/src/main/java/com/taskloom/config/SecurityConfig.java b/src/main/java/com/taskloom/config/SecurityConfig.java index 2668f3f..eeac5b4 100644 --- a/src/main/java/com/taskloom/config/SecurityConfig.java +++ b/src/main/java/com/taskloom/config/SecurityConfig.java @@ -52,7 +52,7 @@ public SecurityFilterChain filterChain(HttpSecurity http, JwtService jwtService) .csrf(csrf -> csrf.disable()) .sessionManagement(sm -> sm.sessionCreationPolicy(SessionCreationPolicy.STATELESS)) .authorizeHttpRequests(auth -> auth - .requestMatchers("/auth/**", "/h2-console/**", "/swagger-ui/**","/v3/api-docs/**", "/actuator/**") + .requestMatchers("/auth/**", "/h2-console/**", "/swagger-ui/**","/v3/api-docs/**", "/actuator/**", "tasks/**") .permitAll() .anyRequest() .authenticated()) diff --git a/src/main/java/com/taskloom/controller/TaskController.java b/src/main/java/com/taskloom/controller/TaskController.java index e1da117..d5099ef 100644 --- a/src/main/java/com/taskloom/controller/TaskController.java +++ b/src/main/java/com/taskloom/controller/TaskController.java @@ -53,18 +53,8 @@ public ResponseEntity updateTaskStatusById(@PathVariable Integer i return ResponseEntity.status(HttpStatus.ACCEPTED).body(taskService.updateTaskStatusById(id, status)); } - @GetMapping("/status/{status}") - public ResponseEntity> getTasksByStatus(@PathVariable TaskStatus status){ - return ResponseEntity.status(HttpStatus.OK).body(taskService.findByStatus(status)); - } - - @GetMapping("/title/{title}") - public ResponseEntity> getTasksByTitle(@PathVariable String title){ - return ResponseEntity.status(HttpStatus.OK).body(taskService.findByTitle(title)); - } - @GetMapping("/page") - public ResponseEntity> getAllTasks(Pageable pageable){ - return ResponseEntity.status(HttpStatus.OK).body(taskService.getAllTasksPage(pageable)); + public ResponseEntity> getAllTasks(@RequestParam Integer page, @RequestParam Integer size, @RequestParam(required = false) String query){ + return ResponseEntity.status(HttpStatus.OK).body(taskService.getAllTasksPage(page, size, query)); } } diff --git a/src/main/java/com/taskloom/repository/TaskRepository.java b/src/main/java/com/taskloom/repository/TaskRepository.java index f78ed6b..7fb4b57 100644 --- a/src/main/java/com/taskloom/repository/TaskRepository.java +++ b/src/main/java/com/taskloom/repository/TaskRepository.java @@ -2,7 +2,10 @@ import com.taskloom.entity.TaskEntity; import com.taskloom.model.TaskStatus; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; import org.springframework.stereotype.Repository; import java.util.List; @@ -11,4 +14,7 @@ public interface TaskRepository extends JpaRepository { List findByTitleContainingIgnoreCase(String title); List findByStatus(TaskStatus status); + + @Query("SELECT t FROM TaskEntity t WHERE (:query is null) OR t.title ILIKE %:query% OR t.description ilike %:query%") + Page findByTitleOrStatus(String query, Pageable pageable); } diff --git a/src/main/java/com/taskloom/service/TaskService.java b/src/main/java/com/taskloom/service/TaskService.java index 9dd2a31..5b0cee2 100644 --- a/src/main/java/com/taskloom/service/TaskService.java +++ b/src/main/java/com/taskloom/service/TaskService.java @@ -11,6 +11,7 @@ import com.taskloom.repository.UserRepository; import lombok.RequiredArgsConstructor; import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Service; @@ -108,7 +109,11 @@ public List findByTitle(String title) { .toList(); } - public Page getAllTasksPage(Pageable pageable) { - return taskRepository.findAll(pageable).map(this::taskEntityToTaskResponse); + public Page getAllTasksPage(Integer page, Integer size, String query) { + Pageable pageable = PageRequest.of(page, size); + //title="asd" status=done + + Page byTitleOrStatus = taskRepository.findByTitleOrStatus(query, pageable); + return byTitleOrStatus.map(this::taskEntityToTaskResponse); } }