$mermaidjs
Clean Architecture Demo
Loading...
Searching...
No Matches
TaskRepository.cs
Go to the documentation of this file.
1// TaskManagement.Infrastructure/Persistence/Repositories/TaskRepository.cs
2using Microsoft.EntityFrameworkCore;
5
7
53public sealed class TaskRepository : ITaskRepository
54{
55 private readonly TaskDbContext _dbContext;
56 public TaskRepository(TaskDbContext dbContext)
57 {
58 _dbContext = dbContext;
59 }
60 public async Task<TaskItem?> GetByIdAsync(
61 Guid id,
62 CancellationToken cancellationToken = default)
63 {
64 return await _dbContext.Tasks
65 .AsNoTracking() // Read-only query
66 .FirstOrDefaultAsync(t => t.Id == id, cancellationToken).ConfigureAwait(false);
67 }
68 public async Task<IReadOnlyList<TaskItem>> GetByAssigneeAsync(
69 Guid userId,
70 CancellationToken cancellationToken = default)
71 {
72 return await _dbContext.Tasks
73 .AsNoTracking()
74 .Where(t => t.AssignedTo == userId)
75 .OrderByDescending(t => t.Priority)
76 .ThenBy(t => t.DueDate)
77 .ToListAsync(cancellationToken).ConfigureAwait(false);
78 }
79 public async Task<IReadOnlyList<TaskItem>> GetOverdueAsync(
80 CancellationToken cancellationToken = default)
81 {
82 return await _dbContext.Tasks
83 .AsNoTracking()
84 .Where(t => t.DueDate < DateTime.UtcNow
85 && t.Status != TaskManagement.Domain.Entities.TaskStatus.Completed)
86 .ToListAsync(cancellationToken).ConfigureAwait(false);
87 }
88 public async Task AddAsync(
89 TaskItem task,
90 CancellationToken cancellationToken = default)
91 {
92 await _dbContext.Tasks.AddAsync(task, cancellationToken).ConfigureAwait(false);
93 }
94 public void Update(TaskItem task)
95 {
96 _dbContext.Tasks.Update(task);
97 }
98 public void Delete(TaskItem task)
99 {
100 _dbContext.Tasks.Remove(task);
101 }
102}
TaskItem es una entidad del dominio que representa una tarea en el sistema.
Definition TaskItem.cs:51
TaskRepository es el repositorio de escritura para entidades TaskItem.
async Task< TaskItem?> GetByIdAsync(Guid id, CancellationToken cancellationToken=default)
async Task< IReadOnlyList< TaskItem > > GetOverdueAsync(CancellationToken cancellationToken=default)
async Task AddAsync(TaskItem task, CancellationToken cancellationToken=default)
async Task< IReadOnlyList< TaskItem > > GetByAssigneeAsync(Guid userId, CancellationToken cancellationToken=default)
TaskDbContext es el DbContext de Entity Framework Core para gestión de tareas.
ITaskRepository es la interfaz del repositorio de escritura para agregado TaskItem.