80 lines
2.8 KiB
C#
80 lines
2.8 KiB
C#
using PettingZoo.Core.ExportImport.Publisher;
|
|
using PettingZoo.Core.Settings;
|
|
|
|
namespace PettingZoo.Settings.LiteDB
|
|
{
|
|
public class LiteDBPublisherMessagesRepository : BaseLiteDBRepository, IPublisherMessagesRepository
|
|
{
|
|
private const string CollectionMessages = "messages";
|
|
|
|
|
|
public LiteDBPublisherMessagesRepository() : base(@"publisherMessages")
|
|
{
|
|
}
|
|
|
|
|
|
public async Task<IEnumerable<StoredPublisherMessage>> GetStored()
|
|
{
|
|
using var database = GetDatabase();
|
|
var collection = database.GetCollection<PublisherMessageRecord>(CollectionMessages);
|
|
|
|
return (await collection.FindAllAsync())
|
|
.Select(r => new StoredPublisherMessage(r.Id, r.DisplayName, r.Message))
|
|
.ToArray();
|
|
}
|
|
|
|
|
|
public async Task<StoredPublisherMessage> Add(string displayName, PublisherMessage message)
|
|
{
|
|
using var database = GetDatabase();
|
|
var collection = database.GetCollection<PublisherMessageRecord>(CollectionMessages);
|
|
|
|
var id = Guid.NewGuid();
|
|
await collection.InsertAsync(PublisherMessageRecord.FromPublisherMessage(id, displayName, message));
|
|
|
|
return new StoredPublisherMessage(id, displayName, message);
|
|
}
|
|
|
|
|
|
public async Task<StoredPublisherMessage> Update(Guid id, string displayName, PublisherMessage message)
|
|
{
|
|
using var database = GetDatabase();
|
|
var collection = database.GetCollection<PublisherMessageRecord>(CollectionMessages);
|
|
|
|
await collection.UpdateAsync(PublisherMessageRecord.FromPublisherMessage(id, displayName, message));
|
|
return new StoredPublisherMessage(id, displayName, message);
|
|
}
|
|
|
|
|
|
public async Task Delete(Guid id)
|
|
{
|
|
using var database = GetDatabase();
|
|
var collection = database.GetCollection<PublisherMessageRecord>(CollectionMessages);
|
|
|
|
await collection.DeleteAsync(id);
|
|
}
|
|
|
|
|
|
// ReSharper disable MemberCanBePrivate.Local - for LiteDB
|
|
// ReSharper disable PropertyCanBeMadeInitOnly.Local
|
|
private class PublisherMessageRecord
|
|
{
|
|
public Guid Id { get; set; }
|
|
public string DisplayName { get; set; } = null!;
|
|
public PublisherMessage Message { get; set; } = null!;
|
|
|
|
|
|
public static PublisherMessageRecord FromPublisherMessage(Guid id, string displayName, PublisherMessage message)
|
|
{
|
|
return new PublisherMessageRecord
|
|
{
|
|
Id = id,
|
|
DisplayName = displayName,
|
|
Message = message
|
|
};
|
|
}
|
|
}
|
|
// ReSharper restore PropertyCanBeMadeInitOnly.Local
|
|
// ReSharper restore MemberCanBePrivate.Local
|
|
}
|
|
} |