Changed design language. Added editions, better support for authors. Base for file handling
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user