// ========================================================================== // Squidex Headless CMS // ========================================================================== // Copyright (c) Squidex UG (haftungsbeschränkt) // All rights reserved. Licensed under the MIT license. // ========================================================================== using System.Threading.Tasks; using Squidex.Domain.Apps.Entities.History; using Squidex.Domain.Apps.Events; using Squidex.Domain.Apps.Events.Schemas; using Squidex.Infrastructure.EventSourcing; using Squidex.Infrastructure.Reflection; using Squidex.Infrastructure.Translations; namespace Squidex.Domain.Apps.Entities.Schemas { public sealed class SchemaHistoryEventsCreator : HistoryEventsCreatorBase { public SchemaHistoryEventsCreator(TypeNameRegistry typeNameRegistry) : base(typeNameRegistry) { AddEventMessage( "history.schemas.fieldsReordered"); AddEventMessage( "history.schemas.created"); AddEventMessage( "history.schemas.updated"); AddEventMessage( "history.schemas.deleted"); AddEventMessage( "history.schemas.published"); AddEventMessage( "history.schemas.unpublished"); AddEventMessage( "history.schemas.fieldsReordered"); AddEventMessage( "history.schemas.scriptsConfigured"); AddEventMessage( "history.schemas.fieldAdded"); AddEventMessage( "history.schemas.fieldDeleted"); AddEventMessage( "history.schemas.fieldLocked"); AddEventMessage( "history.schemas.fieldHidden"); AddEventMessage( "history.schemas.fieldShown"); AddEventMessage( "history.schemas.fieldDisabled"); AddEventMessage( "history.schemas.fieldDisabled"); AddEventMessage( "history.schemas.fieldUpdated"); AddEventMessage( "history.schemas.fieldDeleted"); } protected override Task CreateEventCoreAsync(Envelope @event) { HistoryEvent? result = null; if (@event.Payload is SchemaEvent schemaEvent) { var channel = $"schemas.{schemaEvent.SchemaId.Id}"; result = ForEvent(@event.Payload, channel).Param("Name", schemaEvent.SchemaId.Name); if (schemaEvent is FieldEvent fieldEvent) { result.Param("Field", fieldEvent.FieldId.Name); } } return Task.FromResult(result); } } }