Files
gameauthapi/Services/SpawnableService.cs
T

54 lines
1.5 KiB
C#

using System.Collections.Generic;
using System.Threading.Tasks;
using GameAuthApi.Models;
using Microsoft.Extensions.Configuration;
using MongoDB.Driver;
using MongoDB.Bson;
namespace GameAuthApi.Services;
public class SpawnableService
{
private readonly IMongoCollection<Spawnable> _spawnables;
public SpawnableService(IConfiguration config)
{
var client = new MongoClient(config["MongoDB:ConnectionString"]);
var db = client.GetDatabase(config["MongoDB:DatabaseName"]);
_spawnables = db.GetCollection<Spawnable>("Spawnables");
}
public virtual async Task CreateAsync(Spawnable spawnable)
{
await _spawnables.InsertOneAsync(spawnable);
}
public virtual async Task<List<Spawnable>> GetAllAsync()
{
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<Spawnable> GetByNameAsync(string name)
{
return await _spawnables.Find(s => s.Name == name).FirstOrDefaultAsync();
}
public virtual async Task DeleteAsync(string id)
{
await _spawnables.DeleteOneAsync(s => s.Id == id);
}
public virtual async Task UpdateAsync(Spawnable spawnable)
{
await _spawnables.ReplaceOneAsync(s => s.Id == spawnable.Id, spawnable);
}
}