77 lines
2.1 KiB
C#
77 lines
2.1 KiB
C#
using DeepDrftModels.Entities;
|
|
using DeepDrftModels.Models;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using DeepDrftWeb.Services.Data;
|
|
|
|
namespace DeepDrftWeb.Services.Repositories;
|
|
|
|
public class TrackRepository
|
|
{
|
|
private readonly DeepDrftContext _db;
|
|
|
|
public TrackRepository(DeepDrftContext db)
|
|
{
|
|
_db = db;
|
|
}
|
|
|
|
public async Task<TrackEntity?> GetById(long id)
|
|
{
|
|
return await _db.Tracks.FindAsync(id);
|
|
}
|
|
|
|
public async Task<List<TrackEntity>> GetAll()
|
|
{
|
|
return await _db.Tracks.ToListAsync();
|
|
}
|
|
|
|
public async Task<PagedResult<TrackEntity>> GetPage(PagingParameters<TrackEntity> pageParameters)
|
|
{
|
|
var count = await _db.Tracks.CountAsync();
|
|
|
|
var page = await _db.Tracks
|
|
.OrderBy(pageParameters.OrderBy ?? (t => t.Id))
|
|
.Skip((pageParameters.Page - 1) * pageParameters.PageSize)
|
|
.Take(pageParameters.PageSize)
|
|
.ToListAsync();
|
|
|
|
return new PagedResult<TrackEntity>(page, count, pageParameters.Page, pageParameters.PageSize);
|
|
}
|
|
|
|
public async Task<TrackEntity> Create(TrackEntity newTrack)
|
|
{
|
|
var track = _db.Tracks.Add(newTrack);
|
|
await _db.SaveChangesAsync();
|
|
return track.Entity;
|
|
}
|
|
|
|
public async Task<TrackEntity> Update(TrackEntity track)
|
|
{
|
|
var trackEntity = await GetById(track.Id);
|
|
|
|
if (trackEntity == null)
|
|
{
|
|
return await Create(track);
|
|
}
|
|
|
|
trackEntity.Album = track.Album;
|
|
trackEntity.Artist = track.Artist;
|
|
trackEntity.Genre = track.Genre;
|
|
trackEntity.ImagePath = track.ImagePath;
|
|
trackEntity.EntryKey = track.EntryKey;
|
|
trackEntity.ReleaseDate = track.ReleaseDate;
|
|
trackEntity.TrackName = track.TrackName;
|
|
|
|
await _db.SaveChangesAsync();
|
|
return trackEntity;
|
|
}
|
|
|
|
public async Task Delete(long id)
|
|
{
|
|
var track = await GetById(id);
|
|
if (track != null)
|
|
{
|
|
_db.Tracks.Remove(track);
|
|
await _db.SaveChangesAsync();
|
|
}
|
|
}
|
|
} |