// ========================================================================== // Squidex Headless CMS // ========================================================================== // Copyright (c) Squidex UG (haftungsbeschränkt) // All rights reserved. Licensed under the MIT license. // ========================================================================== using System; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; using Migrate_01; using Migrate_01.Migrations; using Orleans; using Squidex.Domain.Apps.Core.Apps; using Squidex.Domain.Apps.Core.HandleRules; using Squidex.Domain.Apps.Core.Scripting; using Squidex.Domain.Apps.Entities; using Squidex.Domain.Apps.Entities.Apps; using Squidex.Domain.Apps.Entities.Apps.Commands; using Squidex.Domain.Apps.Entities.Apps.Indexes; using Squidex.Domain.Apps.Entities.Apps.Templates; using Squidex.Domain.Apps.Entities.Assets; using Squidex.Domain.Apps.Entities.Assets.Commands; using Squidex.Domain.Apps.Entities.Backup; using Squidex.Domain.Apps.Entities.Contents; using Squidex.Domain.Apps.Entities.Contents.Commands; using Squidex.Domain.Apps.Entities.Contents.Edm; using Squidex.Domain.Apps.Entities.Contents.GraphQL; using Squidex.Domain.Apps.Entities.History; using Squidex.Domain.Apps.Entities.Rules; using Squidex.Domain.Apps.Entities.Rules.Commands; using Squidex.Domain.Apps.Entities.Rules.Indexes; using Squidex.Domain.Apps.Entities.Schemas; using Squidex.Domain.Apps.Entities.Schemas.Indexes; using Squidex.Domain.Apps.Entities.Tags; using Squidex.Infrastructure.Assets; using Squidex.Infrastructure.Commands; using Squidex.Infrastructure.Migrations; using Squidex.Pipeline; using Squidex.Pipeline.CommandMiddlewares; namespace Squidex.Config.Domain { public static class EntitiesServices { public static void AddMyEntitiesServices(this IServiceCollection services, IConfiguration config) { var exposeSourceUrl = config.GetOptionalValue("assetStore:exposeSourceUrl", true); services.AddSingletonAs(c => new UrlGenerator( c.GetRequiredService>(), c.GetRequiredService(), exposeSourceUrl)) .As().As(); services.AddSingletonAs() .As(); services.AddSingletonAs() .As(); services.AddSingletonAs() .As(); services.AddSingletonAs() .As(); services.AddSingletonAs() .As(); services.AddSingletonAs() .As(); services.AddSingletonAs() .As(); services.AddSingletonAs() .As(); services.AddSingletonAs() .As(); services.AddSingletonAs() .AsSelf(); services.AddSingletonAs() .As(); services.AddSingletonAs() .As>(); services.AddSingletonAs() .As>(); services.AddSingletonAs() .As(); services.AddCommandPipeline(); services.AddBackupHandlers(); services.AddSingleton>(DomainObjectGrainFormatter.Format); services.AddSingleton(c => { var uiOptions = c.GetRequiredService>(); var result = new InitialPatterns(); foreach (var pattern in uiOptions.Value.RegexSuggestions) { if (!string.IsNullOrWhiteSpace(pattern.Key) && !string.IsNullOrWhiteSpace(pattern.Value)) { result[Guid.NewGuid()] = new AppPattern(pattern.Key, pattern.Value); } } return result; }); } private static void AddCommandPipeline(this IServiceCollection services) { services.AddSingletonAs() .As(); services.AddSingletonAs() .As(); services.AddSingletonAs() .As(); services.AddSingletonAs() .As(); services.AddSingletonAs() .As(); services.AddSingletonAs() .As(); services.AddSingletonAs() .As(); services.AddSingletonAs() .As(); services.AddSingletonAs() .As(); services.AddSingletonAs>() .As(); services.AddSingletonAs>() .As(); services.AddSingletonAs>() .As(); services.AddSingletonAs>() .As(); services.AddSingletonAs() .As(); services.AddSingletonAs() .As(); services.AddSingletonAs() .As(); services.AddSingletonAs() .As(); services.AddSingletonAs() .As(); services.AddSingletonAs() .As(); } private static void AddBackupHandlers(this IServiceCollection services) { services.AddTransientAs() .As(); services.AddTransientAs() .As(); services.AddTransientAs() .As(); services.AddTransientAs() .As(); services.AddTransientAs() .As(); } public static void AddMyMigrationServices(this IServiceCollection services) { services.AddSingletonAs() .AsSelf(); services.AddTransientAs() .AsSelf(); services.AddTransientAs() .As(); services.AddTransientAs() .As(); services.AddTransientAs() .As(); services.AddTransientAs() .As(); services.AddTransientAs() .As(); services.AddTransientAs() .As(); services.AddTransientAs() .As(); services.AddTransientAs() .As(); services.AddTransientAs() .As(); services.AddTransientAs() .As(); } } }