todo-minimal-api.git

git clone https://git.crispbyte.dev/todo-minimal-api.git

todo-minimal-api.git / TodoMinimal.WebApi
CheddarCrisp  ·  2024-02-12

TodoService.cs

 1public record TodoDTO(int? Order, string? Title, bool? Completed, string Url);
 2
 3public class TodoService {
 4    private string baseUrl;
 5    private TodoRepo repo;
 6    public TodoService(string baseUrl, TodoRepo repo) {
 7        this.baseUrl = baseUrl;
 8        this.repo = repo;
 9    }
10
11    public IEnumerable<TodoDTO> All() {
12        return repo.All().Select(MapTodo);
13    }
14
15    public TodoDTO Find(Guid id) {
16        return MapTodo(
17            repo.Find(id)
18        );
19    }
20
21    public TodoDTO Add(TodoDTO todo) {
22        return MapTodo(
23            repo.Add(new(
24                Guid.NewGuid(),
25                todo.Order ?? 0,
26                todo.Title ?? "default",
27                todo.Completed ?? false
28            ))
29        );
30    }
31
32    public void Clear() {
33        repo.Clear();
34    }
35
36    public TodoDTO Update(Guid id, TodoDTO todo) {
37        return MapTodo(
38            repo.Update(id, todo.Title, todo.Order, todo.Completed)
39        );
40    }
41
42    public void Delete(Guid id) {
43        repo.Delete(id);
44    }
45
46    private TodoDTO MapTodo(Todo todo) {
47        return new(
48        todo.Order,
49        todo.Title,
50        todo.Completed,
51        $"{baseUrl}/{todo.Id}"
52    );
53    }
54}