From e35d507fcd7e5c8a3a248ee1de3ca94c71857b27 Mon Sep 17 00:00:00 2001 From: hz Date: Mon, 9 Jun 2025 19:34:17 -0500 Subject: [PATCH] Fixing action 500 error --- Services/LocationService.cs | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/Services/LocationService.cs b/Services/LocationService.cs index 5739fa3..d63e2b8 100644 --- a/Services/LocationService.cs +++ b/Services/LocationService.cs @@ -1,4 +1,5 @@ using System.Threading.Tasks; +using System.Collections.Generic; using GameAuthApi.Models; using Microsoft.Extensions.Configuration; using MongoDB.Bson; @@ -57,13 +58,21 @@ public class LocationService public virtual async Task AddItemToLocationAsync(string locationId, string itemId) { + var idFilter = Builders.Filter.Eq(l => l.Id, locationId); + + // if the Content array is null, initialize it first + var nullFilter = idFilter & Builders.Filter.Eq("Content", BsonNull.Value); + var initArray = Builders.Update.Set(l => l.Content, new List()); + await _locations.UpdateOneAsync(nullFilter, initArray); + var update = Builders.Update.Push(l => l.Content, itemId); - await _locations.UpdateOneAsync(l => l.Id == locationId, update); + await _locations.UpdateOneAsync(idFilter, update); } public virtual async Task RemoveItemFromLocationAsync(string locationId, string itemId) { + var filter = Builders.Filter.Eq(l => l.Id, locationId) & Builders.Filter.Ne("Content", BsonNull.Value); var update = Builders.Update.Pull(l => l.Content, itemId); - await _locations.UpdateOneAsync(l => l.Id == locationId, update); + await _locations.UpdateOneAsync(filter, update); } }