using DbController; using Tabletop.Core.Models; namespace Tabletop.Core.Services { public class ClassService : IModelService { 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> GetAllAsync(IDbController dbController, CancellationToken cancellationToken = default) { string sql = "SELECT * FROM Classes"; var list = await dbController.SelectDataAsync(sql, cancellationToken: cancellationToken); await LoadClassDescriptionsAsync(list, dbController, cancellationToken); return list; } public Task GetAsync(int identifier, IDbController dbController, CancellationToken cancellationToken = default) { throw new NotImplementedException(); } private static async Task LoadClassDescriptionsAsync(List list, IDbController dbController, CancellationToken cancellationToken = default) { cancellationToken.ThrowIfCancellationRequested(); if (list.Count != 0) { IEnumerable classIds = list.Select(x => x.ClassId); string sql = $"SELECT * FROM ClassDescription WHERE ClassId IN ({string.Join(",", classIds)})"; List descriptions = await dbController.SelectDataAsync(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(); } } }