Files
PageManager/PageManager.Api/PageManager.Api/Data/Repositories/FilesRepository.cs
T

54 lines
1.6 KiB
C#

using Microsoft.EntityFrameworkCore;
using PageManager.Api.Data.Models;
namespace PageManager.Api.Data.Repositories;
public class FilesRepository(AppDbContext db) : IFilesRepository
{
public Task<IEnumerable<BookFile>> GetByBookIdAsync(int bookId) =>
db.BookFiles
.Where(f => f.BookId == bookId)
.OrderBy(f => f.Filename)
.ToListAsync()
.ContinueWith(t => (IEnumerable<BookFile>)t.Result);
public Task<IEnumerable<BookFile>> GetUnmatchedAsync() =>
db.BookFiles
.Where(f => f.BookId == null)
.OrderBy(f => f.Filename)
.ToListAsync()
.ContinueWith(t => (IEnumerable<BookFile>)t.Result);
public Task<BookFile?> GetByIdAsync(int id) =>
db.BookFiles.FirstOrDefaultAsync(f => f.Id == id);
public Task<BookFile?> FindByHashAsync(string hash) =>
db.BookFiles.FirstOrDefaultAsync(f => f.Hash == hash);
public async Task<BookFile> AddAsync(BookFile file)
{
db.BookFiles.Add(file);
await db.SaveChangesAsync();
return file;
}
public async Task<BookFile?> AssignAsync(int id, int? bookId, int? editionId)
{
var file = await db.BookFiles.FindAsync(id);
if (file is null) return null;
file.BookId = bookId;
file.EditionId = editionId;
await db.SaveChangesAsync();
return file;
}
public async Task<bool> DeleteAsync(int id)
{
var file = await db.BookFiles.FindAsync(id);
if (file is null) return false;
db.BookFiles.Remove(file);
await db.SaveChangesAsync();
return true;
}
}