diff --git a/Masa.Dcc.Infrastructure.Domain/App/Queries/I18NConfigQuery.cs b/Masa.Dcc.Infrastructure.Domain/App/Queries/I18NConfigQuery.cs new file mode 100644 index 0000000..920d51f --- /dev/null +++ b/Masa.Dcc.Infrastructure.Domain/App/Queries/I18NConfigQuery.cs @@ -0,0 +1,9 @@ +// Copyright (c) MASA Stack All rights reserved. +// Licensed under the Apache License. See LICENSE.txt in the project root for license information. + +namespace Masa.Dcc.Infrastructure.Domain.App.Queries; + +public record class I18NConfigQuery(string Environment, string Cluster, string Culture) : Query> +{ + public override Dictionary Result { get; set; } +} diff --git a/Masa.Dcc.Infrastructure.Domain/App/Queries/StackConfigQuery.cs b/Masa.Dcc.Infrastructure.Domain/App/Queries/StackConfigQuery.cs new file mode 100644 index 0000000..0098bfe --- /dev/null +++ b/Masa.Dcc.Infrastructure.Domain/App/Queries/StackConfigQuery.cs @@ -0,0 +1,9 @@ +// Copyright (c) MASA Stack All rights reserved. +// Licensed under the Apache License. See LICENSE.txt in the project root for license information. + +namespace Masa.Dcc.Infrastructure.Domain.App.Queries; + +public record class StackConfigQuery(string Environment, string Cluster) : Query> +{ + public override Dictionary Result { get; set; } +} diff --git a/Masa.Dcc.Infrastructure.Domain/App/QueryHandler.cs b/Masa.Dcc.Infrastructure.Domain/App/QueryHandler.cs index be7cb47..de555f8 100644 --- a/Masa.Dcc.Infrastructure.Domain/App/QueryHandler.cs +++ b/Masa.Dcc.Infrastructure.Domain/App/QueryHandler.cs @@ -277,4 +277,43 @@ public async Task GetConfigObjectsAsync(ConfigObjectsByDynamicQuery query) { query.Result = await _configObjectDomainService.GetConfigObjectsAsync(query.environment, query.cluster, query.appId, query.configObjects); } + + [EventHandler] + public async Task GetStackConfigAsync(StackConfigQuery query) + { + var defaultConfig = await _configurationApiClient.GetAsync>( + query.Environment, + query.Cluster, + "public-$Config", + "$public.DefaultConfig"); + + var allowedSafeKeys = new List + { + MasaStackConfigConstant.VERSION, + MasaStackConfigConstant.ENVIRONMENT, + MasaStackConfigConstant.IS_DEMO, + MasaStackConfigConstant.CLUSTER, + MasaStackConfigConstant.DOMAIN_NAME, + MasaStackConfigConstant.NAMESPACE, + MasaStackConfigConstant.MASA_STACK, + MasaStackConfigConstant.OTLP_URL + }; + + var stackConfig = defaultConfig.Where(x => allowedSafeKeys.Contains(x.Key)) + .ToDictionary(x => x.Key, x => x.Value); + + query.Result = stackConfig; + } + + [EventHandler] + public async Task GetI18NConfigAsync(I18NConfigQuery query) + { + var i18nConfig = await _configurationApiClient.GetAsync>( + query.Environment, + query.Cluster, + "public-$Config", + $"$public.i18n.{query.Culture}"); + + query.Result = i18nConfig; + } } diff --git a/Masa.Dcc.Infrastructure.Domain/_Imports.cs b/Masa.Dcc.Infrastructure.Domain/_Imports.cs index 6555c5a..66cc9be 100644 --- a/Masa.Dcc.Infrastructure.Domain/_Imports.cs +++ b/Masa.Dcc.Infrastructure.Domain/_Imports.cs @@ -22,6 +22,7 @@ global using Masa.Dcc.Contracts.Admin.App.Dtos; global using Masa.Dcc.Contracts.Admin.App.Enums; global using Masa.Dcc.Contracts.Admin.Label.Dtos; +global using Masa.Dcc.Infrastructure.Domain.App.Queries; global using Masa.Dcc.Infrastructure.Domain.Commands; global using Masa.Dcc.Infrastructure.Domain.Queries; global using Masa.Dcc.Infrastructure.Domain.Services; diff --git a/src/Services/Masa.Dcc.Service/Services/OpenApiService.cs b/src/Services/Masa.Dcc.Service/Services/OpenApiService.cs index 7d0bc44..9ffcd23 100644 --- a/src/Services/Masa.Dcc.Service/Services/OpenApiService.cs +++ b/src/Services/Masa.Dcc.Service/Services/OpenApiService.cs @@ -11,6 +11,8 @@ public OpenApiService() App.MapPut("open-api/releasing/{environment}/{cluster}/{appId}/{configObject}", UpdateConfigObjectAsync); App.MapPost("open-api/releasing/{environment}/{cluster}/{appId}/{isEncryption}", AddConfigObjectAsync); App.MapPost("open-api/releasing/get/{environment}/{cluster}/{appId}", GetConfigObjectsAsync); + App.MapGet("open-api/releasing/{environment}/{cluster}/stack-config", GetStackConfigAsync); + App.MapGet("open-api/releasing/{environment}/{cluster}/i18n/{culture}", GetI18NConfigAsync); } public async Task UpdateConfigObjectAsync(IEventBus eventBus, string environment, string cluster, string appId, string configObject, @@ -35,5 +37,19 @@ public async Task> GetConfigObjectsAsync await eventBus.PublishAsync(query); return query.Result; } + + public async Task> GetStackConfigAsync(IEventBus eventBus, string environment, string cluster) + { + var query = new StackConfigQuery(environment, cluster); + await eventBus.PublishAsync(query); + return query.Result; + } + + public async Task> GetI18NConfigAsync(IEventBus eventBus, string environment, string cluster, string culture) + { + var query = new I18NConfigQuery(environment, cluster, culture); + await eventBus.PublishAsync(query); + return query.Result; + } } } diff --git a/src/Services/Masa.Dcc.Service/_Imports.cs b/src/Services/Masa.Dcc.Service/_Imports.cs index 1bc3f0e..6967b66 100644 --- a/src/Services/Masa.Dcc.Service/_Imports.cs +++ b/src/Services/Masa.Dcc.Service/_Imports.cs @@ -30,6 +30,7 @@ global using Masa.Dcc.Contracts.Admin.App.Dtos; global using Masa.Dcc.Contracts.Admin.App.Enums; global using Masa.Dcc.Contracts.Admin.Label.Dtos; +global using Masa.Dcc.Infrastructure.Domain.App.Queries; global using Masa.Dcc.Infrastructure.Domain.Commands; global using Masa.Dcc.Infrastructure.Domain.Queries; global using Masa.Dcc.Infrastructure.Domain.Services;