Skip to content

Commit 327b0e4

Browse files
committed
Create TaskService.java
* move repository logic from controller class to service
1 parent d11b59e commit 327b0e4

File tree

2 files changed

+63
-27
lines changed

2 files changed

+63
-27
lines changed

src/main/java/com/codeherk/taskapi/controller/TaskController.java

Lines changed: 16 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22

33
import java.util.List;
44

5-
import com.codeherk.taskapi.exception.TaskNotFoundException;
65
import com.codeherk.taskapi.model.Task;
7-
import com.codeherk.taskapi.repo.TaskRepository;
6+
import com.codeherk.taskapi.service.TaskService;
7+
import org.springframework.beans.factory.annotation.Autowired;
88
import org.springframework.web.bind.annotation.DeleteMapping;
99
import org.springframework.web.bind.annotation.GetMapping;
1010
import org.springframework.web.bind.annotation.PathVariable;
@@ -16,51 +16,40 @@
1616
@RestController
1717
public class TaskController {
1818

19-
private final TaskRepository repository;
19+
@Autowired
20+
private final TaskService taskService;
2021

21-
TaskController(TaskRepository repository) {
22-
this.repository = repository;
22+
TaskController(TaskService taskService) {
23+
this.taskService = taskService;
2324
}
2425

2526

2627
// Aggregate root
2728
// tag::get-aggregate-root[]
2829
@GetMapping("/tasks")
29-
List<Task> all() {
30-
return repository.findAll();
30+
List<Task> getTasks() {
31+
return taskService.getTasks();
3132
}
3233
// end::get-aggregate-root[]
3334

3435
@PostMapping("/tasks")
35-
Task newTask(@RequestBody Task newTask) {
36-
return repository.save(newTask);
36+
Task createTask(@RequestBody Task newTask) {
37+
return taskService.createTask(newTask);
3738
}
3839

39-
// Single item
40-
40+
// Single task
4141
@GetMapping("/tasks/{id}")
42-
Task one(@PathVariable Long id) {
43-
44-
return repository.findById(id)
45-
.orElseThrow(() -> new TaskNotFoundException(id));
42+
Task getTaskById(@PathVariable Long id) {
43+
return taskService.getTaskById(id);
4644
}
4745

4846
@PutMapping("/tasks/{id}")
49-
Task replaceTask(@RequestBody Task newTask, @PathVariable Long id) {
50-
51-
return repository.findById(id)
52-
.map(Task -> {
53-
Task.setDescription(newTask.getDescription());
54-
return repository.save(Task);
55-
})
56-
.orElseGet(() -> {
57-
newTask.setId(id);
58-
return repository.save(newTask);
59-
});
47+
Task updateTask(@RequestBody Task newTask, @PathVariable Long id) {
48+
return taskService.updateTask(newTask, id);
6049
}
6150

6251
@DeleteMapping("/tasks/{id}")
6352
void deleteTask(@PathVariable Long id) {
64-
repository.deleteById(id);
53+
taskService.deleteTask(id);
6554
}
6655
}
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package com.codeherk.taskapi.service;
2+
3+
import com.codeherk.taskapi.exception.TaskNotFoundException;
4+
import com.codeherk.taskapi.model.Task;
5+
import com.codeherk.taskapi.repo.TaskRepository;
6+
import org.springframework.beans.factory.annotation.Autowired;
7+
import org.springframework.stereotype.Service;
8+
9+
import java.util.List;
10+
11+
@Service
12+
public class TaskService {
13+
@Autowired
14+
private final TaskRepository repository;
15+
16+
public TaskService(TaskRepository repository) {
17+
this.repository = repository;
18+
}
19+
20+
public List<Task> getTasks() {
21+
return repository.findAll();
22+
}
23+
24+
public Task getTaskById(Long id) {
25+
return repository.findById(id).orElseThrow(() -> new TaskNotFoundException(id));
26+
}
27+
28+
public Task createTask(Task newTask) {
29+
return repository.save(newTask);
30+
}
31+
32+
public Task updateTask(Task newTask, Long id) {
33+
return repository.findById(id)
34+
.map(Task -> {
35+
Task.setDescription(newTask.getDescription());
36+
return repository.save(Task);
37+
})
38+
.orElseGet(() -> {
39+
newTask.setId(id);
40+
return repository.save(newTask);
41+
});
42+
}
43+
44+
public void deleteTask(Long id) {
45+
repository.deleteById(id);
46+
}
47+
}

0 commit comments

Comments
 (0)