Adding delete for spawnables
This commit is contained in:
@@ -40,4 +40,16 @@ public class SpawnableController : ControllerBase
|
||||
var all = await _spawnableService.GetAllAsync();
|
||||
return Ok(all);
|
||||
}
|
||||
|
||||
[HttpDelete("{id}")]
|
||||
[Authorize(Roles = "SUPER")]
|
||||
public async Task<IActionResult> Delete(string id)
|
||||
{
|
||||
var spawnable = await _spawnableService.GetByIdAsync(id);
|
||||
if (spawnable == null)
|
||||
return NotFound("Spawnable not found.");
|
||||
|
||||
await _spawnableService.DeleteAsync(id);
|
||||
return Ok($"Spawnable '{spawnable.Name}' deleted.");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -54,4 +54,16 @@ public class SpawnableControllerTests
|
||||
var ok = Assert.IsType<OkObjectResult>(result);
|
||||
Assert.Equal(list, ok.Value);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Delete_NotFound()
|
||||
{
|
||||
var svc = new Mock<SpawnableService>(config);
|
||||
svc.Setup(s => s.GetByIdAsync("id")).ReturnsAsync((Spawnable)null);
|
||||
var controller = new SpawnableController(svc.Object);
|
||||
|
||||
var result = await controller.Delete("id");
|
||||
|
||||
Assert.IsType<NotFoundObjectResult>(result);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ using System.Threading.Tasks;
|
||||
using GameAuthApi.Models;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using MongoDB.Driver;
|
||||
using MongoDB.Bson;
|
||||
|
||||
namespace GameAuthApi.Services;
|
||||
|
||||
@@ -26,4 +27,17 @@ public class SpawnableService
|
||||
{
|
||||
return await _spawnables.Find(_ => true).ToListAsync();
|
||||
}
|
||||
|
||||
public virtual async Task<Spawnable> GetByIdAsync(string id)
|
||||
{
|
||||
if (!ObjectId.TryParse(id, out _))
|
||||
return null;
|
||||
|
||||
return await _spawnables.Find(s => s.Id == id).FirstOrDefaultAsync();
|
||||
}
|
||||
|
||||
public virtual async Task DeleteAsync(string id)
|
||||
{
|
||||
await _spawnables.DeleteOneAsync(s => s.Id == id);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user