Implement UserData and TitleData

This commit is contained in:
AeonLucid
2021-11-03 21:29:54 +01:00
parent e5e3e7dff3
commit 667d19e9f2
12 changed files with 356 additions and 37 deletions
@@ -0,0 +1,51 @@
using System;
using System.Threading.Tasks;
using Microsoft.Extensions.Options;
using MongoDB.Driver;
using Prospect.Server.Api.Config;
using Prospect.Server.Api.Services.Database.Models;
namespace Prospect.Server.Api.Services.Database
{
public class DbUserDataService : BaseDbService<PlayFabUserData>
{
public DbUserDataService(IOptions<DatabaseSettings> options) : base(options, nameof(PlayFabUserData))
{
}
public async Task<bool> HasAsync(string playFabId, string key)
{
return await Collection.Find(data => data.PlayFabId == playFabId && data.Key == key).AnyAsync();
}
public async Task<PlayFabUserData> FindAsync(string playFabId, string key)
{
return await Collection.Find(data => data.PlayFabId == playFabId && data.Key == key).SingleOrDefaultAsync();
}
public async Task<PlayFabUserData> InsertAsync(string playFabId, string key, string value, bool isPublic)
{
var data = new PlayFabUserData
{
PlayFabId = playFabId,
Key = key,
Value = value,
Public = isPublic,
LastUpdated = DateTime.UtcNow
};
await Collection.InsertOneAsync(data);
return data;
}
public async Task<IAsyncCursor<PlayFabUserData>> AllAsync(string playFabId, bool publicOnly)
{
var query = publicOnly
? Collection.Find(data => data.PlayFabId == playFabId && data.Public)
: Collection.Find(data => data.PlayFabId == playFabId);
return await query.ToCursorAsync();
}
}
}