Browse Source

LanguagesConfig => Languages.

pull/596/head
Sebastian 5 years ago
parent
commit
b7910ccd4a
  1. 6
      backend/src/Squidex.Domain.Apps.Entities/Apps/AppDomainObject.cs
  2. 2
      backend/src/Squidex.Domain.Apps.Entities/Apps/AppEntityExtensions.cs
  3. 2
      backend/src/Squidex.Domain.Apps.Entities/Apps/IAppEntity.cs
  4. 10
      backend/src/Squidex.Domain.Apps.Entities/Apps/State/AppState.cs
  5. 2
      backend/src/Squidex.Domain.Apps.Entities/Contents/ContentsSearchSource.cs
  6. 2
      backend/src/Squidex.Domain.Apps.Entities/Contents/GraphQL/Types/ContentResolvers.cs
  7. 8
      backend/src/Squidex.Domain.Apps.Entities/Contents/Queries/Steps/ConvertData.cs
  8. 4
      backend/src/Squidex.Domain.Apps.Entities/Contents/Queries/Steps/ResolveReferences.cs
  9. 3
      backend/src/Squidex.Infrastructure/EventSourcing/EventConsumerInfo.cs
  10. 8
      backend/src/Squidex.Infrastructure/EventSourcing/Grains/BatchSubscriber.cs
  11. 13
      backend/src/Squidex.Infrastructure/EventSourcing/Grains/EventConsumerGrain.cs
  12. 8
      backend/src/Squidex.Infrastructure/EventSourcing/Grains/EventConsumerManagerGrain.cs
  13. 9
      backend/src/Squidex.Infrastructure/EventSourcing/Grains/IEventConsumerGrain.cs
  14. 6
      backend/src/Squidex.Infrastructure/EventSourcing/Grains/IEventConsumerManagerGrain.cs
  15. 5
      backend/src/Squidex.Infrastructure/EventSourcing/RetrySubscription.cs
  16. 2
      backend/src/Squidex/Areas/Api/Controllers/Apps/Models/AppLanguageDto.cs
  17. 2
      backend/src/Squidex/Areas/Api/Controllers/Apps/Models/AppLanguagesDto.cs
  18. 6
      backend/src/Squidex/Areas/Api/Controllers/EventConsumers/EventConsumersController.cs
  19. 6
      backend/tests/Squidex.Domain.Apps.Entities.Tests/Apps/AppDomainObjectTests.cs
  20. 2
      backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/MongoDb/MongoDbQueryTests.cs
  21. 2
      backend/tests/Squidex.Domain.Apps.Entities.Tests/TestHelpers/Mocks.cs

6
backend/src/Squidex.Domain.Apps.Entities/Apps/AppDomainObject.cs

@ -192,7 +192,7 @@ namespace Squidex.Domain.Apps.Entities.Apps
case AddLanguage addLanguage:
return UpdateReturn(addLanguage, c =>
{
GuardAppLanguages.CanAdd(Snapshot.LanguagesConfig, c);
GuardAppLanguages.CanAdd(Snapshot.Languages, c);
AddLanguage(c);
@ -202,7 +202,7 @@ namespace Squidex.Domain.Apps.Entities.Apps
case RemoveLanguage removeLanguage:
return UpdateReturn(removeLanguage, c =>
{
GuardAppLanguages.CanRemove(Snapshot.LanguagesConfig, c);
GuardAppLanguages.CanRemove(Snapshot.Languages, c);
RemoveLanguage(c);
@ -212,7 +212,7 @@ namespace Squidex.Domain.Apps.Entities.Apps
case UpdateLanguage updateLanguage:
return UpdateReturn(updateLanguage, c =>
{
GuardAppLanguages.CanUpdate(Snapshot.LanguagesConfig, c);
GuardAppLanguages.CanUpdate(Snapshot.Languages, c);
UpdateLanguage(c);

2
backend/src/Squidex.Domain.Apps.Entities/Apps/AppEntityExtensions.cs

@ -13,7 +13,7 @@ namespace Squidex.Domain.Apps.Entities.Apps
{
public static PartitionResolver PartitionResolver(this IAppEntity entity)
{
return entity.LanguagesConfig.ToResolver();
return entity.Languages.ToResolver();
}
}
}

2
backend/src/Squidex.Domain.Apps.Entities/Apps/IAppEntity.cs

@ -34,7 +34,7 @@ namespace Squidex.Domain.Apps.Entities.Apps
AppContributors Contributors { get; }
LanguagesConfig LanguagesConfig { get; }
LanguagesConfig Languages { get; }
Workflows Workflows { get; }

10
backend/src/Squidex.Domain.Apps.Entities/Apps/State/AppState.cs

@ -40,7 +40,7 @@ namespace Squidex.Domain.Apps.Entities.Apps.State
public AppContributors Contributors { get; set; } = AppContributors.Empty;
public LanguagesConfig LanguagesConfig { get; set; } = LanguagesConfig.English;
public LanguagesConfig Languages { get; set; } = LanguagesConfig.English;
public Workflows Workflows { get; set; } = Workflows.Empty;
@ -138,7 +138,7 @@ namespace Squidex.Domain.Apps.Entities.Apps.State
if (ev.IsMaster)
{
l = LanguagesConfig.MakeMaster(ev.Language);
l = Languages.MakeMaster(ev.Language);
}
return l;
@ -177,11 +177,11 @@ namespace Squidex.Domain.Apps.Entities.Apps.State
private bool UpdateLanguages<T>(T @event, Func<T, LanguagesConfig, LanguagesConfig> update)
{
var previous = LanguagesConfig;
var previous = Languages;
LanguagesConfig = update(@event, previous);
Languages = update(@event, previous);
return !ReferenceEquals(previous, LanguagesConfig);
return !ReferenceEquals(previous, Languages);
}
private bool UpdatePatterns<T>(T @event, Func<T, AppPatterns, AppPatterns> update)

2
backend/src/Squidex.Domain.Apps.Entities/Contents/ContentsSearchSource.cs

@ -71,7 +71,7 @@ namespace Squidex.Domain.Apps.Entities.Contents
{
var url = urlGenerator.ContentUI(appId, content.SchemaId, content.Id);
var name = FormatName(content, context.App.LanguagesConfig.Master);
var name = FormatName(content, context.App.Languages.Master);
result.Add(name, SearchResultType.Content, url, content.SchemaDisplayName);
}

2
backend/src/Squidex.Domain.Apps.Entities/Contents/GraphQL/Types/ContentResolvers.cs

@ -77,7 +77,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL.Types
public static readonly IFieldResolver FlatData = Resolve((content, c, context) =>
{
var language = context.Context.App.LanguagesConfig.Master;
var language = context.Context.App.Languages.Master;
return content.Data.ToFlatten(language);
});

8
backend/src/Squidex.Domain.Apps.Entities/Contents/Queries/Steps/ConvertData.cs

@ -115,21 +115,21 @@ namespace Squidex.Domain.Apps.Entities.Contents.Queries.Steps
yield return FieldConverters.ForValues(ValueConverters.ForNested(cleanReferences));
}
yield return FieldConverters.ResolveInvariant(context.App.LanguagesConfig);
yield return FieldConverters.ResolveLanguages(context.App.LanguagesConfig);
yield return FieldConverters.ResolveInvariant(context.App.Languages);
yield return FieldConverters.ResolveLanguages(context.App.Languages);
if (!context.IsFrontendClient)
{
if (context.ShouldResolveLanguages())
{
yield return FieldConverters.ResolveFallbackLanguages(context.App.LanguagesConfig);
yield return FieldConverters.ResolveFallbackLanguages(context.App.Languages);
}
var languages = context.Languages();
if (languages.Any())
{
yield return FieldConverters.FilterLanguages(context.App.LanguagesConfig, languages);
yield return FieldConverters.FilterLanguages(context.App.Languages, languages);
}
var assetUrls = context.AssetUrls().ToList();

4
backend/src/Squidex.Domain.Apps.Entities/Contents/Queries/Steps/ResolveReferences.cs

@ -121,7 +121,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.Queries.Steps
private static JsonObject Format(IContentEntity content, Context context, ISchemaEntity referencedSchema)
{
return content.Data.FormatReferences(referencedSchema.SchemaDef, context.App.LanguagesConfig);
return content.Data.FormatReferences(referencedSchema.SchemaDef, context.App.Languages);
}
private static JsonObject CreateFallback(Context context, List<IEnrichedContentEntity> referencedContents)
@ -130,7 +130,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.Queries.Steps
var value = JsonValue.Object();
foreach (var partitionKey in context.App.LanguagesConfig.AllKeys)
foreach (var partitionKey in context.App.Languages.AllKeys)
{
value.Add(partitionKey, text);
}

3
backend/src/Squidex.Infrastructure/EventSourcing/EventConsumerInfo.cs

@ -5,8 +5,11 @@
// All rights reserved. Licensed under the MIT license.
// ==========================================================================
using Orleans.Concurrency;
namespace Squidex.Infrastructure.EventSourcing
{
[Immutable]
public sealed class EventConsumerInfo
{
public bool IsStopped { get; set; }

8
backend/src/Squidex.Infrastructure/EventSourcing/Grains/BatchSubscriber.cs

@ -17,7 +17,6 @@ namespace Squidex.Infrastructure.EventSourcing.Grains
internal sealed class BatchSubscriber : IEventSubscriber
{
private readonly ITargetBlock<Job> pipelineStart;
private readonly IEventDataFormatter eventDataFormatter;
private readonly IEventSubscription eventSubscription;
private readonly IDataflowBlock pipelineEnd;
@ -46,8 +45,6 @@ namespace Squidex.Infrastructure.EventSourcing.Grains
Func<IEventSubscriber, IEventSubscription> factory,
TaskScheduler scheduler)
{
this.eventDataFormatter = eventDataFormatter;
var batchSize = Math.Max(1, eventConsumer!.BatchSize);
var batchDelay = Math.Max(100, eventConsumer.BatchDelay);
@ -168,6 +165,11 @@ namespace Squidex.Infrastructure.EventSourcing.Grains
public Task OnErrorAsync(IEventSubscription subscription, Exception exception)
{
if (exception is OperationCanceledException)
{
return Task.CompletedTask;
}
var job = new Job
{
Sender = subscription,

13
backend/src/Squidex.Infrastructure/EventSourcing/Grains/EventConsumerGrain.cs

@ -10,7 +10,6 @@ using System.Collections.Generic;
using System.Runtime.CompilerServices;
using System.Threading;
using System.Threading.Tasks;
using Orleans.Concurrency;
using Squidex.Infrastructure.Log;
using Squidex.Infrastructure.Orleans;
@ -71,14 +70,14 @@ namespace Squidex.Infrastructure.EventSourcing.Grains
}
}
public Task<Immutable<EventConsumerInfo>> GetStateAsync()
public Task<EventConsumerInfo> GetStateAsync()
{
return Task.FromResult(CreateInfo());
}
private Immutable<EventConsumerInfo> CreateInfo()
private EventConsumerInfo CreateInfo()
{
return State.ToInfo(eventConsumer!.Name).AsImmutable();
return State.ToInfo(eventConsumer!.Name);
}
public Task OnEventsAsync(object sender, IReadOnlyList<Envelope<IEvent>> events, string position)
@ -128,7 +127,7 @@ namespace Squidex.Infrastructure.EventSourcing.Grains
}
}
public async Task<Immutable<EventConsumerInfo>> StartAsync()
public async Task<EventConsumerInfo> StartAsync()
{
if (!State.IsStopped)
{
@ -145,7 +144,7 @@ namespace Squidex.Infrastructure.EventSourcing.Grains
return CreateInfo();
}
public async Task<Immutable<EventConsumerInfo>> StopAsync()
public async Task<EventConsumerInfo> StopAsync()
{
if (State.IsStopped)
{
@ -162,7 +161,7 @@ namespace Squidex.Infrastructure.EventSourcing.Grains
return CreateInfo();
}
public async Task<Immutable<EventConsumerInfo>> ResetAsync()
public async Task<EventConsumerInfo> ResetAsync()
{
await DoAndUpdateStateAsync(async () =>
{

8
backend/src/Squidex.Infrastructure/EventSourcing/Grains/EventConsumerManagerGrain.cs

@ -67,7 +67,7 @@ namespace Squidex.Infrastructure.EventSourcing.Grains
var consumerInfos = await Task.WhenAll(tasks);
return new Immutable<List<EventConsumerInfo>>(consumerInfos.Select(r => r.Value).ToList());
return consumerInfos.ToList().AsImmutable();
}
public Task StartAllAsync()
@ -84,21 +84,21 @@ namespace Squidex.Infrastructure.EventSourcing.Grains
.Select(c => StopAsync(c.Name)));
}
public Task<Immutable<EventConsumerInfo>> ResetAsync(string consumerName)
public Task<EventConsumerInfo> ResetAsync(string consumerName)
{
var eventConsumer = GrainFactory.GetGrain<IEventConsumerGrain>(consumerName);
return eventConsumer.ResetAsync();
}
public Task<Immutable<EventConsumerInfo>> StartAsync(string consumerName)
public Task<EventConsumerInfo> StartAsync(string consumerName)
{
var eventConsumer = GrainFactory.GetGrain<IEventConsumerGrain>(consumerName);
return eventConsumer.StartAsync();
}
public Task<Immutable<EventConsumerInfo>> StopAsync(string consumerName)
public Task<EventConsumerInfo> StopAsync(string consumerName)
{
var eventConsumer = GrainFactory.GetGrain<IEventConsumerGrain>(consumerName);

9
backend/src/Squidex.Infrastructure/EventSourcing/Grains/IEventConsumerGrain.cs

@ -6,19 +6,18 @@
// ==========================================================================
using System.Threading.Tasks;
using Orleans.Concurrency;
using Squidex.Infrastructure.Orleans;
namespace Squidex.Infrastructure.EventSourcing.Grains
{
public interface IEventConsumerGrain : IBackgroundGrain
{
Task<Immutable<EventConsumerInfo>> GetStateAsync();
Task<EventConsumerInfo> GetStateAsync();
Task<Immutable<EventConsumerInfo>> StopAsync();
Task<EventConsumerInfo> StopAsync();
Task<Immutable<EventConsumerInfo>> StartAsync();
Task<EventConsumerInfo> StartAsync();
Task<Immutable<EventConsumerInfo>> ResetAsync();
Task<EventConsumerInfo> ResetAsync();
}
}

6
backend/src/Squidex.Infrastructure/EventSourcing/Grains/IEventConsumerManagerGrain.cs

@ -20,11 +20,11 @@ namespace Squidex.Infrastructure.EventSourcing.Grains
Task StopAllAsync();
Task<Immutable<EventConsumerInfo>> StopAsync(string consumerName);
Task<EventConsumerInfo> StopAsync(string consumerName);
Task<Immutable<EventConsumerInfo>> StartAsync(string consumerName);
Task<EventConsumerInfo> StartAsync(string consumerName);
Task<Immutable<EventConsumerInfo>> ResetAsync(string consumerName);
Task<EventConsumerInfo> ResetAsync(string consumerName);
Task<Immutable<List<EventConsumerInfo>>> GetConsumersAsync();
}

5
backend/src/Squidex.Infrastructure/EventSourcing/RetrySubscription.cs

@ -76,6 +76,11 @@ namespace Squidex.Infrastructure.EventSourcing
public async Task OnErrorAsync(IEventSubscription subscription, Exception exception)
{
if (exception is OperationCanceledException)
{
return;
}
Unsubscribe();
if (retryWindow.CanRetryAfterFailure())

2
backend/src/Squidex/Areas/Api/Controllers/Apps/Models/AppLanguageDto.cs

@ -69,7 +69,7 @@ namespace Squidex.Areas.Api.Controllers.Apps.Models
AddPutLink("update", resources.Url<AppLanguagesController>(x => nameof(x.PutLanguage), values));
}
if (resources.CanDeleteLanguage && app.LanguagesConfig.Languages.Count > 1)
if (resources.CanDeleteLanguage && app.Languages.Languages.Count > 1)
{
AddDeleteLink("delete", resources.Url<AppLanguagesController>(x => nameof(x.DeleteLanguage), values));
}

2
backend/src/Squidex/Areas/Api/Controllers/Apps/Models/AppLanguagesDto.cs

@ -22,7 +22,7 @@ namespace Squidex.Areas.Api.Controllers.Apps.Models
public static AppLanguagesDto FromApp(IAppEntity app, Resources resources)
{
var config = app.LanguagesConfig;
var config = app.Languages;
var result = new AppLanguagesDto
{

6
backend/src/Squidex/Areas/Api/Controllers/EventConsumers/EventConsumersController.cs

@ -48,7 +48,7 @@ namespace Squidex.Areas.Api.Controllers.EventConsumers
{
var eventConsumer = await GetGrain().StartAsync(consumerName);
var response = EventConsumerDto.FromEventConsumerInfo(eventConsumer.Value, Resources);
var response = EventConsumerDto.FromEventConsumerInfo(eventConsumer, Resources);
return Ok(response);
}
@ -61,7 +61,7 @@ namespace Squidex.Areas.Api.Controllers.EventConsumers
{
var eventConsumer = await GetGrain().StopAsync(consumerName);
var response = EventConsumerDto.FromEventConsumerInfo(eventConsumer.Value, Resources);
var response = EventConsumerDto.FromEventConsumerInfo(eventConsumer, Resources);
return Ok(response);
}
@ -74,7 +74,7 @@ namespace Squidex.Areas.Api.Controllers.EventConsumers
{
var eventConsumer = await GetGrain().ResetAsync(consumerName);
var response = EventConsumerDto.FromEventConsumerInfo(eventConsumer.Value, Resources);
var response = EventConsumerDto.FromEventConsumerInfo(eventConsumer, Resources);
return Ok(response);
}

6
backend/tests/Squidex.Domain.Apps.Entities.Tests/Apps/AppDomainObjectTests.cs

@ -498,7 +498,7 @@ namespace Squidex.Domain.Apps.Entities.Apps
result.ShouldBeEquivalent(sut.Snapshot);
Assert.True(sut.Snapshot.LanguagesConfig.Contains(Language.DE));
Assert.True(sut.Snapshot.Languages.Contains(Language.DE));
LastEvents
.ShouldHaveSameEvents(
@ -518,7 +518,7 @@ namespace Squidex.Domain.Apps.Entities.Apps
result.ShouldBeEquivalent(sut.Snapshot);
Assert.False(sut.Snapshot.LanguagesConfig.Contains(Language.DE));
Assert.False(sut.Snapshot.Languages.Contains(Language.DE));
LastEvents
.ShouldHaveSameEvents(
@ -538,7 +538,7 @@ namespace Squidex.Domain.Apps.Entities.Apps
result.ShouldBeEquivalent(sut.Snapshot);
Assert.True(sut.Snapshot.LanguagesConfig.Contains(Language.DE));
Assert.True(sut.Snapshot.Languages.Contains(Language.DE));
LastEvents
.ShouldHaveSameEvents(

2
backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/MongoDb/MongoDbQueryTests.cs

@ -76,7 +76,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.MongoDb
var app = A.Dummy<IAppEntity>();
A.CallTo(() => app.Id).Returns(DomainId.NewGuid());
A.CallTo(() => app.Version).Returns(3);
A.CallTo(() => app.LanguagesConfig).Returns(languagesConfig);
A.CallTo(() => app.Languages).Returns(languagesConfig);
}
[Fact]

2
backend/tests/Squidex.Domain.Apps.Entities.Tests/TestHelpers/Mocks.cs

@ -32,7 +32,7 @@ namespace Squidex.Domain.Apps.Entities.TestHelpers
A.CallTo(() => app.Id).Returns(appId.Id);
A.CallTo(() => app.Name).Returns(appId.Name);
A.CallTo(() => app.LanguagesConfig).Returns(config);
A.CallTo(() => app.Languages).Returns(config);
A.CallTo(() => app.UniqueId).Returns(appId.Id);
return app;

Loading…
Cancel
Save