|
|
@ -12,6 +12,7 @@ using System.Linq; |
|
|
using Newtonsoft.Json; |
|
|
using Newtonsoft.Json; |
|
|
using Squidex.Domain.Apps.Core.Apps; |
|
|
using Squidex.Domain.Apps.Core.Apps; |
|
|
using Squidex.Domain.Apps.Core.Schemas; |
|
|
using Squidex.Domain.Apps.Core.Schemas; |
|
|
|
|
|
using Squidex.Domain.Apps.Events; |
|
|
using Squidex.Domain.Apps.Events.Apps; |
|
|
using Squidex.Domain.Apps.Events.Apps; |
|
|
using Squidex.Domain.Apps.Events.Apps.Utils; |
|
|
using Squidex.Domain.Apps.Events.Apps.Utils; |
|
|
using Squidex.Domain.Apps.Events.Rules; |
|
|
using Squidex.Domain.Apps.Events.Rules; |
|
|
@ -90,70 +91,70 @@ namespace Squidex.Domain.Apps.Read.State.Orleans.Grains.Implementations |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
case AppPlanChanged @event: |
|
|
case AppPlanChanged @event: |
|
|
App.Update(@event, envelope.Headers, a => |
|
|
UpdateApp(envelope, a => |
|
|
{ |
|
|
{ |
|
|
SimpleMapper.Map(@event, a); |
|
|
SimpleMapper.Map(@event, a); |
|
|
}); |
|
|
}); |
|
|
break; |
|
|
break; |
|
|
|
|
|
|
|
|
case AppClientAttached @event: |
|
|
case AppClientAttached @event: |
|
|
App.Update(@event, envelope.Headers, a => |
|
|
UpdateApp(envelope, a => |
|
|
{ |
|
|
{ |
|
|
a.Clients.Apply(@event); |
|
|
a.Clients.Apply(@event); |
|
|
}); |
|
|
}); |
|
|
break; |
|
|
break; |
|
|
|
|
|
|
|
|
case AppClientRevoked @event: |
|
|
case AppClientRevoked @event: |
|
|
App.Update(@event, envelope.Headers, a => |
|
|
UpdateApp(envelope, a => |
|
|
{ |
|
|
{ |
|
|
a.Clients.Apply(@event); |
|
|
a.Clients.Apply(@event); |
|
|
}); |
|
|
}); |
|
|
break; |
|
|
break; |
|
|
|
|
|
|
|
|
case AppClientRenamed @event: |
|
|
case AppClientRenamed @event: |
|
|
App.Update(@event, envelope.Headers, a => |
|
|
UpdateApp(envelope, a => |
|
|
{ |
|
|
{ |
|
|
a.Clients.Apply(@event); |
|
|
a.Clients.Apply(@event); |
|
|
}); |
|
|
}); |
|
|
break; |
|
|
break; |
|
|
|
|
|
|
|
|
case AppClientUpdated @event: |
|
|
case AppClientUpdated @event: |
|
|
App.Update(@event, envelope.Headers, a => |
|
|
UpdateApp(envelope, a => |
|
|
{ |
|
|
{ |
|
|
a.Clients.Apply(@event); |
|
|
a.Clients.Apply(@event); |
|
|
}); |
|
|
}); |
|
|
break; |
|
|
break; |
|
|
|
|
|
|
|
|
case AppContributorRemoved @event: |
|
|
case AppContributorRemoved @event: |
|
|
App.Update(@event, envelope.Headers, a => |
|
|
UpdateApp(envelope, a => |
|
|
{ |
|
|
{ |
|
|
a.Contributors.Apply(@event); |
|
|
a.Contributors.Apply(@event); |
|
|
}); |
|
|
}); |
|
|
break; |
|
|
break; |
|
|
|
|
|
|
|
|
case AppContributorAssigned @event: |
|
|
case AppContributorAssigned @event: |
|
|
App.Update(@event, envelope.Headers, a => |
|
|
UpdateApp(envelope, a => |
|
|
{ |
|
|
{ |
|
|
a.Contributors.Apply(@event); |
|
|
a.Contributors.Apply(@event); |
|
|
}); |
|
|
}); |
|
|
break; |
|
|
break; |
|
|
|
|
|
|
|
|
case AppLanguageAdded @event: |
|
|
case AppLanguageAdded @event: |
|
|
App.Update(@event, envelope.Headers, a => |
|
|
UpdateApp(envelope, a => |
|
|
{ |
|
|
{ |
|
|
a.LanguagesConfig.Apply(@event); |
|
|
a.LanguagesConfig.Apply(@event); |
|
|
}); |
|
|
}); |
|
|
break; |
|
|
break; |
|
|
|
|
|
|
|
|
case AppLanguageRemoved @event: |
|
|
case AppLanguageRemoved @event: |
|
|
App.Update(@event, envelope.Headers, a => |
|
|
UpdateApp(envelope, a => |
|
|
{ |
|
|
{ |
|
|
a.LanguagesConfig.Apply(@event); |
|
|
a.LanguagesConfig.Apply(@event); |
|
|
}); |
|
|
}); |
|
|
break; |
|
|
break; |
|
|
|
|
|
|
|
|
case AppLanguageUpdated @event: |
|
|
case AppLanguageUpdated @event: |
|
|
App.Update(@event, envelope.Headers, a => |
|
|
UpdateApp(envelope, a => |
|
|
{ |
|
|
{ |
|
|
a.LanguagesConfig.Apply(@event); |
|
|
a.LanguagesConfig.Apply(@event); |
|
|
}); |
|
|
}); |
|
|
@ -167,14 +168,14 @@ namespace Squidex.Domain.Apps.Read.State.Orleans.Grains.Implementations |
|
|
break; |
|
|
break; |
|
|
|
|
|
|
|
|
case RuleUpdated @event: |
|
|
case RuleUpdated @event: |
|
|
Rules[@event.RuleId].Update(@event, envelope.Headers, r => |
|
|
UpdateRule(envelope, r => |
|
|
{ |
|
|
{ |
|
|
r.Rule.Apply(@event); |
|
|
r.Rule.Apply(@event); |
|
|
}); |
|
|
}); |
|
|
break; |
|
|
break; |
|
|
|
|
|
|
|
|
case RuleEnabled @event: |
|
|
case RuleEnabled @event: |
|
|
Rules[@event.RuleId].Update(@event, envelope.Headers, r => |
|
|
UpdateRule(envelope, r => |
|
|
{ |
|
|
{ |
|
|
r.Rule.Apply(@event); |
|
|
r.Rule.Apply(@event); |
|
|
}); |
|
|
}); |
|
|
@ -194,84 +195,84 @@ namespace Squidex.Domain.Apps.Read.State.Orleans.Grains.Implementations |
|
|
break; |
|
|
break; |
|
|
|
|
|
|
|
|
case FieldAdded @event: |
|
|
case FieldAdded @event: |
|
|
Schemas[@event.SchemaId.Id].Update(@event, envelope.Headers, s => |
|
|
UpdateSchema(envelope, s => |
|
|
{ |
|
|
{ |
|
|
s.SchemaDef.Apply(@event, registry); |
|
|
s.SchemaDef.Apply(@event, registry); |
|
|
}); |
|
|
}); |
|
|
break; |
|
|
break; |
|
|
|
|
|
|
|
|
case FieldDeleted @event: |
|
|
case FieldDeleted @event: |
|
|
Schemas[@event.SchemaId.Id].Update(@event, envelope.Headers, s => |
|
|
UpdateSchema(envelope, s => |
|
|
{ |
|
|
{ |
|
|
s.SchemaDef.Apply(@event); |
|
|
s.SchemaDef.Apply(@event); |
|
|
}); |
|
|
}); |
|
|
break; |
|
|
break; |
|
|
|
|
|
|
|
|
case FieldLocked @event: |
|
|
case FieldLocked @event: |
|
|
Schemas[@event.SchemaId.Id].Update(@event, envelope.Headers, s => |
|
|
UpdateSchema(envelope, s => |
|
|
{ |
|
|
{ |
|
|
s.SchemaDef.Apply(@event); |
|
|
s.SchemaDef.Apply(@event); |
|
|
}); |
|
|
}); |
|
|
break; |
|
|
break; |
|
|
|
|
|
|
|
|
case FieldHidden @event: |
|
|
case FieldHidden @event: |
|
|
Schemas[@event.SchemaId.Id].Update(@event, envelope.Headers, s => |
|
|
UpdateSchema(envelope, s => |
|
|
{ |
|
|
{ |
|
|
s.SchemaDef.Apply(@event); |
|
|
s.SchemaDef.Apply(@event); |
|
|
}); |
|
|
}); |
|
|
break; |
|
|
break; |
|
|
|
|
|
|
|
|
case FieldShown @event: |
|
|
case FieldShown @event: |
|
|
Schemas[@event.SchemaId.Id].Update(@event, envelope.Headers, s => |
|
|
UpdateSchema(envelope, s => |
|
|
{ |
|
|
{ |
|
|
s.SchemaDef.Apply(@event); |
|
|
s.SchemaDef.Apply(@event); |
|
|
}); |
|
|
}); |
|
|
break; |
|
|
break; |
|
|
|
|
|
|
|
|
case FieldDisabled @event: |
|
|
case FieldDisabled @event: |
|
|
Schemas[@event.SchemaId.Id].Update(@event, envelope.Headers, s => |
|
|
UpdateSchema(envelope, s => |
|
|
{ |
|
|
{ |
|
|
s.SchemaDef.Apply(@event); |
|
|
s.SchemaDef.Apply(@event); |
|
|
}); |
|
|
}); |
|
|
break; |
|
|
break; |
|
|
|
|
|
|
|
|
case FieldEnabled @event: |
|
|
case FieldEnabled @event: |
|
|
Schemas[@event.SchemaId.Id].Update(@event, envelope.Headers, s => |
|
|
UpdateSchema(envelope, s => |
|
|
{ |
|
|
{ |
|
|
s.SchemaDef.Apply(@event); |
|
|
s.SchemaDef.Apply(@event); |
|
|
}); |
|
|
}); |
|
|
break; |
|
|
break; |
|
|
|
|
|
|
|
|
case FieldUpdated @event: |
|
|
case FieldUpdated @event: |
|
|
Schemas[@event.SchemaId.Id].Update(@event, envelope.Headers, s => |
|
|
UpdateSchema(envelope, s => |
|
|
{ |
|
|
{ |
|
|
s.SchemaDef.Apply(@event); |
|
|
s.SchemaDef.Apply(@event); |
|
|
}); |
|
|
}); |
|
|
break; |
|
|
break; |
|
|
|
|
|
|
|
|
case SchemaFieldsReordered @event: |
|
|
case SchemaFieldsReordered @event: |
|
|
Schemas[@event.SchemaId.Id].Update(@event, envelope.Headers, s => |
|
|
UpdateSchema(envelope, s => |
|
|
{ |
|
|
{ |
|
|
s.SchemaDef.Apply(@event); |
|
|
s.SchemaDef.Apply(@event); |
|
|
}); |
|
|
}); |
|
|
break; |
|
|
break; |
|
|
|
|
|
|
|
|
case SchemaUpdated @event: |
|
|
case SchemaUpdated @event: |
|
|
Schemas[@event.SchemaId.Id].Update(@event, envelope.Headers, s => |
|
|
UpdateSchema(envelope, s => |
|
|
{ |
|
|
{ |
|
|
s.SchemaDef.Apply(@event); |
|
|
s.SchemaDef.Apply(@event); |
|
|
}); |
|
|
}); |
|
|
break; |
|
|
break; |
|
|
|
|
|
|
|
|
case SchemaPublished @event: |
|
|
case SchemaPublished @event: |
|
|
Schemas[@event.SchemaId.Id].Update(@event, envelope.Headers, s => |
|
|
UpdateSchema(envelope, s => |
|
|
{ |
|
|
{ |
|
|
s.SchemaDef.Apply(@event); |
|
|
s.SchemaDef.Apply(@event); |
|
|
}); |
|
|
}); |
|
|
break; |
|
|
break; |
|
|
|
|
|
|
|
|
case ScriptsConfigured @event: |
|
|
case ScriptsConfigured @event: |
|
|
Schemas[@event.SchemaId.Id].Update(@event, envelope.Headers, s => |
|
|
UpdateSchema(envelope, s => |
|
|
{ |
|
|
{ |
|
|
s.SchemaDef.Apply(@event); |
|
|
s.SchemaDef.Apply(@event); |
|
|
}); |
|
|
}); |
|
|
@ -282,11 +283,11 @@ namespace Squidex.Domain.Apps.Read.State.Orleans.Grains.Implementations |
|
|
break; |
|
|
break; |
|
|
|
|
|
|
|
|
case WebhookAdded @event: |
|
|
case WebhookAdded @event: |
|
|
Schemas[@event.SchemaId.Id].Update(@event, envelope.Headers); |
|
|
UpdateSchema(envelope); |
|
|
break; |
|
|
break; |
|
|
|
|
|
|
|
|
case WebhookDeleted @event: |
|
|
case WebhookDeleted @event: |
|
|
Schemas[@event.SchemaId.Id].Update(@event, envelope.Headers); |
|
|
UpdateSchema(envelope); |
|
|
break; |
|
|
break; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@ -295,5 +296,26 @@ namespace Squidex.Domain.Apps.Read.State.Orleans.Grains.Implementations |
|
|
App.Etag = Guid.NewGuid().ToString(); |
|
|
App.Etag = Guid.NewGuid().ToString(); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private void UpdateApp(Envelope<IEvent> envelope, Action<JsonAppEntity> updater = null) |
|
|
|
|
|
{ |
|
|
|
|
|
var e = envelope.To<AppEvent>(); |
|
|
|
|
|
|
|
|
|
|
|
App.Update(e.Payload, e.Headers, updater); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private void UpdateRule(Envelope<IEvent> envelope, Action<JsonRuleEntity> updater = null) |
|
|
|
|
|
{ |
|
|
|
|
|
var e = envelope.To<RuleEvent>(); |
|
|
|
|
|
|
|
|
|
|
|
Rules[e.Payload.RuleId].Update(e.Payload, e.Headers, updater); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private void UpdateSchema(Envelope<IEvent> envelope, Action<JsonSchemaEntity> updater = null) |
|
|
|
|
|
{ |
|
|
|
|
|
var e = envelope.To<SchemaEvent>(); |
|
|
|
|
|
|
|
|
|
|
|
Schemas[e.Payload.SchemaId.Id].Copy().Update(e.Payload, e.Headers, updater); |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |