Initial Commit

This commit is contained in:
2026-04-20 19:14:50 -05:00
parent f6b76d78fa
commit 4674529b91
28 changed files with 452 additions and 0 deletions
@@ -0,0 +1,53 @@
using WyvernInventory.Core.Interfaces.Repos;
using WyvernInventory.Core.Models;
namespace WyvernInventory.Infrastructure.Repos;
public class GenericInventoryItemRepo : IDbObjectRepo<GenericInventoryItem>
{
private List<GenericInventoryItem> _genericItemList = [];
public async Task<List<GenericInventoryItem>> GetAsync(Predicate<GenericInventoryItem>? filter = null)
{
List<GenericInventoryItem> 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<GenericInventoryItem> 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<GenericInventoryItem> items)
{
foreach (var item in items)
{
_genericItemList.Remove(_genericItemList.Find(_ => _.Id == item.Id));
}
}
}