Fixing action 500 error
This commit is contained in:
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user