Extract service code
This commit is contained in:
parent
203e3adde0
commit
f8508a5da4
3 changed files with 65 additions and 37 deletions
56
TodoMinimal.WebApi/TodoService.cs
Normal file
56
TodoMinimal.WebApi/TodoService.cs
Normal file
|
@ -0,0 +1,56 @@
|
|||
using System.Text;
|
||||
|
||||
public record TodoDTO(int? Order, string? Title, bool? Completed, string Url);
|
||||
|
||||
public class TodoService {
|
||||
private string baseUrl;
|
||||
private TodoRepo repo;
|
||||
public TodoService(string baseUrl, TodoRepo repo) {
|
||||
this.baseUrl = baseUrl;
|
||||
this.repo = repo;
|
||||
}
|
||||
|
||||
public IEnumerable<TodoDTO> All() {
|
||||
return repo.All().Select(MapTodo);
|
||||
}
|
||||
|
||||
public TodoDTO Find(Guid id) {
|
||||
return MapTodo(
|
||||
repo.Find(id)
|
||||
);
|
||||
}
|
||||
|
||||
public TodoDTO Add(TodoDTO todo) {
|
||||
return MapTodo(
|
||||
repo.Add(new(
|
||||
Guid.NewGuid(),
|
||||
todo.Order ?? 0,
|
||||
todo.Title ?? "default",
|
||||
todo.Completed ?? false
|
||||
))
|
||||
);
|
||||
}
|
||||
|
||||
public void Clear() {
|
||||
repo.Clear();
|
||||
}
|
||||
|
||||
public TodoDTO Update(Guid id, TodoDTO todo) {
|
||||
return MapTodo(
|
||||
repo.Update(id, todo.Title, todo.Order, todo.Completed)
|
||||
);
|
||||
}
|
||||
|
||||
public void Delete(Guid id) {
|
||||
repo.Delete(id);
|
||||
}
|
||||
|
||||
private TodoDTO MapTodo(Todo todo) {
|
||||
return new(
|
||||
todo.Order,
|
||||
todo.Title,
|
||||
todo.Completed,
|
||||
$"{baseUrl}/{todo.Id}"
|
||||
);
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue