Changed design language. Added editions, better support for authors. Base for file handling

This commit is contained in:
2026-03-28 15:17:20 +02:00
parent cbd7f52535
commit 5acde17a53
84 changed files with 5861 additions and 1983 deletions
@@ -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;
}
}