Elimnating repository pattern

This commit is contained in:
2023-06-01 08:51:19 -05:00
parent 0d5eb3e801
commit d7c0f373f4
18 changed files with 11 additions and 364 deletions

View File

@@ -6,26 +6,26 @@ using Venues.Entities;
namespace Venues.DbContexts
{
public partial class MlbGameDayContext : DbContext
public partial class VenuesContext : DbContext
{
public MlbGameDayContext()
public VenuesContext()
{
}
public MlbGameDayContext(DbContextOptions<MlbGameDayContext> options)
public VenuesContext(DbContextOptions<VenuesContext> options)
: base(options)
{
}
public virtual DbSet<Venue> Venues { get; set; } = null!;
//protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
//{
// if (!optionsBuilder.IsConfigured)
// {
// optionsBuilder.UseNpgsql("Host=localhost;Database=mlb-game-day;Username=postgres;Password=postgres");
// }
//}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if (!optionsBuilder.IsConfigured)
{
optionsBuilder.UseNpgsql("Host=localhost;Port=5460;Database=venues;Username=postgres;Password=postgres");
}
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{

View File

@@ -1,22 +0,0 @@
using System;
namespace Venues.Filter
{
public class PaginationFilter
{
public int PageNumber { get; set; }
public int PageSize { get; set; }
public PaginationFilter()
{
this.PageNumber = 1;
this.PageSize = 10;
}
public PaginationFilter(int pageNumber, int pageSize)
{
this.PageNumber = pageNumber < 1 ? 1 : pageNumber;
this.PageSize = pageSize > 10 ? 10 : pageSize;
}
}
}

View File

@@ -1,12 +0,0 @@
using System;
namespace Venues.Models
{
public class VenueDto
{
public int Id { get; set; }
public string Name { get; set; }
public string Link { get; set; }
public string Active { get; set; }
}
}

View File

@@ -1,14 +0,0 @@
using System;
using AutoMapper;
namespace Venues.Profiles
{
public class VenueProfile : Profile
{
public VenueProfile()
{
CreateMap<Entities.Venue, Models.VenueDto>();
}
}
}

View File

@@ -1,11 +0,0 @@
using Venues.Entities;
namespace Venues.Services
{
public interface IVenuesRepository
{
Task<(IEnumerable<Venue>, PaginationMetadata)> GetVenuesAsync(int pageNumber, int pageSize);
Task<Venue?> GetVenueAsync(int venueId);
}
}

View File

@@ -1,20 +0,0 @@
using System;
namespace Venues.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

@@ -1,36 +0,0 @@
using System;
using Microsoft.EntityFrameworkCore;
using Venues.DbContexts;
using Venues.Entities;
namespace Venues.Services
{
public class VenuesRepository : IVenuesRepository
{
private readonly MlbGameDayContext _context;
public VenuesRepository(MlbGameDayContext context)
{
_context = context ?? throw new ArgumentNullException(nameof(context));
}
public async Task<Venue?> GetVenueAsync(int venueId)
{
return await _context.Venues.Where(v => v.Id == venueId).FirstOrDefaultAsync();
}
public async Task<(IEnumerable<Venue>, PaginationMetadata)> GetVenuesAsync(int pageNumber, int pageSize)
{
var collection = _context.Venues as IQueryable<Venue>;
var totalItemCount = await collection.CountAsync();
var paginationMetadata = new PaginationMetadata(totalItemCount, pageSize, pageNumber);
var collectionToReturn = await collection.OrderBy(v => v.Name)
.Skip(pageSize * (pageNumber -1))
.Take(pageSize)
.ToListAsync();
return (collectionToReturn, paginationMetadata);
}
}
}

View File

@@ -1,27 +0,0 @@
using System;
using Venues.Services;
namespace Venues.Wrappers
{
public class PagedResponse<T>: Response<T>
{
public int TotalItemCount { get; set; }
public int TotalPageCount { get; set; }
public int PageSize { get; set; }
public int CurrentPage { get; set; }
public PagedResponse(T results, PaginationMetadata paginationMetadata)
{
this.TotalItemCount = paginationMetadata.TotalItemCount;
this.TotalPageCount = paginationMetadata.TotalPageCount;
this.CurrentPage = paginationMetadata.CurrentPage;
this.PageSize = paginationMetadata.PageSize;
this.CurrentPage = paginationMetadata.CurrentPage;
this.Results = results;
this.Message = null;
this.Succeeded = true;
this.Errors = null;
}
}
}

View File

@@ -1,26 +0,0 @@
using System;
namespace Venues.Wrappers
{
public class Response<T>
{
public T Results { get; set; }
public bool Succeeded { get; set; }
public string[] Errors { get; set; }
public string Message { get; set; }
public Response()
{
}
public Response(T results)
{
Succeeded = true;
Message = string.Empty;
Errors = null;
Results = results;
}
}
}