This commit is contained in:
Noah Spannbauer
2023-02-15 12:46:50 -06:00
parent c2d8bd1838
commit 0d5eb3e801
99 changed files with 20124 additions and 213 deletions

View File

@@ -0,0 +1,12 @@
using System;
using Teams.Entities;
namespace Teams.Services
{
public interface ITeamsRepository
{
Task<Team?> GetTeamAsync(int teamId);
Task<(IEnumerable<Team>, PaginationMetadata)> GetTeamsAsync(int pageNumber, int pageSize);
}
}

View File

@@ -0,0 +1,21 @@
using System;
namespace Teams.Services
{
public class PaginationMetadata
{
public int TotalItemCount { get; set; }
public int TotalPageCount { get; set; }
public int PageSize { get; set; }
public int CurrentPage { get; set; }
public PaginationMetadata(int totalItemCount, int pageSize, int currentPage)
{
TotalItemCount = totalItemCount;
PageSize = pageSize;
CurrentPage = currentPage;
TotalPageCount = (int)Math.Ceiling(totalItemCount / (double)pageSize);
}
}
}

View File

@@ -0,0 +1,36 @@
using System;
using Microsoft.EntityFrameworkCore;
using Teams.DbContexts;
using Teams.Entities;
namespace Teams.Services
{
public class TeamsRepository : ITeamsRepository
{
private readonly MlbGameDayContext _context;
public TeamsRepository(MlbGameDayContext context)
{
_context = context ?? throw new ArgumentNullException(nameof(context));
}
public async Task<Team?> GetTeamAsync(int teamId)
{
return await _context.Teams.Where(t => t.Id == teamId).FirstOrDefaultAsync();
}
public async Task<(IEnumerable<Team>, PaginationMetadata)> GetTeamsAsync(int pageNumber, int pageSize)
{
var collection = _context.Teams as IQueryable<Team>;
var totalItemCount = await collection.CountAsync();
var paginationMetadata = new PaginationMetadata(totalItemCount, pageSize, pageNumber);
var collectionToReturn = await collection.OrderBy(t => t.Name)
.Skip(pageSize * (pageNumber - 1))
.Take(pageSize)
.ToListAsync();
return (collectionToReturn, paginationMetadata);
}
}
}