Estou desenvolvendo um projeto e gostaria de uma ajuda. Preciso criar uma rota onde informo o ID do usuário e o sistema busca todas as tarefas relacionadas àquele usuário. No meu banco de dados, existe uma coluna que possui uma chave estrangeira com o ID do usuário, então só gostaria de buscar na coluna 'userid' todos os IDs que são iguais ao que informei.
Gostaria de saber como posso desenvolver uma rota para listar todas as tarefas que possuem o ID igual ao que é informado, de acordo com o que já existe no meu sistema. A parte do usuário já desenvolvi, incluindo a entidade, rota de criação, etc.
@Entity
@Table(name = "tasks")
@Data
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(of = "id")
public class Task {
@Id
@GeneratedValue(strategy = GenerationType.UUID)
private String id;
private String title;
private String description;
@Enumerated(EnumType.STRING)
private EnumTaskStatus taskStatus;
@Column(name = "created_at")
private LocalDateTime createdAt;
@ManyToOne
@JoinColumn(name = "userid")
@JsonIgnore
private User userid;
public Task(RequestDataCreateTaskDto dados, User user) {
this.title = dados.title();
this.description = dados.description();
this.taskStatus = EnumTaskStatus.pending;
this.createdAt = LocalDateTime.now();
this.userid = user;
}
}
@Service
public class ListAllTaskFromUser {
@Autowired
TaskRepository taskRepository;
@Autowired
UserRepository userRepository;
public List<Task> listAll(String id){
return null;
}
}
@RestController
@RequestMapping("/tasks")
public class TasksController {
@Autowired
CreateTaskService createTaskService;
@PostMapping()
@Transactional
public ResponseEntity create(@RequestBody @Valid RequestDataCreateTaskDto dados, UriComponentsBuilder uriBuilder) {
var newTask = createTaskService.execute(dados);
var uri = uriBuilder.path("/customer/{id}").buildAndExpand(newTask.getId()).toUri();
return ResponseEntity.created(uri).body(new ResponseDataCreateTaskDto(newTask));
}
@Autowired
ListAllTaskFromUser listAllTaskFromUser;
@GetMapping("/listTasks")
public ResponseEntity listAllById(@RequestHeader("id") String id) {
List<Task> tasks = listAllTaskFromUser.listAll(id);
if (tasks.isEmpty()) {
throw new IllegalArgumentException("User not found with id: " + id);
}
return ResponseEntity.ok().body(tasks);
}
}
public interface TaskRepository extends JpaRepository<Task, String> {
Optional<List<Task>> findByUserid(String id);
}