Skip to content

Commit e92039b

Browse files
authored
Feat/masastack appid (#636)
* feat:add masastack config appid * feat:refactor masastack config * fix:code smell * fix:masastack app
1 parent 80033f7 commit e92039b

File tree

11 files changed

+107
-58
lines changed

11 files changed

+107
-58
lines changed

src/BuildingBlocks/Ddd/Domain/Masa.BuildingBlocks.Ddd.Domain/SeedWork/Enumeration.cs src/BuildingBlocks/Data/Masa.BuildingBlocks.Data.Contracts/Enumeration.cs

+24-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// Copyright (c) MASA Stack All rights reserved.
22
// Licensed under the MIT License. See LICENSE.txt in the project root for license information.
33

4-
namespace Masa.BuildingBlocks.Ddd.Domain.SeedWork;
4+
namespace Masa.BuildingBlocks.Data.Contracts;
55

66
/// <summary>
77
/// Reference from https://docs.microsoft.com/zh-cn/dotnet/architecture/microservices/microservice-ddd-cqrs-patterns/enumeration-classes-over-enum-types
@@ -68,5 +68,27 @@ private static T Parse<T, K>(K value, string description, Func<T, bool> predicat
6868
return matchingItem;
6969
}
7070

71-
public int CompareTo(object? other) => Id.CompareTo(((Enumeration?)other)?.Id);
71+
public int CompareTo(object? obj) => Id.CompareTo(((Enumeration?)obj)?.Id);
72+
73+
public static bool operator ==(Enumeration left, Enumeration right)
74+
{
75+
if (object.ReferenceEquals(left, null))
76+
{
77+
return object.ReferenceEquals(right, null);
78+
}
79+
return left.Equals(right);
80+
}
81+
public static bool operator >(Enumeration left, Enumeration right)
82+
{
83+
return left.CompareTo(right) > 0;
84+
}
85+
public static bool operator <(Enumeration left, Enumeration right)
86+
{
87+
return left.CompareTo(right) < 0;
88+
}
89+
public static bool operator !=(Enumeration left, Enumeration right)
90+
{
91+
return !(left == right);
92+
}
7293
}
94+
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
// Copyright (c) MASA Stack All rights reserved.
22
// Licensed under the MIT License. See LICENSE.txt in the project root for license information.
33

4-
global using Microsoft.Extensions.DependencyInjection;
54
global using Microsoft.Extensions.Options;
65
global using System.Diagnostics.CodeAnalysis;
7-
global using System.Runtime.CompilerServices;
6+
global using System.Reflection;

src/BuildingBlocks/Ddd/Domain/Masa.BuildingBlocks.Ddd.Domain/_Imports.cs

-1
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,4 @@
1313
global using Masa.Utils.Models;
1414
global using System.ComponentModel.DataAnnotations.Schema;
1515
global using System.Linq.Expressions;
16-
global using System.Reflection;
1716
global using System.Text.Json.Serialization;

src/BuildingBlocks/StackSdks/Masa.BuildingBlocks.StackSdks.Config/MasaStackConstant.cs

-20
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
// Copyright (c) MASA Stack All rights reserved.
2+
// Licensed under the MIT License. See LICENSE.txt in the project root for license information.
3+
4+
namespace Masa.Contrib.StackSdks.Config;
5+
6+
public class MasaStackApp : Enumeration
7+
{
8+
public static readonly MasaStackApp WEB = new(1, nameof(WEB).ToLowerInvariant());
9+
public static readonly MasaStackApp SSO = new(2, nameof(SSO).ToLowerInvariant());
10+
public static readonly MasaStackApp Service = new(3, nameof(Service).ToLowerInvariant());
11+
public static readonly MasaStackApp Worker = new(4, nameof(Worker).ToLowerInvariant());
12+
13+
MasaStackApp(int id, string name)
14+
: base(id, name)
15+
{
16+
}
17+
}

src/Contrib/StackSdks/Masa.Contrib.StackSdks.Config/MasaStackConfigExtensions.cs

+23-23
Original file line numberDiff line numberDiff line change
@@ -17,31 +17,31 @@ public static JsonArray GetMasaStack(this IMasaStackConfig masaStackConfig)
1717

1818
public static List<JsonNode> GetAllService(this IMasaStackConfig masaStackConfig)
1919
{
20-
var webs = GetMasaStack(masaStackConfig).Select(jsonObject => jsonObject?[MasaStackConstant.SERVICE]!).ToList();
20+
var webs = GetMasaStack(masaStackConfig).Select(jsonObject => jsonObject?[MasaStackApp.Service.Name]!).ToList();
2121
webs.RemoveAll(i => i == null);
2222
return webs ?? new();
2323
}
2424

2525
public static List<JsonNode> GetAllWeb(this IMasaStackConfig masaStackConfig)
2626
{
27-
var webs = GetMasaStack(masaStackConfig).Select(jsonObject => jsonObject?[MasaStackConstant.WEB]!).ToList();
27+
var webs = GetMasaStack(masaStackConfig).Select(jsonObject => jsonObject?[MasaStackApp.WEB.Name]!).ToList();
2828
webs.RemoveAll(i => i == null);
2929
return webs ?? new();
3030
}
3131

3232
public static bool HasAlert(this IMasaStackConfig masaStackConfig)
3333
{
34-
return GetMasaStack(masaStackConfig).Any(jsonObject => jsonObject?["id"]?.ToString() == MasaStackConstant.ALERT);
34+
return GetMasaStack(masaStackConfig).Any(jsonObject => jsonObject?["id"]?.ToString() == MasaStackProject.Alert.Name);
3535
}
3636

3737
public static bool HasTsc(this IMasaStackConfig masaStackConfig)
3838
{
39-
return GetMasaStack(masaStackConfig).Any(jsonObject => jsonObject?["id"]?.ToString() == MasaStackConstant.TSC);
39+
return GetMasaStack(masaStackConfig).Any(jsonObject => jsonObject?["id"]?.ToString() == MasaStackProject.TSC.Name);
4040
}
4141

4242
public static bool HasScheduler(this IMasaStackConfig masaStackConfig)
4343
{
44-
return GetMasaStack(masaStackConfig).Any(jsonObject => jsonObject?["id"]?.ToString() == MasaStackConstant.SCHEDULER);
44+
return GetMasaStack(masaStackConfig).Any(jsonObject => jsonObject?["id"]?.ToString() == MasaStackProject.Scheduler.Name);
4545
}
4646

4747
public static string GetConnectionString(this IMasaStackConfig masaStackConfig, string projectName)
@@ -53,55 +53,55 @@ public static string GetConnectionString(this IMasaStackConfig masaStackConfig,
5353
return dbModel?.ToString(databaseName) ?? "";
5454
}
5555

56-
public static string GetDomain(this IMasaStackConfig masaStackConfig, string project, string app)
56+
public static string GetDomain(this IMasaStackConfig masaStackConfig, MasaStackProject project, MasaStackApp app)
5757
{
58-
return GetMasaStack(masaStackConfig).FirstOrDefault(i => i?["id"]?.ToString() == project)?[app]?["domain"]?.ToString() ?? "";
58+
return GetMasaStack(masaStackConfig).FirstOrDefault(i => i?["id"]?.ToString() == project.Name)?[app.Name]?["domain"]?.ToString() ?? "";
5959
}
6060

6161

6262
public static string GetAuthServiceDomain(this IMasaStackConfig masaStackConfig)
6363
{
64-
return GetDomain(masaStackConfig, MasaStackConstant.AUTH, MasaStackConstant.SERVICE);
64+
return GetDomain(masaStackConfig, MasaStackProject.Auth, MasaStackApp.Service);
6565
}
6666

6767
public static string GetPmServiceDomain(this IMasaStackConfig masaStackConfig)
6868
{
69-
return GetDomain(masaStackConfig, MasaStackConstant.PM, MasaStackConstant.SERVICE);
69+
return GetDomain(masaStackConfig, MasaStackProject.PM, MasaStackApp.Service);
7070
}
7171

7272
public static string GetDccServiceDomain(this IMasaStackConfig masaStackConfig)
7373
{
74-
return GetDomain(masaStackConfig, MasaStackConstant.DCC, MasaStackConstant.SERVICE);
74+
return GetDomain(masaStackConfig, MasaStackProject.DCC, MasaStackApp.Service);
7575
}
7676

7777
public static string GetTscServiceDomain(this IMasaStackConfig masaStackConfig)
7878
{
79-
return GetDomain(masaStackConfig, MasaStackConstant.TSC, MasaStackConstant.SERVICE);
79+
return GetDomain(masaStackConfig, MasaStackProject.TSC, MasaStackApp.Service);
8080
}
8181

8282
public static string GetAlertServiceDomain(this IMasaStackConfig masaStackConfig)
8383
{
84-
return GetDomain(masaStackConfig, MasaStackConstant.ALERT, MasaStackConstant.SERVICE);
84+
return GetDomain(masaStackConfig, MasaStackProject.Alert, MasaStackApp.Service);
8585
}
8686

8787
public static string GetMcServiceDomain(this IMasaStackConfig masaStackConfig)
8888
{
89-
return GetDomain(masaStackConfig, MasaStackConstant.MC, MasaStackConstant.SERVICE);
89+
return GetDomain(masaStackConfig, MasaStackProject.MC, MasaStackApp.Service);
9090
}
9191

9292
public static string GetSchedulerServiceDomain(this IMasaStackConfig masaStackConfig)
9393
{
94-
return GetDomain(masaStackConfig, MasaStackConstant.SCHEDULER, MasaStackConstant.SERVICE);
94+
return GetDomain(masaStackConfig, MasaStackProject.Scheduler, MasaStackApp.Service);
9595
}
9696

9797
public static string GetSchedulerWorkerDomain(this IMasaStackConfig masaStackConfig)
9898
{
99-
return GetDomain(masaStackConfig, MasaStackConstant.SCHEDULER, MasaStackConstant.WORKER);
99+
return GetDomain(masaStackConfig, MasaStackProject.Scheduler, MasaStackApp.Worker);
100100
}
101101

102102
public static string GetSsoDomain(this IMasaStackConfig masaStackConfig)
103103
{
104-
return GetDomain(masaStackConfig, MasaStackConstant.AUTH, MasaStackConstant.SSO);
104+
return GetDomain(masaStackConfig, MasaStackProject.Auth, MasaStackApp.SSO);
105105
}
106106

107107
public static IEnumerable<KeyValuePair<string, string>> GetUIDomainPairs(this IMasaStackConfig masaStackConfig)
@@ -118,19 +118,19 @@ public static IEnumerable<KeyValuePair<string, string>> GetUIDomainPairs(this IM
118118
}
119119
}
120120

121-
public static string GetId(this IMasaStackConfig masaStackConfig, string project, string app)
121+
public static string GetId(this IMasaStackConfig masaStackConfig, MasaStackProject project, MasaStackApp app)
122122
{
123-
return masaStackConfig.GetMasaStack().FirstOrDefault(i => i?["id"]?.ToString() == project)
124-
?[app]?["id"]?.ToString() ?? "";
123+
return masaStackConfig.GetMasaStack().FirstOrDefault(i => i?["id"]?.ToString() == project.Name)
124+
?[app.Name]?["id"]?.ToString() ?? "";
125125
}
126126

127-
public static string GetServiceId(this IMasaStackConfig masaStackConfig, string project)
127+
public static string GetServiceId(this IMasaStackConfig masaStackConfig, MasaStackProject project)
128128
{
129-
return masaStackConfig.GetId(project, MasaStackConstant.SERVICE);
129+
return masaStackConfig.GetId(project, MasaStackApp.Service);
130130
}
131131

132-
public static string GetWebId(this IMasaStackConfig masaStackConfig, string project)
132+
public static string GetWebId(this IMasaStackConfig masaStackConfig, MasaStackProject project)
133133
{
134-
return masaStackConfig.GetId(project, MasaStackConstant.WEB);
134+
return masaStackConfig.GetId(project, MasaStackApp.WEB);
135135
}
136136
}

src/Contrib/StackSdks/Masa.Contrib.StackSdks.Config/MasaStackConfigUtils.cs

+16-5
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,10 @@ namespace Masa.Contrib.StackSdks.Config;
66

77
internal static class MasaStackConfigUtils
88
{
9-
public static DccOptions GetDefaultDccOptions(Dictionary<string, string> configMap, string appId)
9+
public static DccOptions GetDefaultDccOptions(Dictionary<string, string> configMap, MasaStackProject project, MasaStackApp app)
1010
{
11-
var value = configMap.GetValueOrDefault(MasaStackConfigConstant.MASA_STACK) ?? "";
12-
var data = JsonSerializer.Deserialize<JsonArray>(value) ?? new();
13-
var dccServerAddress = data.FirstOrDefault(i => i?["id"]?.ToString() == MasaStackConstant.DCC)?[MasaStackConstant.SERVICE]?["domain"]?.ToString() ?? "";
11+
var data = GetMasaStackJsonArray(configMap);
12+
var dccServerAddress = data.FirstOrDefault(i => i?["id"]?.ToString() == MasaStackProject.DCC.Name)?[MasaStackApp.Service.Name]?["domain"]?.ToString() ?? "";
1413
var redisStr = configMap.GetValueOrDefault(MasaStackConfigConstant.REDIS) ?? throw new Exception("redis options can not null");
1514
var redis = JsonSerializer.Deserialize<RedisModel>(redisStr) ?? throw new JsonException();
1615
var secret = configMap.GetValueOrDefault(MasaStackConfigConstant.DCC_SECRET);
@@ -30,9 +29,21 @@ public static DccOptions GetDefaultDccOptions(Dictionary<string, string> configM
3029
},
3130
PublicSecret = secret,
3231
ConfigObjectSecret = secret,
33-
AppId = appId
32+
AppId = GetAppId(configMap, project, app)
3433
};
3534

3635
return options;
3736
}
37+
38+
static string GetAppId(Dictionary<string, string> configMap, MasaStackProject project, MasaStackApp app)
39+
{
40+
var data = GetMasaStackJsonArray(configMap);
41+
return data.FirstOrDefault(i => i?["id"]?.ToString() == project.Name)?[app.Name]?["id"]?.ToString() ?? "";
42+
}
43+
44+
static JsonArray GetMasaStackJsonArray(Dictionary<string, string> configMap)
45+
{
46+
var value = configMap.GetValueOrDefault(MasaStackConfigConstant.MASA_STACK) ?? "";
47+
return JsonSerializer.Deserialize<JsonArray>(value) ?? new();
48+
}
3849
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
// Copyright (c) MASA Stack All rights reserved.
2+
// Licensed under the MIT License. See LICENSE.txt in the project root for license information.
3+
4+
namespace Masa.Contrib.StackSdks.Config;
5+
6+
public class MasaStackProject : Enumeration
7+
{
8+
public static readonly MasaStackProject Auth = new(1, nameof(Auth).ToLowerInvariant());
9+
public static readonly MasaStackProject PM = new(2, nameof(PM).ToLowerInvariant());
10+
public static readonly MasaStackProject DCC = new(3, nameof(DCC).ToLowerInvariant());
11+
public static readonly MasaStackProject MC = new(4, nameof(MC).ToLowerInvariant());
12+
public static readonly MasaStackProject Alert = new(5, nameof(Alert).ToLowerInvariant());
13+
public static readonly MasaStackProject Scheduler = new(6, nameof(Scheduler).ToLowerInvariant());
14+
public static readonly MasaStackProject TSC = new(7, nameof(TSC).ToLowerInvariant());
15+
16+
MasaStackProject(int id, string name)
17+
: base(id, name)
18+
{
19+
}
20+
}

src/Contrib/StackSdks/Masa.Contrib.StackSdks.Config/ServiceCollectionExtensions.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -45,11 +45,11 @@ await configurationApiManage.AddAsync(
4545
}
4646
}
4747

48-
public static async Task<IServiceCollection> AddMasaStackConfigAsync(this IServiceCollection services, string appId, bool init = false, DccOptions? dccOptions = null)
48+
public static async Task<IServiceCollection> AddMasaStackConfigAsync(this IServiceCollection services, MasaStackProject project, MasaStackApp app, bool init = false, DccOptions? dccOptions = null)
4949
{
5050
var configs = GetConfigMap(services);
5151

52-
dccOptions ??= MasaStackConfigUtils.GetDefaultDccOptions(configs, appId);
52+
dccOptions ??= MasaStackConfigUtils.GetDefaultDccOptions(configs, project, app);
5353
services.AddSingleton(dccOptions);
5454
services.AddMasaConfiguration(builder => builder.UseDcc(dccOptions));
5555

src/Contrib/StackSdks/Masa.Contrib.StackSdks.Config/_Imports.cs

+1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
// Licensed under the MIT License. See LICENSE.txt in the project root for license information.
33

44
global using Masa.BuildingBlocks.Configuration;
5+
global using Masa.BuildingBlocks.Data.Contracts;
56
global using Masa.BuildingBlocks.StackSdks.Config;
67
global using Masa.BuildingBlocks.StackSdks.Config.Models;
78
global using Masa.Contrib.Configuration.ConfigurationApi.Dcc.Options;

src/Contrib/StackSdks/Tests/Masa.Contrib.StackSdks.Config.Tests/MasaStackConfigTest.cs

+3-3
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ public void TestGetAllServers()
5858
[TestMethod]
5959
public void TestGetDefaultDccOptions()
6060
{
61-
var dccOptions = MasaStackConfigUtils.GetDefaultDccOptions(_config, "test");
61+
var dccOptions = MasaStackConfigUtils.GetDefaultDccOptions(_config, MasaStackProject.Auth, MasaStackApp.WEB);
6262

6363
Assert.IsNotNull(dccOptions?.RedisOptions);
6464
}
@@ -128,15 +128,15 @@ public void TestGetVersion()
128128
[TestMethod]
129129
public void TestGetServiceId()
130130
{
131-
var pmServiceId = _stackConfig.GetServiceId(MasaStackConstant.PM);
131+
var pmServiceId = _stackConfig.GetServiceId(MasaStackProject.PM);
132132

133133
Assert.AreEqual("pm-service", pmServiceId);
134134
}
135135

136136
[TestMethod]
137137
public void TestGetWebId()
138138
{
139-
var pmWebId = _stackConfig.GetWebId(MasaStackConstant.PM);
139+
var pmWebId = _stackConfig.GetWebId(MasaStackProject.PM);
140140

141141
Assert.AreEqual("pm-web", pmWebId);
142142
}

0 commit comments

Comments
 (0)