Fixing action 500 error

This commit is contained in:
hz
2025-06-09 19:34:17 -05:00
parent 603a18e006
commit e35d507fcd
+11 -2
View File
@@ -1,4 +1,5 @@
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Collections.Generic;
using GameAuthApi.Models; using GameAuthApi.Models;
using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration;
using MongoDB.Bson; using MongoDB.Bson;
@@ -57,13 +58,21 @@ public class LocationService
public virtual async Task AddItemToLocationAsync(string locationId, string itemId) public virtual async Task AddItemToLocationAsync(string locationId, string itemId)
{ {
var idFilter = Builders<Location>.Filter.Eq(l => l.Id, locationId);
// if the Content array is null, initialize it first
var nullFilter = idFilter & Builders<Location>.Filter.Eq("Content", BsonNull.Value);
var initArray = Builders<Location>.Update.Set(l => l.Content, new List<string>());
await _locations.UpdateOneAsync(nullFilter, initArray);
var update = Builders<Location>.Update.Push(l => l.Content, itemId); var update = Builders<Location>.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) public virtual async Task RemoveItemFromLocationAsync(string locationId, string itemId)
{ {
var filter = Builders<Location>.Filter.Eq(l => l.Id, locationId) & Builders<Location>.Filter.Ne("Content", BsonNull.Value);
var update = Builders<Location>.Update.Pull(l => l.Content, itemId); var update = Builders<Location>.Update.Pull(l => l.Content, itemId);
await _locations.UpdateOneAsync(l => l.Id == locationId, update); await _locations.UpdateOneAsync(filter, update);
} }
} }