54 lines
1.6 KiB
C#
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;
|
|
}
|
|
}
|