Files
Tabletop/Tabletop.Core/Services/ClassServices.cs
2025-12-30 02:22:44 +01:00

54 lines
2.1 KiB
C#

using DbController;
using Tabletop.Core.Models;
namespace Tabletop.Core.Services
{
public class ClassService : IModelService<Class, int>
{
public Task CreateAsync(Class input, IDbController dbController, CancellationToken cancellationToken = default)
{
throw new NotImplementedException();
}
public Task DeleteAsync(Class input, IDbController dbController, CancellationToken cancellationToken = default)
{
throw new NotImplementedException();
}
public static async Task<List<Class>> GetAllAsync(IDbController dbController, CancellationToken cancellationToken = default)
{
string sql = "SELECT * FROM Classes";
var list = await dbController.SelectDataAsync<Class>(sql, cancellationToken: cancellationToken);
await LoadClassDescriptionsAsync(list, dbController, cancellationToken);
return list;
}
public Task<Class?> GetAsync(int identifier, IDbController dbController, CancellationToken cancellationToken = default)
{
throw new NotImplementedException();
}
private static async Task LoadClassDescriptionsAsync(List<Class> list, IDbController dbController, CancellationToken cancellationToken = default)
{
cancellationToken.ThrowIfCancellationRequested();
if (list.Count != 0)
{
IEnumerable<int> classIds = list.Select(x => x.ClassId);
string sql = $"SELECT * FROM ClassDescription WHERE ClassId IN ({string.Join(",", classIds)})";
List<ClassDescription> descriptions = await dbController.SelectDataAsync<ClassDescription>(sql, null, cancellationToken);
foreach (var item in list)
{
item.Description = [.. descriptions.Where(x => x.ClassId == item.ClassId)];
}
}
}
public Task UpdateAsync(Class input, IDbController dbController, CancellationToken cancellationToken = default)
{
throw new NotImplementedException();
}
}
}