Refined the design a bit
This commit is contained in:
@@ -16,20 +16,16 @@ public class TodosController : ControllerBase
|
||||
}
|
||||
|
||||
[HttpPost]
|
||||
public async Task<ActionResult<Core.Entities.Todo>> CreateTodo([FromBody] CreateTodoRequest request)
|
||||
{
|
||||
var todo = await _todoRepository.CreateTodoAsync(request.Title);
|
||||
|
||||
return Ok(todo);
|
||||
}
|
||||
public async Task<ActionResult<Core.Entities.Todo>> CreateTodo([FromBody] CreateTodoRequest request) =>
|
||||
Ok(await _todoRepository.CreateTodoAsync(request.Title));
|
||||
|
||||
[HttpGet]
|
||||
public async Task<ActionResult<IEnumerable<Core.Entities.Todo>>> GetTodos()
|
||||
{
|
||||
var todos = await _todoRepository.GetTodosAsync();
|
||||
public async Task<ActionResult<IEnumerable<Core.Entities.Todo>>> GetTodos() =>
|
||||
Ok(await _todoRepository.GetTodosAsync());
|
||||
|
||||
return Ok(todos);
|
||||
}
|
||||
[HttpGet]
|
||||
public async Task<ActionResult<IEnumerable<Core.Entities.Todo>>> GetNotDoneTodos() =>
|
||||
Ok(await _todoRepository.GetNotDoneTodos());
|
||||
|
||||
public record CreateTodoRequest
|
||||
{
|
||||
|
@@ -18,36 +18,47 @@ namespace Todo.Api.Hubs
|
||||
{
|
||||
var _ = await _todoRepository.CreateTodoAsync(todoTitle);
|
||||
|
||||
var todos = await _todoRepository.GetTodosAsync();
|
||||
var todos = await _todoRepository.GetNotDoneTodos();
|
||||
var serializedTodos =
|
||||
JsonSerializer.Serialize(todos
|
||||
.Select(t => new TodoResponse { Id = t.Id, Title = t.Title })
|
||||
.ToList());
|
||||
|
||||
await Clients.Caller.SendAsync("todos", serializedTodos);
|
||||
await Clients.Caller.SendAsync("getInboxTodos", serializedTodos);
|
||||
}
|
||||
|
||||
|
||||
public async Task UpdateTodo(string todoId, bool todoStatus)
|
||||
{
|
||||
await _todoRepository.UpdateTodoStatus(todoId, todoStatus);
|
||||
|
||||
var todos = await _todoRepository.GetTodosAsync();
|
||||
var todos = await _todoRepository.GetNotDoneTodos();
|
||||
var serializedTodos =
|
||||
JsonSerializer.Serialize(todos
|
||||
.Select(t => new TodoResponse { Id = t.Id, Title = t.Title, Status = t.Status })
|
||||
.ToList());
|
||||
|
||||
await Clients.Caller.SendAsync("todos", serializedTodos);
|
||||
await Clients.Caller.SendAsync("getInboxTodos", serializedTodos);
|
||||
}
|
||||
|
||||
public async Task GetTodos()
|
||||
{
|
||||
var todos = await _todoRepository.GetTodosAsync();
|
||||
var serializedTodos = JsonSerializer.Serialize(todos
|
||||
.Select(t => new TodoResponse { Id = t.Id, Title = t.Title, Status = t.Status})
|
||||
.Select(t => new TodoResponse { Id = t.Id, Title = t.Title, Status = t.Status })
|
||||
.ToList());
|
||||
|
||||
await Clients.Caller.SendAsync("todos", serializedTodos);
|
||||
}
|
||||
|
||||
|
||||
public async Task GetInboxTodos()
|
||||
{
|
||||
var todos = await _todoRepository.GetNotDoneTodos();
|
||||
var serializedTodos = JsonSerializer.Serialize(todos
|
||||
.Select(t => new TodoResponse { Id = t.Id, Title = t.Title, Status = t.Status })
|
||||
.ToList());
|
||||
|
||||
await Clients.Caller.SendAsync("getInboxTodos", serializedTodos);
|
||||
}
|
||||
}
|
||||
}
|
@@ -5,4 +5,5 @@ public interface ITodoRepository
|
||||
Task<Entities.Todo> CreateTodoAsync(string title);
|
||||
Task<IEnumerable<Entities.Todo>> GetTodosAsync();
|
||||
Task UpdateTodoStatus(string todoId, bool todoStatus);
|
||||
Task<IEnumerable<Entities.Todo>> GetNotDoneTodos();
|
||||
}
|
@@ -20,7 +20,7 @@ public class TodoRepository : ITodoRepository
|
||||
{
|
||||
var todo = new MongoTodo() { Title = title };
|
||||
await _todosCollection.InsertOneAsync(todo);
|
||||
return new Core.Entities.Todo() { Id = todo.Id, Title = todo.Title };
|
||||
return new Core.Entities.Todo() { Id = todo.Id, Title = todo.Title, Status = false};
|
||||
}
|
||||
|
||||
public async Task<IEnumerable<Core.Entities.Todo>> GetTodosAsync()
|
||||
@@ -38,4 +38,10 @@ public class TodoRepository : ITodoRepository
|
||||
.UpdateOneAsync(t => t.Id == todoId,
|
||||
Builders<MongoTodo>.Update.Set(t => t.Status, todoStatus));
|
||||
}
|
||||
|
||||
public async Task<IEnumerable<Core.Entities.Todo>> GetNotDoneTodos()
|
||||
{
|
||||
var todos = await GetTodosAsync();
|
||||
return todos.Where(t => t.Status == false);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user