public long CreateItem(long ownerId, Item item) { Maple2.Sql.Model.Item model = itemConverter.ToModel(item); model.OwnerId = ownerId; context.Item.Add(model); context.SaveChanges(); return(model.Id); }
public bool DeleteItem(long itemUid) { Maple2.Sql.Model.Item item = context.Item.Find(itemUid); if (item.OwnerId != 0) { return(false); } context.Item.Remove(item); return(context.TrySaveChanges()); }
// Saves items for ownerId, removing any owned items that are not present. public void StageSyncItems(long ownerId, IEnumerable <Item> items) { Dictionary <long, Maple2.Sql.Model.Item> dbItems = context.Item.AsQueryable() .Where(dbItem => dbItem.OwnerId == ownerId) .ToDictionary(dbItem => dbItem.Id, dbItem => dbItem); foreach (Item item in items) { Maple2.Sql.Model.Item dbItem; if (item.Id == 0) // New items will fall back to creation { dbItem = new Maple2.Sql.Model.Item(); } else if (!dbItems.Remove(item.Id, out dbItem)) { dbItem = context.Item.Find(item.Id); if (dbItem == null) // Item does not exist { logger.LogError($"Failed to save non-existent item: {item.Id} for {ownerId}"); continue; } } StageSocketGemstones(item); itemConverter.ToModel(item, dbItem); dbItem.OwnerId = ownerId; } // Remaining items are no longer owned (soft-delete) foreach (Maple2.Sql.Model.Item dbItem in dbItems.Values) { // Ensure that you still own this item at this point before "deleting" if (dbItem.OwnerId == ownerId) { dbItem.OwnerId = 0; } } }
public void UpdateItemAmount(Item item) { Maple2.Sql.Model.Item dbItem = context.Item.Find(item.Id); storage.itemConverter.ToModel(item, dbItem); context.SaveChanges(); }