using Nexus.Api.Data;

namespace Nexus.Api.Repositories;

public interface ITaskRepository
{
    Task<List<WorkTask>> GetAllAsync(CancellationToken ct = default);
    ValueTask<WorkTask?> GetByIdAsync(Guid id, CancellationToken ct = default);
    Task<List<WorkTask>> GetPendingApprovalAsync(CancellationToken ct = default);
    Task<WorkTask> AddAsync(WorkTask task, CancellationToken ct = default);
    Task UpdateAsync(WorkTask task, CancellationToken ct = default);
    Task DeleteAsync(WorkTask task, CancellationToken ct = default);
    Task<int> CountAsync(CancellationToken ct = default);
    Task<int> CountByStateAsync(string state, CancellationToken ct = default);
    Task<WorkTask?> GetLastBlockedAsync(CancellationToken ct = default);
}
