using WyvernInventory.Core.Interfaces.Repos; using WyvernInventory.Core.Models; namespace WyvernInventory.Infrastructure.Repos; public class GenericInventoryItemRepo : IDbObjectRepo { private List _genericItemList = []; public async Task> GetAsync(Predicate? filter = null) { List result = []; if (filter is null) return _genericItemList; result.AddRange(_genericItemList.Where(item => filter(item))); return result; } public async Task<(int created, int updated)> UpsertAsync(List items) { int created = 0; int updated = 0; foreach (var item in items) { if (item.Id is not null && _genericItemList.Any(_ => _.Id == item.Id)) { int index = _genericItemList.IndexOf(_genericItemList.Find(_ => _.Id == item.Id)); _genericItemList[index] = item; updated++; } else { item.Id = _genericItemList.Count; _genericItemList.Add(item); created++; } } return (created, updated); } public async Task DeleteAsync(List items) { foreach (var item in items) { _genericItemList.Remove(_genericItemList.Find(_ => _.Id == item.Id)); } } }