Fixing action 500 error
This commit is contained in:
@@ -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<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);
|
||||
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<Location>.Filter.Eq(l => l.Id, locationId) & Builders<Location>.Filter.Ne("Content", BsonNull.Value);
|
||||
var update = Builders<Location>.Update.Pull(l => l.Content, itemId);
|
||||
await _locations.UpdateOneAsync(l => l.Id == locationId, update);
|
||||
await _locations.UpdateOneAsync(filter, update);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user