reactredux/webapi/DataProviders/ContentDataProvider.cs

35 lines
1.1 KiB
C#

using Core.DomainObjects.Documents;
using DataProviders.Abstractions;
using DomainResults.Common;
using Microsoft.Extensions.Logging;
using MongoDB.Bson.Serialization;
using MongoDB.Driver;
namespace DataProviders {
public interface IContentDataProvider {
(Content?, IDomainResult) Get(Guid siteId, string locale);
}
public class ContentDataProvider : DataProviderBase<Content>, IContentDataProvider {
private const string _collectionName = "content";
public ContentDataProvider(
ILogger<DataProviderBase<Content>> logger,
IMongoClient client,
IIdGenerator idGenerator,
ISessionService sessionService) : base(logger, client, idGenerator, sessionService) {
}
public (Content?, IDomainResult) Get(Guid siteId, string locale) {
var (list, result) = GetWithPredicate(x => x.SiteId == siteId
&& (x.Localization.Locale == null || x.Localization.Locale.ToLower() == locale.ToLower()), _collectionName);
if (!result.IsSuccess || list == null || list.Count == 0)
return (null, result);
return (list.First(), result);
}
}
}