diff --git a/BrokerApiCore/ApiModels/AdminModel.cs b/BrokerApiCore/ApiModels/AdminModel.cs
index 3acfd75..ff568db 100644
--- a/BrokerApiCore/ApiModels/AdminModel.cs
+++ b/BrokerApiCore/ApiModels/AdminModel.cs
@@ -20,6 +20,47 @@ public class AdminSapphireChangeResponse
public long SapphireCurrentAmount { get; set; }
}
+public class AdminPlanetProviderInfoCreateRequest
+{
+
+}
+
+public class AdminPlanetProviderInfoCreateResponse
+{
+
+}
+
+public class AdminPlanetProviderInfoUpdateRequest
+{
+
+}
+
+public class AdminPlanetProviderInfoUpdateResponse
+{
+
+}
+
+public class AdminPlanetProviderInfoDeleteRequest
+{
+
+}
+
+public class AdminPlanetProviderInfoDeleteResponse
+{
+
+}
+
+public class AdminPlanetProviderInfoGetRequest
+{
+
+}
+
+public class AdminPlanetProviderInfoGetResponse
+{
+
+}
+
+
[SwaggerSchema(
"교환 주문 목록 요청
- SsoAccountId 또는 UserGuid 중 하나를 선택해서 유저 구분
- seasonId는 필수로 입력 (관련 내용은 사업부에 문의)")]
public class AdminItemExchangeOrderListRequest
diff --git a/BrokerApiCore/BrokerApiCore.csproj b/BrokerApiCore/BrokerApiCore.csproj
index 6a2fbba..12bf2c7 100644
--- a/BrokerApiCore/BrokerApiCore.csproj
+++ b/BrokerApiCore/BrokerApiCore.csproj
@@ -1,65 +1,60 @@
-
-
- net8.0
- enable
- enable
- false
- false
- true
- false
- true
- $(NoWarn);1591
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- full
- ..\..\bin\Debug\
-
-
-
- full
- ..\..\bin\Release\
-
-
-
- full
- true
- ..\..\bin\Shipping\
-
-
-
-
-
- all
- runtime; build; native; contentfiles; analyzers; buildtransitive
-
-
- all
- runtime; build; native; contentfiles; analyzers; buildtransitive
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+ net8.0
+ enable
+ enable
+ false
+ false
+ true
+ false
+ true
+ $(NoWarn);1591
+
+
+
+
+
+
+
+
+
+
+
+
+
+ full
+ ..\..\bin\Debug\
+
+
+ full
+ ..\..\bin\Release\
+
+
+ full
+ true
+ ..\..\bin\Shipping\
+
+
+
+
+
+ all
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+
+
+
+ all
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/BrokerApiCore/BrokerApiCoreService.cs b/BrokerApiCore/BrokerApiCoreService.cs
new file mode 100644
index 0000000..e08a386
--- /dev/null
+++ b/BrokerApiCore/BrokerApiCoreService.cs
@@ -0,0 +1,17 @@
+// using ServerBase;
+//
+// namespace BrokerApiCore;
+//
+// public class BrokerApiCoreService
+// {
+// private readonly ServerType m_server_type = ServerType.BrokerApi;
+// private readonly ServerConfigMetaverseBroker m_server_config;
+//
+// public BrokerApiCoreService(ServerConfigMetaverseBroker serverConfig)
+// {
+// m_server_config = serverConfig;
+// }
+//
+// private string m_server_name => nameof(ServerType.BrokerApi);
+//
+// }
diff --git a/BrokerApiCore/BrokerBusinessLog/PlanetItemExchangeBusinessLog.cs b/BrokerApiCore/BrokerBusinessLog/PlanetItemExchangeBusinessLog.cs
index 121ab3d..32063a2 100644
--- a/BrokerApiCore/BrokerBusinessLog/PlanetItemExchangeBusinessLog.cs
+++ b/BrokerApiCore/BrokerBusinessLog/PlanetItemExchangeBusinessLog.cs
@@ -10,8 +10,9 @@ public class PlanetItemExchangeBusinessLog : ILogInvokerEx
{
private readonly PlanetItemExchangeLogData m_log_data;
+ // LogDomainType.BrokerApi => LogDomainType.PlanetItemExchange 로 변경
public PlanetItemExchangeBusinessLog(LogActionEx logAction, PlanetItemExchangeLogData logData)
- : base(LogDomainType.BrokerApi, logAction)
+ : base(LogDomainType.PlanetItemExchange, logAction)
{
m_log_data = new PlanetItemExchangeLogData(this, logData);
}
diff --git a/BrokerApiCore/BrokerBusinessLog/PlanetUserAuthBusinessLog.cs b/BrokerApiCore/BrokerBusinessLog/PlanetUserAuthBusinessLog.cs
index a64c25a..39f7603 100644
--- a/BrokerApiCore/BrokerBusinessLog/PlanetUserAuthBusinessLog.cs
+++ b/BrokerApiCore/BrokerBusinessLog/PlanetUserAuthBusinessLog.cs
@@ -10,9 +10,9 @@ namespace BrokerApiCore;
public class PlanetUserAuthBusinessLog : ILogInvokerEx
{
private readonly PlanetUserAuthLogData m_log_data;
-
+ // LogDomainType.BrokerApi => LogDomainType.PlanetUserAuth 로 변경
public PlanetUserAuthBusinessLog(PlanetUserAuthLogData logData, LogActionType logActionType)
- : base(LogDomainType.BrokerApi, new LogActionEx(logActionType))
+ : base(LogDomainType.PlanetUserAuth, new LogActionEx(logActionType))
{
m_log_data = new PlanetUserAuthLogData(this, logData);
}
diff --git a/BrokerApiCore/BrokerServerLogic.cs b/BrokerApiCore/BrokerServerLogic.cs
index d2fbaa8..610d60e 100644
--- a/BrokerApiCore/BrokerServerLogic.cs
+++ b/BrokerApiCore/BrokerServerLogic.cs
@@ -1,142 +1,149 @@
-using NLog.Config;
-
+using Microsoft.Extensions.Configuration;
using ServerBase;
using ServerCommon;
+using ServerCommon.BusinessLogDomain;
+
using ServerCore;
+
using MODULE_ID = System.UInt32;
+using ServerMetricsHelper = ServerBase.ServerMetricsHelper;
namespace BrokerApiCore;
-public sealed class BrokerServerLogic : IServerLogic, IWithLogActor, IInitializer
+public class BrokerServerLogic : ServerLogicBase, IWithPacketNamespaceVerifier, IWithConfiguration,
+ IWithServerMetrics, IWithLogActor
{
- private ServerProgramVersion m_server_program_version = new ServerProgramVersion();
- private readonly DynamoDbClient m_dynamo_db_client = new();
- private readonly ServerConfigMetaverseBroker m_server_config;
- private readonly ServerType m_server_type = ServerType.BrokerApi;
- private readonly string m_server_name = ServerType.BrokerApi.ToString();
- private bool m_is_initialized = false;
+ private readonly string m_server_config_path = "./";
- public BrokerServerLogic(ServerConfigMetaverseBroker serverConfig)
+ public BrokerServerLogic(ServerConfig serverConfig) : base(serverConfig)
{
- m_server_config = serverConfig;
}
- public IModule getModule(MODULE_ID moduleId)
- {
- return null;
- }
+ public Action OnServerStart { get; set; }
- public Result registerEntityTicker(EntityTicker entityTicker)
- {
- return null;
- }
-
-
- public async Task onInit()
- {
- if (m_is_initialized)
- {
- return new Result();
- }
- m_is_initialized = true;
-
- Log.initLog(ServerType.BrokerApi.ToString(), "Developer", onNLogConfigurationChanged);
- onInitBusinessLog();
- var result = await onInitDynamoDb();
- return result;
- }
-
- private async Task onInitDynamoDb()
+ public Result mergeConfiguration(IConfiguration configuration)
{
var result = new Result();
+ var key_options = configuration;
+
+ // var port = ushort.Parse(key_options["port"] ?? "0");
+ var config_file = key_options["config"];
var server_config = getServerConfig();
-
- (var error_code, var to_load_table_names) = ServerConfigHelper.getDynamoDbTableNamesWithServiceType(server_config.ServiceType);
- if (error_code.isFail())
- {
- var err_msg = $"Failed to DynamoDbClient.getDynamoDbTableNameWithServiceType() !!! : {server_config.toBasicString()} - {toBasicString()}";
- result.setFail(error_code, err_msg);
- Log.getLogger().error(err_msg);
-
- return result;
- }
-
- var dynamo_db_client = getDynamoDbClient();
- result = dynamo_db_client.connectToDb( to_load_table_names
- , server_config.AWS.LocalDynamoDB, server_config.Dynamodb
- , server_config.AWS.AccessKey, server_config.AWS.SecretKey, server_config.AWS.Region );
- if (result.isFail())
- {
- Log.getLogger().error($"Failed to connectToDb !!! ");
- return result;
- }
-
- if (false == await dynamo_db_client.createDBIfNotExists(false))
- {
- var err_msg = $"Failed to create DB Table !!! - {toBasicString()}";
- result.setFail(ServerErrorCode.DynamoDbTableCreateFailed, err_msg);
- Log.getLogger().fatal(result.toBasicString());
- return result;
- }
-
- Log.getLogger().info($"Success ServerLogicBase.onInitDatabase() - {toBasicString()}");
+ server_config.setConfigFilePath($"{m_server_config_path + ServerConfig.ConfigDirectory + "/" + config_file}");
return result;
}
- private void onInitBusinessLog()
+ protected override string onGetDumpFilename()
{
- BusinessLogger.setup(new NLogAppender()
- , new JsonText()
- , LogTransToOutputType.TransToMultyLine);
-
- Log.getLogger().info($"Success ServerLogicBase.onInitBusinessLog() - {toBasicString()}");
+ return getServerName() + "_" + getServerConfig().getAppParamPort();
}
- private void onNLogConfigurationChanged(object? sender, LoggingConfigurationChangedEventArgs e)
+ public override async Task onInit()
{
var result = new Result();
var err_msg = string.Empty;
- var server_config = getServerConfig();
- if (server_config.AWS.CloudWatchLog.Enable)
+ var businesslog_refresh_date = MetaHelper.GameConfigMeta.BusinessLogRefreshTime;
+ DailyTimeEventManager.Instance.tryAddTask("BrokerBusinessLogRefresh", businesslog_refresh_date, onBusinessLogRefresh);
+
+ result = await base.onInit();
+ if (result.isFail())
{
- result = setupCloudwatchLog(server_config);
- if (result.isFail())
- {
- err_msg = $"Failed to setupCloudwatchLog() !!! in onNLogConfigurationChanged() : {result.toBasicString()} - {toBasicString()}";
- Log.getLogger().fatal(err_msg);
- }
- }
-
- return;
- Result setupCloudwatchLog(ServerConfig serverConfig)
- {
- var result = new Result();
- var err_msg = string.Empty;
-
- if(false == CloudWatchLog.isOpened())
- {
- return result;
- }
-
- if (false == CloudWatchLog.setup( serverConfig.AWS.CloudWatchLog.CloudWatchLogGroup
- , serverConfig.AWS.CloudWatchLog.CloudWatchLogNamePattern
- , serverConfig.AWS.CloudWatchLog.CloudWatchLogLevel
- , serverConfig.AWS.Region
- , serverConfig.AWS.AccessKey
- , serverConfig.AWS.SecretKey
- , serverConfig.AWS.CloudWatchLog.CloudWatchLogLayout) )
- {
- err_msg = $"Failed to CloudWatchLog.setup() !!! - {toBasicString()}";
- result.setFail(ServerErrorCode.NlogWithAwsCloudWatchSetupFailed, err_msg);
- Log.getLogger().fatal(result.toBasicString());
-
- return result;
- }
-
+ err_msg = $"Failed to onInit() !!! : {result.toBasicString()}";
+ Log.getLogger().error(err_msg);
return result;
}
+
+ return result;
+ }
+
+ // 비즈니스 로그가 일일 아카이빙 되도록 강제로 매일 로그를 남긴다.
+ private async Task onBusinessLogRefresh()
+ {
+ await Task.CompletedTask;
+
+ var log_invokers = new List(1);
+ var empty_business_refresh_with_log_actor = new EmptyBusinessWithLogActor();
+ DailyRefreshBusinessLog log = new();
+ log_invokers.Add(log);
+ BusinessLogger.collectLogs(new LogActionEx(LogActionType.TestBusinessLog),
+ empty_business_refresh_with_log_actor, log_invokers);
+ Log.getLogger().info("Broker EmptyBusinessLog write");
+ }
+
+
+ protected override Result onCreateServerName()
+ {
+ var result = new Result();
+ var err_msg = string.Empty;
+
+ var server_type_name = getServerType();
+ var server_type = server_type_name.toServerType();
+ if (false == server_type.isValidServerType())
+ {
+ err_msg = $"ServerType invalid !!! : {server_type.ToString()}";
+ result.setFail(ServerErrorCode.ServerTypeInvalid, err_msg);
+ return result;
+ }
+
+ var server_config = getServerConfig();
+ var listen_port = server_config.toClientListenPort();
+ if (listen_port <= 0)
+ {
+ err_msg =
+ $"Client listen port invalid !!! : appParamPort:{listen_port}, configListenPort:{server_config.ClientListenPort} - {server_type.ToString()}";
+ result.setFail(ServerErrorCode.ClientListenPortInvalid, err_msg);
+ return result;
+ }
+
+ base.setServerName(server_type.toServerName(server_config.toClientListenIP(), listen_port, 0, 0));
+ return result;
+ }
+
+ protected override Result onLoadMetaDatas()
+ {
+ return ServerCommon.ServerLogicHelper.loadMetaDatas(this);
+ }
+
+ protected override async Task onRegisterModuleAll()
+ {
+ var result = new Result();
+
+ var config = getServerConfig();
+ var load_config_info = config.getLoadedConfig();
+ NullReferenceCheckHelper.throwIfNull(load_config_info,
+ () => $"load_config_info is null !!! - {toBasicString()}");
+
+ {
+ result = await tryCreateAndRegisterModule(() =>
+ {
+ var config_param = new DynamoDbClient.ConfigParam();
+ result = config_param.tryReadFromJsonOrDefault(load_config_info);
+ if (result.isFail())
+ {
+ return (null, result);
+ }
+
+ var module_context = new ModuleContext((MODULE_ID)ModuleId.DynamoDbConnector
+ , 0, 0, config_param);
+ var created_module = new DynamoDbClient(module_context);
+ return (created_module, result);
+ });
+ }
+ return result;
+ }
+
+ public override async Task onCreateTickerAll()
+ {
+ return await Task.FromResult(new Result());
+ }
+
+ protected override async Task onStartServer()
+ {
+ var result = await base.onStartServer();
+ OnServerStart?.Invoke();
+ return result;
}
public ILogActor toLogActor()
@@ -151,33 +158,43 @@ public sealed class BrokerServerLogic : IServerLogic, IWithLogActor, IInitialize
return log_info;
}
- public string toBasicString()
+ // public string toBasicString()
+ // {
+ // return $"{m_server_name}({m_server_type})";
+ // }
+
+ // public string getServerType()
+ // {
+ // return m_server_type.ToString();
+ // }
+
+ // public string getServerName()
+ // {
+ // return m_server_name;
+ // }
+ public bool isValidPacketNamespace(string toCheckNamespace, IPacketCommand packetCommand)
{
- return $"{m_server_name}({m_server_type})";
+ return true;
}
- public string getServerType()
+ public Task setupServerMetrics()
{
- return m_server_type.ToString();
+ return Task.FromResult(new Result());
}
- public string getServerName()
+ public bool isSetupCompleted()
{
- return m_server_name;
+ return ServerMetricsHelper.isSetupCompleted(this);
}
- public ServerConfig getServerConfig()
+ public ServerMetricsCacheRequest getServerMetricsCacheRequest()
{
- return m_server_config;
+ return ServerBase.ServerMetricsHelper.getServerMetricsCacheRequest(this);
}
- public RedisConnector getRedisConnector()
+ public Task syncServerInfoToCache()
{
- throw new NotImplementedException();
+ return Task.FromResult(new Result());
}
- public DynamoDbClient getDynamoDbClient()
- {
- return m_dynamo_db_client;
- }
}
diff --git a/BrokerApiCore/Common/PlanetTokenValidator.cs b/BrokerApiCore/Common/PlanetTokenValidator.cs
new file mode 100644
index 0000000..74c74ed
--- /dev/null
+++ b/BrokerApiCore/Common/PlanetTokenValidator.cs
@@ -0,0 +1,30 @@
+
+using Microsoft.IdentityModel.JsonWebTokens;
+using System.Security.Claims;
+using BrokerApiCore;
+
+namespace BrokerApiCore;
+public class PlanetTokenValidator
+{
+ public (string, string) validate(ClaimsPrincipal? principal)
+ {
+ Guard.Against.isNull(principal, ServerErrorCode.InvalidPlanetJwt, () => "jwt parsing error");
+
+ var exp_claim = principal.FindFirst(JwtRegisteredClaimNames.Exp)?.Value;
+ Guard.Against.isNull(principal, ServerErrorCode.InvalidPlanetJwt, () => "no JwtRegisteredClaimNames.Exp value");
+
+ var exp_time = DateTimeOffset.FromUnixTimeSeconds(long.Parse(exp_claim ?? string.Empty));
+ Guard.Against.isFalse(exp_time > DateTimeOffset.UtcNow, ServerErrorCode.ExpiredPlanetJwt,
+ () => "Jwt has expired");
+
+ var planet_id = principal.FindFirstValue(JwtRegisteredClaimNames.Sid);
+ Guard.Against.isNullOrEmptyOrWhiteSpace(planet_id, ServerErrorCode.InvalidPlanetJwt,
+ () => "jwt parsing error no sub");
+
+ var planet_server_type = principal.FindFirstValue(JwtRegisteredClaimNames.Typ);
+ Guard.Against.isNullOrEmptyOrWhiteSpace(planet_server_type, ServerErrorCode.InvalidPlanetJwt,
+ () => "jwt parsing error no typ");
+
+ return (planet_id, planet_server_type);
+ }
+}
diff --git a/BrokerApiCore/Entity/Actions/BrokerMailSendAction.cs b/BrokerApiCore/Entity/Actions/BrokerMailSendAction.cs
index 59b5086..7d01dfc 100644
--- a/BrokerApiCore/Entity/Actions/BrokerMailSendAction.cs
+++ b/BrokerApiCore/Entity/Actions/BrokerMailSendAction.cs
@@ -1,6 +1,10 @@
using System.Text;
+
using ServerBase;
-using ServerCommon; using ServerCore;
+
+using ServerCommon;
+
+using ServerCore;
namespace BrokerApiCore;
@@ -35,7 +39,6 @@ public class BrokerMailSendAction : EntityActionBase
private void setMailAttribute(MailSendOption option)
{
DateTime now = DateTimeHelper.Current;
- var expire_date = now.AddSeconds(MetaHelper.GameConfigMeta.SystemMailStoragePeriod);
string mail_guid = makeMailGuid(now);
var mail_attribute = getOwner().getEntityAttributeNotNull();
@@ -47,7 +50,7 @@ public class BrokerMailSendAction : EntityActionBase
mail_attribute.Title = option.Title;
mail_attribute.Text = option.Text;
mail_attribute.CreateTime = now;
- mail_attribute.ExpireTime = expire_date;
+ mail_attribute.ExpireTime = option.ExpireDate;
mail_attribute.IsSystemMail = option.IsSystemMail;
mail_attribute.IsRead = false;
mail_attribute.IsGetItem = false;
@@ -137,18 +140,46 @@ public class BrokerMailSendAction : EntityActionBase
logData.ItemList = mailAttrib.ItemList;
}
+ // public MailSendOption createSystemSendMailOptionByMeta(
+ // ProductMetaData productMeta,
+ // SystemMailMetaData mailMeta,
+ // string receiverUserGuid,
+ // string receiverNickName, int amount)
+ // {
+ // DateTime now = DateTimeHelper.Current;
+ // var expire_date = now.AddSeconds(MetaHelper.GameConfigMeta.SystemMailStoragePeriod);
+ // // if (productMeta.Storage_Period_First != 0)
+ // // {
+ // // expire_date = DateTime.UtcNow.AddMinutes(productMeta.Storage_Period_First);
+ // // }
+ // var mail_send_option = new MailSendOption
+ // {
+ // ReceiverUserGuid = receiverUserGuid,
+ // ReceiverNickName = receiverNickName,
+ // IsSystemMail = true,
+ // IsTextByMetaData = true,
+ // Title = mailMeta.Mail_Title,
+ // Text = mailMeta.Mail_Desc,
+ // ExpireDate = expire_date,
+ // ItemList = getMailItems(productMeta, amount).ToList(),
+ // PackageOrderId = string.Empty,
+ // };
+ // return mail_send_option;
+ // }
+
public MailSendOption createSystemSendMailOptionByMeta(
ProductMetaData productMeta,
SystemMailMetaData mailMeta,
+ IEnumerable mailItems,
string receiverUserGuid,
- string receiverNickName, int amount)
+ string receiverNickName)
{
DateTime now = DateTimeHelper.Current;
var expire_date = now.AddSeconds(MetaHelper.GameConfigMeta.SystemMailStoragePeriod);
- // if (productMeta.Storage_Period_First != 0)
- // {
- // expire_date = DateTime.UtcNow.AddMinutes(productMeta.Storage_Period_First);
- // }
+ if (productMeta.Storage_Period_First != 0)
+ {
+ expire_date = DateTime.UtcNow.AddMinutes(productMeta.Storage_Period_First);
+ }
var mail_send_option = new MailSendOption
{
ReceiverUserGuid = receiverUserGuid,
@@ -158,7 +189,7 @@ public class BrokerMailSendAction : EntityActionBase
Title = mailMeta.Mail_Title,
Text = mailMeta.Mail_Desc,
ExpireDate = expire_date,
- ItemList = getMailItems(productMeta, amount).ToList(),
+ ItemList = mailItems.ToList(),
PackageOrderId = string.Empty,
};
return mail_send_option;
@@ -170,12 +201,15 @@ public class BrokerMailSendAction : EntityActionBase
{
IEnumerable total_items = Enumerable.Range(0, amount).Select(i =>
{
- return productMetaData.First_List.Select(itemMeta => new ServerCommon.MailItem()
+ return productMetaData.First_List.Select(itemMeta =>
{
- ItemId = (UInt32)itemMeta.Id,
- Count = itemMeta.Value,
- ProductId = (UInt32)productMetaData.Id,
- isRepeatProduct = false
+ return new ServerCommon.MailItem()
+ {
+ ItemId = (UInt32)itemMeta.Id,
+ Count = itemMeta.Value,
+ ProductId = (UInt32)productMetaData.Id,
+ isRepeatProduct = false
+ };
});
}).SelectMany(x => x);
return total_items;
diff --git a/BrokerApiCore/Entity/Helpers/MailHelper.cs b/BrokerApiCore/Entity/Helpers/MailHelper.cs
new file mode 100644
index 0000000..4b9ceee
--- /dev/null
+++ b/BrokerApiCore/Entity/Helpers/MailHelper.cs
@@ -0,0 +1,38 @@
+using MetaAssets;
+
+namespace BrokerApiCore;
+
+public static class MailHelper
+{
+ public static IEnumerable getMailItems(BrokerMetaTableRef metaTableRefRef, ProductMetaData productMeta, int amount)
+ {
+ var product_meta_id = productMeta.Id;
+ metaTableRefRef.MetaTable.ProductMetaTable.ProductMetaDataListbyId.TryGetValue(product_meta_id,
+ out var product_meta);
+ Guard.Against.isNull(product_meta, ServerErrorCode.MetaIdInvalid, ()=>"product meta not found");
+ var mail_items = product_meta.First_List.SelectMany(x =>
+ {
+ metaTableRefRef.MetaTable.ItemMetaTable.ItemMetaDataListbyId.TryGetValue(x.Id, out var item_meta_data);
+ Guard.Against.isNull(item_meta_data, ServerErrorCode.MetaIdInvalid, () => "item meta not found");
+ var apply_amount = 0;
+ var items = new List();
+ while (apply_amount < amount)
+ {
+ var current_amount = apply_amount + item_meta_data.StackMaxCount < amount
+ ? item_meta_data.StackMaxCount
+ : amount - apply_amount;
+ var mail_item = new ServerCommon.MailItem
+ {
+ ProductId = Convert.ToUInt32(product_meta_id),
+ ItemId = Convert.ToUInt32(item_meta_data.ItemId),
+ Count = x.Value * current_amount
+ };
+ apply_amount += Convert.ToInt32(mail_item.Count);
+ items.Add(mail_item);
+ }
+ return items;
+ });
+ return mail_items;
+ }
+}
+
diff --git a/BrokerApiCore/Repository/SqlContext/MetaverseBrokerDbContext.cs b/BrokerApiCore/Repository/SqlContext/MetaverseBrokerDbContext.cs
index f3d360c..b2895fb 100644
--- a/BrokerApiCore/Repository/SqlContext/MetaverseBrokerDbContext.cs
+++ b/BrokerApiCore/Repository/SqlContext/MetaverseBrokerDbContext.cs
@@ -16,7 +16,7 @@ public class MetaverseBrokerDbContext: DbContext
public MetaverseBrokerDbContext(DbContextOptions options) : base(options)
{
- // base.Database.EnsureCreated();
+ base.Database.EnsureCreated();
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
diff --git a/BrokerApiCore/Services/JwtGenerator.cs b/BrokerApiCore/Services/JwtGenerator.cs
index 56ce60a..10bf753 100644
--- a/BrokerApiCore/Services/JwtGenerator.cs
+++ b/BrokerApiCore/Services/JwtGenerator.cs
@@ -20,10 +20,9 @@ public class JwtGenerator
public JwtOption JwtOption => m_jwt_option;
// Access Token 생성
- public string generateAccessToken(string planetId, string planetServerType, string? refreshToken = null)
+ public string generateAccessToken(string planetId, string planetServerType, DateTime dateTime )
{
- // todo: 토큰 유효기간 설정
- var issued_at = new DateTime(2025, 3, 1, 0, 0, 0, DateTimeKind.Utc);
+ var issued_at = dateTime.ToUniversalTime(); // new DateTime(2025, 3, 1, 0, 0, 0, DateTimeKind.Utc);
var expires = issued_at.AddYears(1);
var security_key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(m_jwt_option.Secret));
var credentials = new SigningCredentials(security_key, SecurityAlgorithms.HmacSha256);
diff --git a/BrokerApiCore/Services/PlanetService.cs b/BrokerApiCore/Services/PlanetService.cs
index 43be094..a683eb2 100644
--- a/BrokerApiCore/Services/PlanetService.cs
+++ b/BrokerApiCore/Services/PlanetService.cs
@@ -1,12 +1,10 @@
using System.Security.Claims;
using Microsoft.IdentityModel.JsonWebTokens;
-
using ServerBase;
using ServerCommon;
using ServerCommon.BusinessLogDomain;
namespace BrokerApiCore;
-
public class PlanetService
{
private readonly PlanetInfoRepo m_planet_info_repo;
@@ -29,7 +27,7 @@ public class PlanetService
Guard.Against.isFalse(planet_info.SecretKey == planetSecretKey,
ServerErrorCode.PlanetSecretKeyDoesNotMatched, () => "플래닛에 제공한 엑세스키와 맞지 않음");
- var access_token = m_jwt_generator.generateAccessToken(planetId, planet_info.ServerType);
+ var access_token = m_jwt_generator.generateAccessToken(planetId, planet_info.ServerType, planet_info.UpdatedAt);
// 비즈니스 로그
m_log_actor = new PlanetProviderLogActor(planetId);
@@ -47,24 +45,6 @@ public class PlanetService
return ("new_earth", "caliverse");
}
- var principal = m_jwt_parser.parseToken(jwt);
- Guard.Against.isNull(principal, ServerErrorCode.InvalidPlanetJwt, () => "jwt parsing error");
-
- var exp_claim = principal.FindFirst(JwtRegisteredClaimNames.Exp)?.Value;
- Guard.Against.isNull(principal, ServerErrorCode.InvalidPlanetJwt, () => "no JwtRegisteredClaimNames.Exp value");
-
- var exp_time = DateTimeOffset.FromUnixTimeSeconds(long.Parse(exp_claim ?? string.Empty));
- Guard.Against.isFalse(exp_time > DateTimeOffset.UtcNow, ServerErrorCode.ExpiredPlanetJwt,
- () => "Jwt has expired");
-
- var planet_id = principal.FindFirstValue(JwtRegisteredClaimNames.Sid);
- Guard.Against.isNullOrEmptyOrWhiteSpace(planet_id, ServerErrorCode.InvalidPlanetJwt,
- () => "jwt parsing error no sub");
-
- var planet_server_type = principal.FindFirstValue(JwtRegisteredClaimNames.Typ);
- Guard.Against.isNullOrEmptyOrWhiteSpace(planet_server_type, ServerErrorCode.InvalidPlanetJwt,
- () => "jwt parsing error no typ");
-
- return (planet_id, planet_server_type);
+ return new PlanetTokenValidator().validate(m_jwt_parser.parseToken(jwt));
}
}
diff --git a/BrokerApiCore/Services/PlanetitemExchange/Strategies/ProductOrderCompletionStrategy.cs b/BrokerApiCore/Services/PlanetitemExchange/Strategies/ProductOrderCompletionStrategy.cs
index 90cb8c0..136da93 100644
--- a/BrokerApiCore/Services/PlanetitemExchange/Strategies/ProductOrderCompletionStrategy.cs
+++ b/BrokerApiCore/Services/PlanetitemExchange/Strategies/ProductOrderCompletionStrategy.cs
@@ -44,9 +44,10 @@ public class ProductOrderCompletionStrategy : IOrderCompletionStrategy
Guard.Against.resultFail(init_result, init_result.ErrorCode, ()=>"BrokerMail onInit error");
var mail_send_action = broker_mail.getEntityActionNotNull();
- var mail_option = mail_send_action.createSystemSendMailOptionByMeta(product_meta, mail_meta,
+ var mail_option = mail_send_action.createSystemSendMailOptionByMeta(
+ product_meta, mail_meta, MailHelper.getMailItems(m_meta_table_ref, product_meta, orderCreated.ExchangeMetaAmount),
m_planet_user_entity.UserGuid,
- m_planet_user_entity.Nickname, orderCreated.ExchangeMetaAmount);
+ m_planet_user_entity.Nickname);
//==============================================================================================
// rdb 트랜잭션 시작
@@ -133,3 +134,4 @@ public class ProductOrderCompletionStrategy : IOrderCompletionStrategy
return mail_data;
}
}
+
diff --git a/BrokerApiCore/Services/UserAuthService.cs b/BrokerApiCore/Services/UserAuthService.cs
index 1cd7b28..c457d15 100644
--- a/BrokerApiCore/Services/UserAuthService.cs
+++ b/BrokerApiCore/Services/UserAuthService.cs
@@ -28,9 +28,14 @@ public class UserAuthService
public PlanetUserEntity PlanetUserEntity => m_planet_user_entity;
- private ServerConfigMetaverseBroker? getServerConfig()
+ // private ServerConfigMetaverseBroker? getServerConfig()
+ // {
+ // return m_server_logic.getServerConfig() as ServerConfigMetaverseBroker;
+ // }
+
+ private ServerConfig? getServerConfig()
{
- return m_server_logic.getServerConfig() as ServerConfigMetaverseBroker;
+ return m_server_logic.getServerConfig();
}
public UserAuthService(SsoAccountRepo ssoAccountRepo, IServerLogic serverLogic)
@@ -171,7 +176,7 @@ public class UserAuthService
{
accessToken = Convert.ToUInt64(id);
}
- catch (Exception e)
+ catch
{
accessToken = 0;
}
diff --git a/BrokerApiCore/obj/BrokerApiCore.csproj.nuget.dgspec.json b/BrokerApiCore/obj/BrokerApiCore.csproj.nuget.dgspec.json
index ec6a865..2ec57f3 100644
--- a/BrokerApiCore/obj/BrokerApiCore.csproj.nuget.dgspec.json
+++ b/BrokerApiCore/obj/BrokerApiCore.csproj.nuget.dgspec.json
@@ -55,18 +55,28 @@
"version": "[8.0.2, )",
"versionCentrallyManaged": true
},
+ "Microsoft.EntityFrameworkCore": {
+ "target": "Package",
+ "version": "[8.0.13, )",
+ "versionCentrallyManaged": true
+ },
"Microsoft.EntityFrameworkCore.Design": {
"include": "Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive",
"suppressParent": "All",
"target": "Package",
- "version": "[8.0.2, )",
+ "version": "[8.0.13, )",
+ "versionCentrallyManaged": true
+ },
+ "Microsoft.EntityFrameworkCore.Relational": {
+ "target": "Package",
+ "version": "[8.0.13, )",
"versionCentrallyManaged": true
},
"Microsoft.EntityFrameworkCore.Tools": {
"include": "Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive",
"suppressParent": "All",
"target": "Package",
- "version": "[8.0.2, )",
+ "version": "[8.0.13, )",
"versionCentrallyManaged": true
},
"NLog.Web.AspNetCore": {
@@ -76,7 +86,7 @@
},
"Pomelo.EntityFrameworkCore.MySql": {
"target": "Package",
- "version": "[8.0.2, )",
+ "version": "[8.0.3, )",
"versionCentrallyManaged": true
},
"Swashbuckle.AspNetCore.Annotations": {
@@ -88,17 +98,10 @@
"centralPackageVersions": {
"Asp.Versioning.Mvc": "8.1.0",
"Asp.Versioning.Mvc.ApiExplorer": "8.1.0",
+ "Aspire.Hosting.AppHost": "8.2.2",
"AspNetCore.Swagger.Fluent.Annotations": "1.0.4",
"AsyncStateMachine": "1.3.2",
- "AutoMapper": "14.0.0",
- "AutoMapper.AspNetCore.OData.EFCore": "7.0.1",
- "AutoMapper.Collection": "11.0.0",
- "AutoMapper.Collection.EntityFrameworkCore": "11.0.0",
- "AutoMapper.Contrib.Autofac.DependencyInjection": "9.0.0",
- "AutoMapper.Data": "9.0.0",
- "AutoMapper.EF6": "3.0.1",
- "AutoMapper.Extensions.EnumMapping": "4.1.0",
- "AutoMapper.Extensions.ExpressionMapping": "8.0.0",
+ "AutoMapper": "15.0.1",
"AWS.Logger.NLog": "3.3.4",
"AWSSDK.Core": "3.7.402.46",
"AWSSDK.DynamoDBv2": "3.7.407",
@@ -114,6 +117,7 @@
"CommunityToolkit.Diagnostics": "8.2.2",
"CommunityToolkit.Mvvm": "8.2.2",
"Costura.Fody": "5.7.0",
+ "coverlet.collector": "6.0.4",
"Csv": "2.0.93",
"DocumentFormat.OpenXml": "2.20.0",
"DotNet.MultiMap": "2.2.1",
@@ -121,6 +125,7 @@
"ExcelDataReader": "3.6.0",
"ExcelDataReader.DataSet": "3.6.0",
"ExcelNumberFormat": "1.1.0",
+ "FluentAssertions": "8.3.0",
"Google.Protobuf": "3.27.1",
"Grpc.AspNetCore": "2.63.0",
"Grpc.AspNetCore.Server.Reflection": "2.63.0",
@@ -136,10 +141,12 @@
"Microsoft.AspNetCore.OpenApi": "8.0.6",
"Microsoft.Data.Sqlite": "8.0.6",
"Microsoft.Diagnostics.NETCore.Client": "0.2.621003",
- "Microsoft.EntityFrameworkCore.Design": "8.0.2",
- "Microsoft.EntityFrameworkCore.Tools": "8.0.2",
+ "Microsoft.EntityFrameworkCore": "8.0.13",
+ "Microsoft.EntityFrameworkCore.Design": "8.0.13",
+ "Microsoft.EntityFrameworkCore.Relational": "8.0.13",
+ "Microsoft.EntityFrameworkCore.Tools": "8.0.13",
"Microsoft.Extensions.Caching.StackExchangeRedis": "8.0.6",
- "Microsoft.Extensions.Configuration": "9.0.4",
+ "Microsoft.Extensions.Configuration": "8.0.0",
"Microsoft.Extensions.Configuration.Abstractions": "8.0.0",
"Microsoft.Extensions.Configuration.UserSecrets": "8.0.0",
"Microsoft.Extensions.DependencyInjection": "8.0.0",
@@ -148,8 +155,8 @@
"Microsoft.Extensions.Hosting.Abstractions": "8.0.0",
"Microsoft.Extensions.Http": "8.0.0",
"Microsoft.Extensions.Logging": "8.0.0",
- "Microsoft.Extensions.Logging.Abstractions": "9.0.4",
- "Microsoft.Extensions.Options": "9.0.4",
+ "Microsoft.Extensions.Logging.Abstractions": "8.0.3",
+ "Microsoft.Extensions.Options": "8.0.2",
"Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0",
"Microsoft.NET.Test.Sdk": "17.12.0",
"Microsoft.OpenApi": "1.6.22",
@@ -159,18 +166,27 @@
"MongoDB.Driver": "3.3.0",
"MongoDB.Driver.Core": "2.30.0",
"Moq": "4.20.72",
+ "MSTest.TestAdapter": "3.8.3",
+ "MSTest.TestFramework": "3.8.3",
"MySqlConnector": "2.4.0",
"NeoSmart.AsyncLock": "3.2.1",
"Newtonsoft.Json": "13.0.3",
"Nito.AsyncEx": "5.1.2",
"NJsonSchema.CodeGeneration.CSharp": "10.9.0",
"NLog": "5.4.0",
+ "NLog.Extensions.Logging": "5.3.11",
"NLog.Web.AspNetCore": "5.3.11",
+ "NSubstituteAutoSubstitute": "1.1.0",
+ "OneOf": "3.0.271",
"Otp.NET": "1.4.0",
"p4api.net": "2023.1.248.4623",
"Polly": "8.5.1",
- "Pomelo.EntityFrameworkCore.MySql": "8.0.2",
+ "Pomelo.EntityFrameworkCore.MySql": "8.0.3",
"RabbitMQ.Client": "6.8.1",
+ "RedLock.net": "2.3.2",
+ "Sentry.AspNetCore": "5.10.0",
+ "Sentry.Extensions.Logging": "5.10.0",
+ "Sentry.NLog": "5.10.0",
"SharpSvn": "1.14003.272",
"sqlite-net-pcl": "1.9.172",
"SSH.NET": "2025.0.0",
@@ -183,8 +199,11 @@
"Swashbuckle.AspNetCore.Filters": "8.0.2",
"Swashbuckle.AspNetCore.SwaggerUI": "7.2.0",
"System.IdentityModel.Tokens.Jwt": "8.9.0",
+ "System.IO.Hashing": "8.0.0",
+ "Ulid": "1.3.4",
"xunit": "2.9.3",
- "xunit.assert": "2.9.2",
+ "xunit.assert": "2.9.3",
+ "xunit.extensibility.core": "2.9.3",
"xunit.runner.visualstudio": "3.0.1",
"YamlDotNet": "16.3.0"
},
@@ -270,17 +289,10 @@
"centralPackageVersions": {
"Asp.Versioning.Mvc": "8.1.0",
"Asp.Versioning.Mvc.ApiExplorer": "8.1.0",
+ "Aspire.Hosting.AppHost": "8.2.2",
"AspNetCore.Swagger.Fluent.Annotations": "1.0.4",
"AsyncStateMachine": "1.3.2",
- "AutoMapper": "14.0.0",
- "AutoMapper.AspNetCore.OData.EFCore": "7.0.1",
- "AutoMapper.Collection": "11.0.0",
- "AutoMapper.Collection.EntityFrameworkCore": "11.0.0",
- "AutoMapper.Contrib.Autofac.DependencyInjection": "9.0.0",
- "AutoMapper.Data": "9.0.0",
- "AutoMapper.EF6": "3.0.1",
- "AutoMapper.Extensions.EnumMapping": "4.1.0",
- "AutoMapper.Extensions.ExpressionMapping": "8.0.0",
+ "AutoMapper": "15.0.1",
"AWS.Logger.NLog": "3.3.4",
"AWSSDK.Core": "3.7.402.46",
"AWSSDK.DynamoDBv2": "3.7.407",
@@ -296,6 +308,7 @@
"CommunityToolkit.Diagnostics": "8.2.2",
"CommunityToolkit.Mvvm": "8.2.2",
"Costura.Fody": "5.7.0",
+ "coverlet.collector": "6.0.4",
"Csv": "2.0.93",
"DocumentFormat.OpenXml": "2.20.0",
"DotNet.MultiMap": "2.2.1",
@@ -303,6 +316,7 @@
"ExcelDataReader": "3.6.0",
"ExcelDataReader.DataSet": "3.6.0",
"ExcelNumberFormat": "1.1.0",
+ "FluentAssertions": "8.3.0",
"Google.Protobuf": "3.27.1",
"Grpc.AspNetCore": "2.63.0",
"Grpc.AspNetCore.Server.Reflection": "2.63.0",
@@ -318,10 +332,12 @@
"Microsoft.AspNetCore.OpenApi": "8.0.6",
"Microsoft.Data.Sqlite": "8.0.6",
"Microsoft.Diagnostics.NETCore.Client": "0.2.621003",
- "Microsoft.EntityFrameworkCore.Design": "8.0.2",
- "Microsoft.EntityFrameworkCore.Tools": "8.0.2",
+ "Microsoft.EntityFrameworkCore": "8.0.13",
+ "Microsoft.EntityFrameworkCore.Design": "8.0.13",
+ "Microsoft.EntityFrameworkCore.Relational": "8.0.13",
+ "Microsoft.EntityFrameworkCore.Tools": "8.0.13",
"Microsoft.Extensions.Caching.StackExchangeRedis": "8.0.6",
- "Microsoft.Extensions.Configuration": "9.0.4",
+ "Microsoft.Extensions.Configuration": "8.0.0",
"Microsoft.Extensions.Configuration.Abstractions": "8.0.0",
"Microsoft.Extensions.Configuration.UserSecrets": "8.0.0",
"Microsoft.Extensions.DependencyInjection": "8.0.0",
@@ -330,8 +346,8 @@
"Microsoft.Extensions.Hosting.Abstractions": "8.0.0",
"Microsoft.Extensions.Http": "8.0.0",
"Microsoft.Extensions.Logging": "8.0.0",
- "Microsoft.Extensions.Logging.Abstractions": "9.0.4",
- "Microsoft.Extensions.Options": "9.0.4",
+ "Microsoft.Extensions.Logging.Abstractions": "8.0.3",
+ "Microsoft.Extensions.Options": "8.0.2",
"Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0",
"Microsoft.NET.Test.Sdk": "17.12.0",
"Microsoft.OpenApi": "1.6.22",
@@ -341,18 +357,27 @@
"MongoDB.Driver": "3.3.0",
"MongoDB.Driver.Core": "2.30.0",
"Moq": "4.20.72",
+ "MSTest.TestAdapter": "3.8.3",
+ "MSTest.TestFramework": "3.8.3",
"MySqlConnector": "2.4.0",
"NeoSmart.AsyncLock": "3.2.1",
"Newtonsoft.Json": "13.0.3",
"Nito.AsyncEx": "5.1.2",
"NJsonSchema.CodeGeneration.CSharp": "10.9.0",
"NLog": "5.4.0",
+ "NLog.Extensions.Logging": "5.3.11",
"NLog.Web.AspNetCore": "5.3.11",
+ "NSubstituteAutoSubstitute": "1.1.0",
+ "OneOf": "3.0.271",
"Otp.NET": "1.4.0",
"p4api.net": "2023.1.248.4623",
"Polly": "8.5.1",
- "Pomelo.EntityFrameworkCore.MySql": "8.0.2",
+ "Pomelo.EntityFrameworkCore.MySql": "8.0.3",
"RabbitMQ.Client": "6.8.1",
+ "RedLock.net": "2.3.2",
+ "Sentry.AspNetCore": "5.10.0",
+ "Sentry.Extensions.Logging": "5.10.0",
+ "Sentry.NLog": "5.10.0",
"SharpSvn": "1.14003.272",
"sqlite-net-pcl": "1.9.172",
"SSH.NET": "2025.0.0",
@@ -365,8 +390,11 @@
"Swashbuckle.AspNetCore.Filters": "8.0.2",
"Swashbuckle.AspNetCore.SwaggerUI": "7.2.0",
"System.IdentityModel.Tokens.Jwt": "8.9.0",
+ "System.IO.Hashing": "8.0.0",
+ "Ulid": "1.3.4",
"xunit": "2.9.3",
- "xunit.assert": "2.9.2",
+ "xunit.assert": "2.9.3",
+ "xunit.extensibility.core": "2.9.3",
"xunit.runner.visualstudio": "3.0.1",
"YamlDotNet": "16.3.0"
},
@@ -445,17 +473,10 @@
"centralPackageVersions": {
"Asp.Versioning.Mvc": "8.1.0",
"Asp.Versioning.Mvc.ApiExplorer": "8.1.0",
+ "Aspire.Hosting.AppHost": "8.2.2",
"AspNetCore.Swagger.Fluent.Annotations": "1.0.4",
"AsyncStateMachine": "1.3.2",
- "AutoMapper": "14.0.0",
- "AutoMapper.AspNetCore.OData.EFCore": "7.0.1",
- "AutoMapper.Collection": "11.0.0",
- "AutoMapper.Collection.EntityFrameworkCore": "11.0.0",
- "AutoMapper.Contrib.Autofac.DependencyInjection": "9.0.0",
- "AutoMapper.Data": "9.0.0",
- "AutoMapper.EF6": "3.0.1",
- "AutoMapper.Extensions.EnumMapping": "4.1.0",
- "AutoMapper.Extensions.ExpressionMapping": "8.0.0",
+ "AutoMapper": "15.0.1",
"AWS.Logger.NLog": "3.3.4",
"AWSSDK.Core": "3.7.402.46",
"AWSSDK.DynamoDBv2": "3.7.407",
@@ -471,6 +492,7 @@
"CommunityToolkit.Diagnostics": "8.2.2",
"CommunityToolkit.Mvvm": "8.2.2",
"Costura.Fody": "5.7.0",
+ "coverlet.collector": "6.0.4",
"Csv": "2.0.93",
"DocumentFormat.OpenXml": "2.20.0",
"DotNet.MultiMap": "2.2.1",
@@ -478,6 +500,7 @@
"ExcelDataReader": "3.6.0",
"ExcelDataReader.DataSet": "3.6.0",
"ExcelNumberFormat": "1.1.0",
+ "FluentAssertions": "8.3.0",
"Google.Protobuf": "3.27.1",
"Grpc.AspNetCore": "2.63.0",
"Grpc.AspNetCore.Server.Reflection": "2.63.0",
@@ -493,10 +516,12 @@
"Microsoft.AspNetCore.OpenApi": "8.0.6",
"Microsoft.Data.Sqlite": "8.0.6",
"Microsoft.Diagnostics.NETCore.Client": "0.2.621003",
- "Microsoft.EntityFrameworkCore.Design": "8.0.2",
- "Microsoft.EntityFrameworkCore.Tools": "8.0.2",
+ "Microsoft.EntityFrameworkCore": "8.0.13",
+ "Microsoft.EntityFrameworkCore.Design": "8.0.13",
+ "Microsoft.EntityFrameworkCore.Relational": "8.0.13",
+ "Microsoft.EntityFrameworkCore.Tools": "8.0.13",
"Microsoft.Extensions.Caching.StackExchangeRedis": "8.0.6",
- "Microsoft.Extensions.Configuration": "9.0.4",
+ "Microsoft.Extensions.Configuration": "8.0.0",
"Microsoft.Extensions.Configuration.Abstractions": "8.0.0",
"Microsoft.Extensions.Configuration.UserSecrets": "8.0.0",
"Microsoft.Extensions.DependencyInjection": "8.0.0",
@@ -505,8 +530,8 @@
"Microsoft.Extensions.Hosting.Abstractions": "8.0.0",
"Microsoft.Extensions.Http": "8.0.0",
"Microsoft.Extensions.Logging": "8.0.0",
- "Microsoft.Extensions.Logging.Abstractions": "9.0.4",
- "Microsoft.Extensions.Options": "9.0.4",
+ "Microsoft.Extensions.Logging.Abstractions": "8.0.3",
+ "Microsoft.Extensions.Options": "8.0.2",
"Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0",
"Microsoft.NET.Test.Sdk": "17.12.0",
"Microsoft.OpenApi": "1.6.22",
@@ -516,18 +541,27 @@
"MongoDB.Driver": "3.3.0",
"MongoDB.Driver.Core": "2.30.0",
"Moq": "4.20.72",
+ "MSTest.TestAdapter": "3.8.3",
+ "MSTest.TestFramework": "3.8.3",
"MySqlConnector": "2.4.0",
"NeoSmart.AsyncLock": "3.2.1",
"Newtonsoft.Json": "13.0.3",
"Nito.AsyncEx": "5.1.2",
"NJsonSchema.CodeGeneration.CSharp": "10.9.0",
"NLog": "5.4.0",
+ "NLog.Extensions.Logging": "5.3.11",
"NLog.Web.AspNetCore": "5.3.11",
+ "NSubstituteAutoSubstitute": "1.1.0",
+ "OneOf": "3.0.271",
"Otp.NET": "1.4.0",
"p4api.net": "2023.1.248.4623",
"Polly": "8.5.1",
- "Pomelo.EntityFrameworkCore.MySql": "8.0.2",
+ "Pomelo.EntityFrameworkCore.MySql": "8.0.3",
"RabbitMQ.Client": "6.8.1",
+ "RedLock.net": "2.3.2",
+ "Sentry.AspNetCore": "5.10.0",
+ "Sentry.Extensions.Logging": "5.10.0",
+ "Sentry.NLog": "5.10.0",
"SharpSvn": "1.14003.272",
"sqlite-net-pcl": "1.9.172",
"SSH.NET": "2025.0.0",
@@ -540,8 +574,11 @@
"Swashbuckle.AspNetCore.Filters": "8.0.2",
"Swashbuckle.AspNetCore.SwaggerUI": "7.2.0",
"System.IdentityModel.Tokens.Jwt": "8.9.0",
+ "System.IO.Hashing": "8.0.0",
+ "Ulid": "1.3.4",
"xunit": "2.9.3",
- "xunit.assert": "2.9.2",
+ "xunit.assert": "2.9.3",
+ "xunit.extensibility.core": "2.9.3",
"xunit.runner.visualstudio": "3.0.1",
"YamlDotNet": "16.3.0"
},
@@ -623,20 +660,20 @@
"frameworks": {
"net8.0": {
"targetAlias": "net8.0",
+ "dependencies": {
+ "Ulid": {
+ "target": "Package",
+ "version": "[1.3.4, )",
+ "versionCentrallyManaged": true
+ }
+ },
"centralPackageVersions": {
"Asp.Versioning.Mvc": "8.1.0",
"Asp.Versioning.Mvc.ApiExplorer": "8.1.0",
+ "Aspire.Hosting.AppHost": "8.2.2",
"AspNetCore.Swagger.Fluent.Annotations": "1.0.4",
"AsyncStateMachine": "1.3.2",
- "AutoMapper": "14.0.0",
- "AutoMapper.AspNetCore.OData.EFCore": "7.0.1",
- "AutoMapper.Collection": "11.0.0",
- "AutoMapper.Collection.EntityFrameworkCore": "11.0.0",
- "AutoMapper.Contrib.Autofac.DependencyInjection": "9.0.0",
- "AutoMapper.Data": "9.0.0",
- "AutoMapper.EF6": "3.0.1",
- "AutoMapper.Extensions.EnumMapping": "4.1.0",
- "AutoMapper.Extensions.ExpressionMapping": "8.0.0",
+ "AutoMapper": "15.0.1",
"AWS.Logger.NLog": "3.3.4",
"AWSSDK.Core": "3.7.402.46",
"AWSSDK.DynamoDBv2": "3.7.407",
@@ -652,6 +689,7 @@
"CommunityToolkit.Diagnostics": "8.2.2",
"CommunityToolkit.Mvvm": "8.2.2",
"Costura.Fody": "5.7.0",
+ "coverlet.collector": "6.0.4",
"Csv": "2.0.93",
"DocumentFormat.OpenXml": "2.20.0",
"DotNet.MultiMap": "2.2.1",
@@ -659,6 +697,7 @@
"ExcelDataReader": "3.6.0",
"ExcelDataReader.DataSet": "3.6.0",
"ExcelNumberFormat": "1.1.0",
+ "FluentAssertions": "8.3.0",
"Google.Protobuf": "3.27.1",
"Grpc.AspNetCore": "2.63.0",
"Grpc.AspNetCore.Server.Reflection": "2.63.0",
@@ -674,10 +713,12 @@
"Microsoft.AspNetCore.OpenApi": "8.0.6",
"Microsoft.Data.Sqlite": "8.0.6",
"Microsoft.Diagnostics.NETCore.Client": "0.2.621003",
- "Microsoft.EntityFrameworkCore.Design": "8.0.2",
- "Microsoft.EntityFrameworkCore.Tools": "8.0.2",
+ "Microsoft.EntityFrameworkCore": "8.0.13",
+ "Microsoft.EntityFrameworkCore.Design": "8.0.13",
+ "Microsoft.EntityFrameworkCore.Relational": "8.0.13",
+ "Microsoft.EntityFrameworkCore.Tools": "8.0.13",
"Microsoft.Extensions.Caching.StackExchangeRedis": "8.0.6",
- "Microsoft.Extensions.Configuration": "9.0.4",
+ "Microsoft.Extensions.Configuration": "8.0.0",
"Microsoft.Extensions.Configuration.Abstractions": "8.0.0",
"Microsoft.Extensions.Configuration.UserSecrets": "8.0.0",
"Microsoft.Extensions.DependencyInjection": "8.0.0",
@@ -686,8 +727,8 @@
"Microsoft.Extensions.Hosting.Abstractions": "8.0.0",
"Microsoft.Extensions.Http": "8.0.0",
"Microsoft.Extensions.Logging": "8.0.0",
- "Microsoft.Extensions.Logging.Abstractions": "9.0.4",
- "Microsoft.Extensions.Options": "9.0.4",
+ "Microsoft.Extensions.Logging.Abstractions": "8.0.3",
+ "Microsoft.Extensions.Options": "8.0.2",
"Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0",
"Microsoft.NET.Test.Sdk": "17.12.0",
"Microsoft.OpenApi": "1.6.22",
@@ -697,18 +738,27 @@
"MongoDB.Driver": "3.3.0",
"MongoDB.Driver.Core": "2.30.0",
"Moq": "4.20.72",
+ "MSTest.TestAdapter": "3.8.3",
+ "MSTest.TestFramework": "3.8.3",
"MySqlConnector": "2.4.0",
"NeoSmart.AsyncLock": "3.2.1",
"Newtonsoft.Json": "13.0.3",
"Nito.AsyncEx": "5.1.2",
"NJsonSchema.CodeGeneration.CSharp": "10.9.0",
"NLog": "5.4.0",
+ "NLog.Extensions.Logging": "5.3.11",
"NLog.Web.AspNetCore": "5.3.11",
+ "NSubstituteAutoSubstitute": "1.1.0",
+ "OneOf": "3.0.271",
"Otp.NET": "1.4.0",
"p4api.net": "2023.1.248.4623",
"Polly": "8.5.1",
- "Pomelo.EntityFrameworkCore.MySql": "8.0.2",
+ "Pomelo.EntityFrameworkCore.MySql": "8.0.3",
"RabbitMQ.Client": "6.8.1",
+ "RedLock.net": "2.3.2",
+ "Sentry.AspNetCore": "5.10.0",
+ "Sentry.Extensions.Logging": "5.10.0",
+ "Sentry.NLog": "5.10.0",
"SharpSvn": "1.14003.272",
"sqlite-net-pcl": "1.9.172",
"SSH.NET": "2025.0.0",
@@ -721,8 +771,11 @@
"Swashbuckle.AspNetCore.Filters": "8.0.2",
"Swashbuckle.AspNetCore.SwaggerUI": "7.2.0",
"System.IdentityModel.Tokens.Jwt": "8.9.0",
+ "System.IO.Hashing": "8.0.0",
+ "Ulid": "1.3.4",
"xunit": "2.9.3",
- "xunit.assert": "2.9.2",
+ "xunit.assert": "2.9.3",
+ "xunit.extensibility.core": "2.9.3",
"xunit.runner.visualstudio": "3.0.1",
"YamlDotNet": "16.3.0"
},
@@ -824,51 +877,6 @@
"version": "[1.3.2, )",
"versionCentrallyManaged": true
},
- "AutoMapper": {
- "target": "Package",
- "version": "[14.0.0, )",
- "versionCentrallyManaged": true
- },
- "AutoMapper.AspNetCore.OData.EFCore": {
- "target": "Package",
- "version": "[7.0.1, )",
- "versionCentrallyManaged": true
- },
- "AutoMapper.Collection": {
- "target": "Package",
- "version": "[11.0.0, )",
- "versionCentrallyManaged": true
- },
- "AutoMapper.Collection.EntityFrameworkCore": {
- "target": "Package",
- "version": "[11.0.0, )",
- "versionCentrallyManaged": true
- },
- "AutoMapper.Contrib.Autofac.DependencyInjection": {
- "target": "Package",
- "version": "[9.0.0, )",
- "versionCentrallyManaged": true
- },
- "AutoMapper.Data": {
- "target": "Package",
- "version": "[9.0.0, )",
- "versionCentrallyManaged": true
- },
- "AutoMapper.EF6": {
- "target": "Package",
- "version": "[3.0.1, )",
- "versionCentrallyManaged": true
- },
- "AutoMapper.Extensions.EnumMapping": {
- "target": "Package",
- "version": "[4.1.0, )",
- "versionCentrallyManaged": true
- },
- "AutoMapper.Extensions.ExpressionMapping": {
- "target": "Package",
- "version": "[8.0.0, )",
- "versionCentrallyManaged": true
- },
"Axion.ConcurrentHashSet": {
"target": "Package",
"version": "[1.0.0, )",
@@ -916,12 +924,12 @@
},
"Microsoft.Extensions.Configuration": {
"target": "Package",
- "version": "[9.0.4, )",
+ "version": "[8.0.0, )",
"versionCentrallyManaged": true
},
"Microsoft.Extensions.Options": {
"target": "Package",
- "version": "[9.0.4, )",
+ "version": "[8.0.2, )",
"versionCentrallyManaged": true
},
"MongoDB.Analyzer": {
@@ -1013,17 +1021,10 @@
"centralPackageVersions": {
"Asp.Versioning.Mvc": "8.1.0",
"Asp.Versioning.Mvc.ApiExplorer": "8.1.0",
+ "Aspire.Hosting.AppHost": "8.2.2",
"AspNetCore.Swagger.Fluent.Annotations": "1.0.4",
"AsyncStateMachine": "1.3.2",
- "AutoMapper": "14.0.0",
- "AutoMapper.AspNetCore.OData.EFCore": "7.0.1",
- "AutoMapper.Collection": "11.0.0",
- "AutoMapper.Collection.EntityFrameworkCore": "11.0.0",
- "AutoMapper.Contrib.Autofac.DependencyInjection": "9.0.0",
- "AutoMapper.Data": "9.0.0",
- "AutoMapper.EF6": "3.0.1",
- "AutoMapper.Extensions.EnumMapping": "4.1.0",
- "AutoMapper.Extensions.ExpressionMapping": "8.0.0",
+ "AutoMapper": "15.0.1",
"AWS.Logger.NLog": "3.3.4",
"AWSSDK.Core": "3.7.402.46",
"AWSSDK.DynamoDBv2": "3.7.407",
@@ -1039,6 +1040,7 @@
"CommunityToolkit.Diagnostics": "8.2.2",
"CommunityToolkit.Mvvm": "8.2.2",
"Costura.Fody": "5.7.0",
+ "coverlet.collector": "6.0.4",
"Csv": "2.0.93",
"DocumentFormat.OpenXml": "2.20.0",
"DotNet.MultiMap": "2.2.1",
@@ -1046,6 +1048,7 @@
"ExcelDataReader": "3.6.0",
"ExcelDataReader.DataSet": "3.6.0",
"ExcelNumberFormat": "1.1.0",
+ "FluentAssertions": "8.3.0",
"Google.Protobuf": "3.27.1",
"Grpc.AspNetCore": "2.63.0",
"Grpc.AspNetCore.Server.Reflection": "2.63.0",
@@ -1061,10 +1064,12 @@
"Microsoft.AspNetCore.OpenApi": "8.0.6",
"Microsoft.Data.Sqlite": "8.0.6",
"Microsoft.Diagnostics.NETCore.Client": "0.2.621003",
- "Microsoft.EntityFrameworkCore.Design": "8.0.2",
- "Microsoft.EntityFrameworkCore.Tools": "8.0.2",
+ "Microsoft.EntityFrameworkCore": "8.0.13",
+ "Microsoft.EntityFrameworkCore.Design": "8.0.13",
+ "Microsoft.EntityFrameworkCore.Relational": "8.0.13",
+ "Microsoft.EntityFrameworkCore.Tools": "8.0.13",
"Microsoft.Extensions.Caching.StackExchangeRedis": "8.0.6",
- "Microsoft.Extensions.Configuration": "9.0.4",
+ "Microsoft.Extensions.Configuration": "8.0.0",
"Microsoft.Extensions.Configuration.Abstractions": "8.0.0",
"Microsoft.Extensions.Configuration.UserSecrets": "8.0.0",
"Microsoft.Extensions.DependencyInjection": "8.0.0",
@@ -1073,8 +1078,8 @@
"Microsoft.Extensions.Hosting.Abstractions": "8.0.0",
"Microsoft.Extensions.Http": "8.0.0",
"Microsoft.Extensions.Logging": "8.0.0",
- "Microsoft.Extensions.Logging.Abstractions": "9.0.4",
- "Microsoft.Extensions.Options": "9.0.4",
+ "Microsoft.Extensions.Logging.Abstractions": "8.0.3",
+ "Microsoft.Extensions.Options": "8.0.2",
"Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0",
"Microsoft.NET.Test.Sdk": "17.12.0",
"Microsoft.OpenApi": "1.6.22",
@@ -1084,18 +1089,27 @@
"MongoDB.Driver": "3.3.0",
"MongoDB.Driver.Core": "2.30.0",
"Moq": "4.20.72",
+ "MSTest.TestAdapter": "3.8.3",
+ "MSTest.TestFramework": "3.8.3",
"MySqlConnector": "2.4.0",
"NeoSmart.AsyncLock": "3.2.1",
"Newtonsoft.Json": "13.0.3",
"Nito.AsyncEx": "5.1.2",
"NJsonSchema.CodeGeneration.CSharp": "10.9.0",
"NLog": "5.4.0",
+ "NLog.Extensions.Logging": "5.3.11",
"NLog.Web.AspNetCore": "5.3.11",
+ "NSubstituteAutoSubstitute": "1.1.0",
+ "OneOf": "3.0.271",
"Otp.NET": "1.4.0",
"p4api.net": "2023.1.248.4623",
"Polly": "8.5.1",
- "Pomelo.EntityFrameworkCore.MySql": "8.0.2",
+ "Pomelo.EntityFrameworkCore.MySql": "8.0.3",
"RabbitMQ.Client": "6.8.1",
+ "RedLock.net": "2.3.2",
+ "Sentry.AspNetCore": "5.10.0",
+ "Sentry.Extensions.Logging": "5.10.0",
+ "Sentry.NLog": "5.10.0",
"SharpSvn": "1.14003.272",
"sqlite-net-pcl": "1.9.172",
"SSH.NET": "2025.0.0",
@@ -1108,8 +1122,11 @@
"Swashbuckle.AspNetCore.Filters": "8.0.2",
"Swashbuckle.AspNetCore.SwaggerUI": "7.2.0",
"System.IdentityModel.Tokens.Jwt": "8.9.0",
+ "System.IO.Hashing": "8.0.0",
+ "Ulid": "1.3.4",
"xunit": "2.9.3",
- "xunit.assert": "2.9.2",
+ "xunit.assert": "2.9.3",
+ "xunit.extensibility.core": "2.9.3",
"xunit.runner.visualstudio": "3.0.1",
"YamlDotNet": "16.3.0"
},
@@ -1188,17 +1205,10 @@
"centralPackageVersions": {
"Asp.Versioning.Mvc": "8.1.0",
"Asp.Versioning.Mvc.ApiExplorer": "8.1.0",
+ "Aspire.Hosting.AppHost": "8.2.2",
"AspNetCore.Swagger.Fluent.Annotations": "1.0.4",
"AsyncStateMachine": "1.3.2",
- "AutoMapper": "14.0.0",
- "AutoMapper.AspNetCore.OData.EFCore": "7.0.1",
- "AutoMapper.Collection": "11.0.0",
- "AutoMapper.Collection.EntityFrameworkCore": "11.0.0",
- "AutoMapper.Contrib.Autofac.DependencyInjection": "9.0.0",
- "AutoMapper.Data": "9.0.0",
- "AutoMapper.EF6": "3.0.1",
- "AutoMapper.Extensions.EnumMapping": "4.1.0",
- "AutoMapper.Extensions.ExpressionMapping": "8.0.0",
+ "AutoMapper": "15.0.1",
"AWS.Logger.NLog": "3.3.4",
"AWSSDK.Core": "3.7.402.46",
"AWSSDK.DynamoDBv2": "3.7.407",
@@ -1214,6 +1224,7 @@
"CommunityToolkit.Diagnostics": "8.2.2",
"CommunityToolkit.Mvvm": "8.2.2",
"Costura.Fody": "5.7.0",
+ "coverlet.collector": "6.0.4",
"Csv": "2.0.93",
"DocumentFormat.OpenXml": "2.20.0",
"DotNet.MultiMap": "2.2.1",
@@ -1221,6 +1232,7 @@
"ExcelDataReader": "3.6.0",
"ExcelDataReader.DataSet": "3.6.0",
"ExcelNumberFormat": "1.1.0",
+ "FluentAssertions": "8.3.0",
"Google.Protobuf": "3.27.1",
"Grpc.AspNetCore": "2.63.0",
"Grpc.AspNetCore.Server.Reflection": "2.63.0",
@@ -1236,10 +1248,12 @@
"Microsoft.AspNetCore.OpenApi": "8.0.6",
"Microsoft.Data.Sqlite": "8.0.6",
"Microsoft.Diagnostics.NETCore.Client": "0.2.621003",
- "Microsoft.EntityFrameworkCore.Design": "8.0.2",
- "Microsoft.EntityFrameworkCore.Tools": "8.0.2",
+ "Microsoft.EntityFrameworkCore": "8.0.13",
+ "Microsoft.EntityFrameworkCore.Design": "8.0.13",
+ "Microsoft.EntityFrameworkCore.Relational": "8.0.13",
+ "Microsoft.EntityFrameworkCore.Tools": "8.0.13",
"Microsoft.Extensions.Caching.StackExchangeRedis": "8.0.6",
- "Microsoft.Extensions.Configuration": "9.0.4",
+ "Microsoft.Extensions.Configuration": "8.0.0",
"Microsoft.Extensions.Configuration.Abstractions": "8.0.0",
"Microsoft.Extensions.Configuration.UserSecrets": "8.0.0",
"Microsoft.Extensions.DependencyInjection": "8.0.0",
@@ -1248,8 +1262,8 @@
"Microsoft.Extensions.Hosting.Abstractions": "8.0.0",
"Microsoft.Extensions.Http": "8.0.0",
"Microsoft.Extensions.Logging": "8.0.0",
- "Microsoft.Extensions.Logging.Abstractions": "9.0.4",
- "Microsoft.Extensions.Options": "9.0.4",
+ "Microsoft.Extensions.Logging.Abstractions": "8.0.3",
+ "Microsoft.Extensions.Options": "8.0.2",
"Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0",
"Microsoft.NET.Test.Sdk": "17.12.0",
"Microsoft.OpenApi": "1.6.22",
@@ -1259,18 +1273,27 @@
"MongoDB.Driver": "3.3.0",
"MongoDB.Driver.Core": "2.30.0",
"Moq": "4.20.72",
+ "MSTest.TestAdapter": "3.8.3",
+ "MSTest.TestFramework": "3.8.3",
"MySqlConnector": "2.4.0",
"NeoSmart.AsyncLock": "3.2.1",
"Newtonsoft.Json": "13.0.3",
"Nito.AsyncEx": "5.1.2",
"NJsonSchema.CodeGeneration.CSharp": "10.9.0",
"NLog": "5.4.0",
+ "NLog.Extensions.Logging": "5.3.11",
"NLog.Web.AspNetCore": "5.3.11",
+ "NSubstituteAutoSubstitute": "1.1.0",
+ "OneOf": "3.0.271",
"Otp.NET": "1.4.0",
"p4api.net": "2023.1.248.4623",
"Polly": "8.5.1",
- "Pomelo.EntityFrameworkCore.MySql": "8.0.2",
+ "Pomelo.EntityFrameworkCore.MySql": "8.0.3",
"RabbitMQ.Client": "6.8.1",
+ "RedLock.net": "2.3.2",
+ "Sentry.AspNetCore": "5.10.0",
+ "Sentry.Extensions.Logging": "5.10.0",
+ "Sentry.NLog": "5.10.0",
"SharpSvn": "1.14003.272",
"sqlite-net-pcl": "1.9.172",
"SSH.NET": "2025.0.0",
@@ -1283,8 +1306,11 @@
"Swashbuckle.AspNetCore.Filters": "8.0.2",
"Swashbuckle.AspNetCore.SwaggerUI": "7.2.0",
"System.IdentityModel.Tokens.Jwt": "8.9.0",
+ "System.IO.Hashing": "8.0.0",
+ "Ulid": "1.3.4",
"xunit": "2.9.3",
- "xunit.assert": "2.9.2",
+ "xunit.assert": "2.9.3",
+ "xunit.extensibility.core": "2.9.3",
"xunit.runner.visualstudio": "3.0.1",
"YamlDotNet": "16.3.0"
},
@@ -1377,17 +1403,10 @@
"centralPackageVersions": {
"Asp.Versioning.Mvc": "8.1.0",
"Asp.Versioning.Mvc.ApiExplorer": "8.1.0",
+ "Aspire.Hosting.AppHost": "8.2.2",
"AspNetCore.Swagger.Fluent.Annotations": "1.0.4",
"AsyncStateMachine": "1.3.2",
- "AutoMapper": "14.0.0",
- "AutoMapper.AspNetCore.OData.EFCore": "7.0.1",
- "AutoMapper.Collection": "11.0.0",
- "AutoMapper.Collection.EntityFrameworkCore": "11.0.0",
- "AutoMapper.Contrib.Autofac.DependencyInjection": "9.0.0",
- "AutoMapper.Data": "9.0.0",
- "AutoMapper.EF6": "3.0.1",
- "AutoMapper.Extensions.EnumMapping": "4.1.0",
- "AutoMapper.Extensions.ExpressionMapping": "8.0.0",
+ "AutoMapper": "15.0.1",
"AWS.Logger.NLog": "3.3.4",
"AWSSDK.Core": "3.7.402.46",
"AWSSDK.DynamoDBv2": "3.7.407",
@@ -1403,6 +1422,7 @@
"CommunityToolkit.Diagnostics": "8.2.2",
"CommunityToolkit.Mvvm": "8.2.2",
"Costura.Fody": "5.7.0",
+ "coverlet.collector": "6.0.4",
"Csv": "2.0.93",
"DocumentFormat.OpenXml": "2.20.0",
"DotNet.MultiMap": "2.2.1",
@@ -1410,6 +1430,7 @@
"ExcelDataReader": "3.6.0",
"ExcelDataReader.DataSet": "3.6.0",
"ExcelNumberFormat": "1.1.0",
+ "FluentAssertions": "8.3.0",
"Google.Protobuf": "3.27.1",
"Grpc.AspNetCore": "2.63.0",
"Grpc.AspNetCore.Server.Reflection": "2.63.0",
@@ -1425,10 +1446,12 @@
"Microsoft.AspNetCore.OpenApi": "8.0.6",
"Microsoft.Data.Sqlite": "8.0.6",
"Microsoft.Diagnostics.NETCore.Client": "0.2.621003",
- "Microsoft.EntityFrameworkCore.Design": "8.0.2",
- "Microsoft.EntityFrameworkCore.Tools": "8.0.2",
+ "Microsoft.EntityFrameworkCore": "8.0.13",
+ "Microsoft.EntityFrameworkCore.Design": "8.0.13",
+ "Microsoft.EntityFrameworkCore.Relational": "8.0.13",
+ "Microsoft.EntityFrameworkCore.Tools": "8.0.13",
"Microsoft.Extensions.Caching.StackExchangeRedis": "8.0.6",
- "Microsoft.Extensions.Configuration": "9.0.4",
+ "Microsoft.Extensions.Configuration": "8.0.0",
"Microsoft.Extensions.Configuration.Abstractions": "8.0.0",
"Microsoft.Extensions.Configuration.UserSecrets": "8.0.0",
"Microsoft.Extensions.DependencyInjection": "8.0.0",
@@ -1437,8 +1460,8 @@
"Microsoft.Extensions.Hosting.Abstractions": "8.0.0",
"Microsoft.Extensions.Http": "8.0.0",
"Microsoft.Extensions.Logging": "8.0.0",
- "Microsoft.Extensions.Logging.Abstractions": "9.0.4",
- "Microsoft.Extensions.Options": "9.0.4",
+ "Microsoft.Extensions.Logging.Abstractions": "8.0.3",
+ "Microsoft.Extensions.Options": "8.0.2",
"Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0",
"Microsoft.NET.Test.Sdk": "17.12.0",
"Microsoft.OpenApi": "1.6.22",
@@ -1448,18 +1471,27 @@
"MongoDB.Driver": "3.3.0",
"MongoDB.Driver.Core": "2.30.0",
"Moq": "4.20.72",
+ "MSTest.TestAdapter": "3.8.3",
+ "MSTest.TestFramework": "3.8.3",
"MySqlConnector": "2.4.0",
"NeoSmart.AsyncLock": "3.2.1",
"Newtonsoft.Json": "13.0.3",
"Nito.AsyncEx": "5.1.2",
"NJsonSchema.CodeGeneration.CSharp": "10.9.0",
"NLog": "5.4.0",
+ "NLog.Extensions.Logging": "5.3.11",
"NLog.Web.AspNetCore": "5.3.11",
+ "NSubstituteAutoSubstitute": "1.1.0",
+ "OneOf": "3.0.271",
"Otp.NET": "1.4.0",
"p4api.net": "2023.1.248.4623",
"Polly": "8.5.1",
- "Pomelo.EntityFrameworkCore.MySql": "8.0.2",
+ "Pomelo.EntityFrameworkCore.MySql": "8.0.3",
"RabbitMQ.Client": "6.8.1",
+ "RedLock.net": "2.3.2",
+ "Sentry.AspNetCore": "5.10.0",
+ "Sentry.Extensions.Logging": "5.10.0",
+ "Sentry.NLog": "5.10.0",
"SharpSvn": "1.14003.272",
"sqlite-net-pcl": "1.9.172",
"SSH.NET": "2025.0.0",
@@ -1472,8 +1504,11 @@
"Swashbuckle.AspNetCore.Filters": "8.0.2",
"Swashbuckle.AspNetCore.SwaggerUI": "7.2.0",
"System.IdentityModel.Tokens.Jwt": "8.9.0",
+ "System.IO.Hashing": "8.0.0",
+ "Ulid": "1.3.4",
"xunit": "2.9.3",
- "xunit.assert": "2.9.2",
+ "xunit.assert": "2.9.3",
+ "xunit.extensibility.core": "2.9.3",
"xunit.runner.visualstudio": "3.0.1",
"YamlDotNet": "16.3.0"
},
@@ -1556,17 +1591,10 @@
"centralPackageVersions": {
"Asp.Versioning.Mvc": "8.1.0",
"Asp.Versioning.Mvc.ApiExplorer": "8.1.0",
+ "Aspire.Hosting.AppHost": "8.2.2",
"AspNetCore.Swagger.Fluent.Annotations": "1.0.4",
"AsyncStateMachine": "1.3.2",
- "AutoMapper": "14.0.0",
- "AutoMapper.AspNetCore.OData.EFCore": "7.0.1",
- "AutoMapper.Collection": "11.0.0",
- "AutoMapper.Collection.EntityFrameworkCore": "11.0.0",
- "AutoMapper.Contrib.Autofac.DependencyInjection": "9.0.0",
- "AutoMapper.Data": "9.0.0",
- "AutoMapper.EF6": "3.0.1",
- "AutoMapper.Extensions.EnumMapping": "4.1.0",
- "AutoMapper.Extensions.ExpressionMapping": "8.0.0",
+ "AutoMapper": "15.0.1",
"AWS.Logger.NLog": "3.3.4",
"AWSSDK.Core": "3.7.402.46",
"AWSSDK.DynamoDBv2": "3.7.407",
@@ -1582,6 +1610,7 @@
"CommunityToolkit.Diagnostics": "8.2.2",
"CommunityToolkit.Mvvm": "8.2.2",
"Costura.Fody": "5.7.0",
+ "coverlet.collector": "6.0.4",
"Csv": "2.0.93",
"DocumentFormat.OpenXml": "2.20.0",
"DotNet.MultiMap": "2.2.1",
@@ -1589,6 +1618,7 @@
"ExcelDataReader": "3.6.0",
"ExcelDataReader.DataSet": "3.6.0",
"ExcelNumberFormat": "1.1.0",
+ "FluentAssertions": "8.3.0",
"Google.Protobuf": "3.27.1",
"Grpc.AspNetCore": "2.63.0",
"Grpc.AspNetCore.Server.Reflection": "2.63.0",
@@ -1604,10 +1634,12 @@
"Microsoft.AspNetCore.OpenApi": "8.0.6",
"Microsoft.Data.Sqlite": "8.0.6",
"Microsoft.Diagnostics.NETCore.Client": "0.2.621003",
- "Microsoft.EntityFrameworkCore.Design": "8.0.2",
- "Microsoft.EntityFrameworkCore.Tools": "8.0.2",
+ "Microsoft.EntityFrameworkCore": "8.0.13",
+ "Microsoft.EntityFrameworkCore.Design": "8.0.13",
+ "Microsoft.EntityFrameworkCore.Relational": "8.0.13",
+ "Microsoft.EntityFrameworkCore.Tools": "8.0.13",
"Microsoft.Extensions.Caching.StackExchangeRedis": "8.0.6",
- "Microsoft.Extensions.Configuration": "9.0.4",
+ "Microsoft.Extensions.Configuration": "8.0.0",
"Microsoft.Extensions.Configuration.Abstractions": "8.0.0",
"Microsoft.Extensions.Configuration.UserSecrets": "8.0.0",
"Microsoft.Extensions.DependencyInjection": "8.0.0",
@@ -1616,8 +1648,8 @@
"Microsoft.Extensions.Hosting.Abstractions": "8.0.0",
"Microsoft.Extensions.Http": "8.0.0",
"Microsoft.Extensions.Logging": "8.0.0",
- "Microsoft.Extensions.Logging.Abstractions": "9.0.4",
- "Microsoft.Extensions.Options": "9.0.4",
+ "Microsoft.Extensions.Logging.Abstractions": "8.0.3",
+ "Microsoft.Extensions.Options": "8.0.2",
"Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0",
"Microsoft.NET.Test.Sdk": "17.12.0",
"Microsoft.OpenApi": "1.6.22",
@@ -1627,18 +1659,27 @@
"MongoDB.Driver": "3.3.0",
"MongoDB.Driver.Core": "2.30.0",
"Moq": "4.20.72",
+ "MSTest.TestAdapter": "3.8.3",
+ "MSTest.TestFramework": "3.8.3",
"MySqlConnector": "2.4.0",
"NeoSmart.AsyncLock": "3.2.1",
"Newtonsoft.Json": "13.0.3",
"Nito.AsyncEx": "5.1.2",
"NJsonSchema.CodeGeneration.CSharp": "10.9.0",
"NLog": "5.4.0",
+ "NLog.Extensions.Logging": "5.3.11",
"NLog.Web.AspNetCore": "5.3.11",
+ "NSubstituteAutoSubstitute": "1.1.0",
+ "OneOf": "3.0.271",
"Otp.NET": "1.4.0",
"p4api.net": "2023.1.248.4623",
"Polly": "8.5.1",
- "Pomelo.EntityFrameworkCore.MySql": "8.0.2",
+ "Pomelo.EntityFrameworkCore.MySql": "8.0.3",
"RabbitMQ.Client": "6.8.1",
+ "RedLock.net": "2.3.2",
+ "Sentry.AspNetCore": "5.10.0",
+ "Sentry.Extensions.Logging": "5.10.0",
+ "Sentry.NLog": "5.10.0",
"SharpSvn": "1.14003.272",
"sqlite-net-pcl": "1.9.172",
"SSH.NET": "2025.0.0",
@@ -1651,8 +1692,11 @@
"Swashbuckle.AspNetCore.Filters": "8.0.2",
"Swashbuckle.AspNetCore.SwaggerUI": "7.2.0",
"System.IdentityModel.Tokens.Jwt": "8.9.0",
+ "System.IO.Hashing": "8.0.0",
+ "Ulid": "1.3.4",
"xunit": "2.9.3",
- "xunit.assert": "2.9.2",
+ "xunit.assert": "2.9.3",
+ "xunit.extensibility.core": "2.9.3",
"xunit.runner.visualstudio": "3.0.1",
"YamlDotNet": "16.3.0"
},
@@ -1748,17 +1792,10 @@
"centralPackageVersions": {
"Asp.Versioning.Mvc": "8.1.0",
"Asp.Versioning.Mvc.ApiExplorer": "8.1.0",
+ "Aspire.Hosting.AppHost": "8.2.2",
"AspNetCore.Swagger.Fluent.Annotations": "1.0.4",
"AsyncStateMachine": "1.3.2",
- "AutoMapper": "14.0.0",
- "AutoMapper.AspNetCore.OData.EFCore": "7.0.1",
- "AutoMapper.Collection": "11.0.0",
- "AutoMapper.Collection.EntityFrameworkCore": "11.0.0",
- "AutoMapper.Contrib.Autofac.DependencyInjection": "9.0.0",
- "AutoMapper.Data": "9.0.0",
- "AutoMapper.EF6": "3.0.1",
- "AutoMapper.Extensions.EnumMapping": "4.1.0",
- "AutoMapper.Extensions.ExpressionMapping": "8.0.0",
+ "AutoMapper": "15.0.1",
"AWS.Logger.NLog": "3.3.4",
"AWSSDK.Core": "3.7.402.46",
"AWSSDK.DynamoDBv2": "3.7.407",
@@ -1774,6 +1811,7 @@
"CommunityToolkit.Diagnostics": "8.2.2",
"CommunityToolkit.Mvvm": "8.2.2",
"Costura.Fody": "5.7.0",
+ "coverlet.collector": "6.0.4",
"Csv": "2.0.93",
"DocumentFormat.OpenXml": "2.20.0",
"DotNet.MultiMap": "2.2.1",
@@ -1781,6 +1819,7 @@
"ExcelDataReader": "3.6.0",
"ExcelDataReader.DataSet": "3.6.0",
"ExcelNumberFormat": "1.1.0",
+ "FluentAssertions": "8.3.0",
"Google.Protobuf": "3.27.1",
"Grpc.AspNetCore": "2.63.0",
"Grpc.AspNetCore.Server.Reflection": "2.63.0",
@@ -1796,10 +1835,12 @@
"Microsoft.AspNetCore.OpenApi": "8.0.6",
"Microsoft.Data.Sqlite": "8.0.6",
"Microsoft.Diagnostics.NETCore.Client": "0.2.621003",
- "Microsoft.EntityFrameworkCore.Design": "8.0.2",
- "Microsoft.EntityFrameworkCore.Tools": "8.0.2",
+ "Microsoft.EntityFrameworkCore": "8.0.13",
+ "Microsoft.EntityFrameworkCore.Design": "8.0.13",
+ "Microsoft.EntityFrameworkCore.Relational": "8.0.13",
+ "Microsoft.EntityFrameworkCore.Tools": "8.0.13",
"Microsoft.Extensions.Caching.StackExchangeRedis": "8.0.6",
- "Microsoft.Extensions.Configuration": "9.0.4",
+ "Microsoft.Extensions.Configuration": "8.0.0",
"Microsoft.Extensions.Configuration.Abstractions": "8.0.0",
"Microsoft.Extensions.Configuration.UserSecrets": "8.0.0",
"Microsoft.Extensions.DependencyInjection": "8.0.0",
@@ -1808,8 +1849,8 @@
"Microsoft.Extensions.Hosting.Abstractions": "8.0.0",
"Microsoft.Extensions.Http": "8.0.0",
"Microsoft.Extensions.Logging": "8.0.0",
- "Microsoft.Extensions.Logging.Abstractions": "9.0.4",
- "Microsoft.Extensions.Options": "9.0.4",
+ "Microsoft.Extensions.Logging.Abstractions": "8.0.3",
+ "Microsoft.Extensions.Options": "8.0.2",
"Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0",
"Microsoft.NET.Test.Sdk": "17.12.0",
"Microsoft.OpenApi": "1.6.22",
@@ -1819,18 +1860,27 @@
"MongoDB.Driver": "3.3.0",
"MongoDB.Driver.Core": "2.30.0",
"Moq": "4.20.72",
+ "MSTest.TestAdapter": "3.8.3",
+ "MSTest.TestFramework": "3.8.3",
"MySqlConnector": "2.4.0",
"NeoSmart.AsyncLock": "3.2.1",
"Newtonsoft.Json": "13.0.3",
"Nito.AsyncEx": "5.1.2",
"NJsonSchema.CodeGeneration.CSharp": "10.9.0",
"NLog": "5.4.0",
+ "NLog.Extensions.Logging": "5.3.11",
"NLog.Web.AspNetCore": "5.3.11",
+ "NSubstituteAutoSubstitute": "1.1.0",
+ "OneOf": "3.0.271",
"Otp.NET": "1.4.0",
"p4api.net": "2023.1.248.4623",
"Polly": "8.5.1",
- "Pomelo.EntityFrameworkCore.MySql": "8.0.2",
+ "Pomelo.EntityFrameworkCore.MySql": "8.0.3",
"RabbitMQ.Client": "6.8.1",
+ "RedLock.net": "2.3.2",
+ "Sentry.AspNetCore": "5.10.0",
+ "Sentry.Extensions.Logging": "5.10.0",
+ "Sentry.NLog": "5.10.0",
"SharpSvn": "1.14003.272",
"sqlite-net-pcl": "1.9.172",
"SSH.NET": "2025.0.0",
@@ -1843,8 +1893,11 @@
"Swashbuckle.AspNetCore.Filters": "8.0.2",
"Swashbuckle.AspNetCore.SwaggerUI": "7.2.0",
"System.IdentityModel.Tokens.Jwt": "8.9.0",
+ "System.IO.Hashing": "8.0.0",
+ "Ulid": "1.3.4",
"xunit": "2.9.3",
- "xunit.assert": "2.9.2",
+ "xunit.assert": "2.9.3",
+ "xunit.extensibility.core": "2.9.3",
"xunit.runner.visualstudio": "3.0.1",
"YamlDotNet": "16.3.0"
},
diff --git a/BrokerApiCore/obj/BrokerApiCore.csproj.nuget.g.props b/BrokerApiCore/obj/BrokerApiCore.csproj.nuget.g.props
index 5f34edd..f93526f 100644
--- a/BrokerApiCore/obj/BrokerApiCore.csproj.nuget.g.props
+++ b/BrokerApiCore/obj/BrokerApiCore.csproj.nuget.g.props
@@ -14,13 +14,11 @@
-
-
-
+
+
C:\Users\user\.nuget\packages\mongodb.analyzer\1.5.0
- C:\Users\user\.nuget\packages\entityframework\6.5.1
C:\Users\user\.nuget\packages\awssdk.core\3.7.402.46
C:\Users\user\.nuget\packages\awssdk.securitytoken\3.7.401.89
C:\Users\user\.nuget\packages\awssdk.s3\3.7.416.15
@@ -29,6 +27,6 @@
C:\Users\user\.nuget\packages\awssdk.cloudwatchlogs\3.7.305.15
C:\Users\user\.nuget\packages\awssdk.ec2\3.7.330.4
C:\Users\user\.nuget\packages\microsoft.codeanalysis.analyzers\3.3.3
- C:\Users\user\.nuget\packages\microsoft.entityframeworkcore.tools\8.0.2
+ C:\Users\user\.nuget\packages\microsoft.entityframeworkcore.tools\8.0.13
\ No newline at end of file
diff --git a/BrokerApiCore/obj/BrokerApiCore.csproj.nuget.g.targets b/BrokerApiCore/obj/BrokerApiCore.csproj.nuget.g.targets
index 81dbdb8..6988ff0 100644
--- a/BrokerApiCore/obj/BrokerApiCore.csproj.nuget.g.targets
+++ b/BrokerApiCore/obj/BrokerApiCore.csproj.nuget.g.targets
@@ -3,9 +3,8 @@
-
-
-
+
+
\ No newline at end of file
diff --git a/BrokerApiCore/obj/Debug/BrokerApiCore.assets.cache b/BrokerApiCore/obj/Debug/BrokerApiCore.assets.cache
index 34c90eb..0240c32 100644
Binary files a/BrokerApiCore/obj/Debug/BrokerApiCore.assets.cache and b/BrokerApiCore/obj/Debug/BrokerApiCore.assets.cache differ
diff --git a/BrokerApiCore/obj/Debug/BrokerApiCore.csproj.AssemblyReference.cache b/BrokerApiCore/obj/Debug/BrokerApiCore.csproj.AssemblyReference.cache
index e0e4dd4..4269240 100644
Binary files a/BrokerApiCore/obj/Debug/BrokerApiCore.csproj.AssemblyReference.cache and b/BrokerApiCore/obj/Debug/BrokerApiCore.csproj.AssemblyReference.cache differ
diff --git a/BrokerApiCore/obj/project.assets.json b/BrokerApiCore/obj/project.assets.json
index 4e3dc8f..cfc2618 100644
--- a/BrokerApiCore/obj/project.assets.json
+++ b/BrokerApiCore/obj/project.assets.json
@@ -15,161 +15,6 @@
"lib/net7.0/AsyncStateMachine.dll": {}
}
},
- "Autofac/8.2.0": {
- "type": "package",
- "dependencies": {
- "System.Diagnostics.DiagnosticSource": "8.0.1"
- },
- "compile": {
- "lib/net8.0/Autofac.dll": {
- "related": ".xml"
- }
- },
- "runtime": {
- "lib/net8.0/Autofac.dll": {
- "related": ".xml"
- }
- }
- },
- "AutoMapper/14.0.0": {
- "type": "package",
- "dependencies": {
- "Microsoft.Extensions.Options": "8.0.0"
- },
- "compile": {
- "lib/net8.0/AutoMapper.dll": {
- "related": ".xml"
- }
- },
- "runtime": {
- "lib/net8.0/AutoMapper.dll": {
- "related": ".xml"
- }
- }
- },
- "AutoMapper.AspNetCore.OData.EFCore/7.0.1": {
- "type": "package",
- "dependencies": {
- "AutoMapper.Extensions.ExpressionMapping": "[8.0.0, 9.0.0)",
- "LogicBuilder.Expressions.Utils": "7.0.0",
- "Microsoft.AspNetCore.OData": "9.1.1",
- "Microsoft.EntityFrameworkCore": "8.0.11"
- },
- "compile": {
- "lib/net8.0/AutoMapper.AspNetCore.OData.EFCore.dll": {}
- },
- "runtime": {
- "lib/net8.0/AutoMapper.AspNetCore.OData.EFCore.dll": {}
- },
- "frameworkReferences": [
- "Microsoft.AspNetCore.App"
- ]
- },
- "AutoMapper.Collection/11.0.0": {
- "type": "package",
- "dependencies": {
- "AutoMapper": "[14.0.0, 15.0.0)"
- },
- "compile": {
- "lib/net8.0/AutoMapper.Collection.dll": {}
- },
- "runtime": {
- "lib/net8.0/AutoMapper.Collection.dll": {}
- }
- },
- "AutoMapper.Collection.EntityFrameworkCore/11.0.0": {
- "type": "package",
- "dependencies": {
- "AutoMapper.Collection": "[11.0.0, 12.0.0)",
- "AutoMapper.Extensions.ExpressionMapping": "[8.0.0, 9.0.0)",
- "Microsoft.EntityFrameworkCore": "9.0.2"
- },
- "compile": {
- "lib/net8.0/AutoMapper.Collection.EntityFrameworkCore.dll": {}
- },
- "runtime": {
- "lib/net8.0/AutoMapper.Collection.EntityFrameworkCore.dll": {}
- }
- },
- "AutoMapper.Contrib.Autofac.DependencyInjection/9.0.0": {
- "type": "package",
- "dependencies": {
- "AutoMapper": "14.0.0",
- "Autofac": "8.2.0"
- },
- "compile": {
- "lib/net8.0/AutoMapper.Contrib.Autofac.DependencyInjection.dll": {
- "related": ".pdb"
- }
- },
- "runtime": {
- "lib/net8.0/AutoMapper.Contrib.Autofac.DependencyInjection.dll": {
- "related": ".pdb"
- }
- }
- },
- "AutoMapper.Data/9.0.0": {
- "type": "package",
- "dependencies": {
- "AutoMapper": "[14.0.0, 15.0.0)"
- },
- "compile": {
- "lib/net8.0/AutoMapper.Data.dll": {
- "related": ".xml"
- }
- },
- "runtime": {
- "lib/net8.0/AutoMapper.Data.dll": {
- "related": ".xml"
- }
- }
- },
- "AutoMapper.EF6/3.0.1": {
- "type": "package",
- "dependencies": {
- "AutoMapper": "10.1.1",
- "DelegateDecompiler.EntityFramework": "0.34.0",
- "EntityFramework": "6.5.1"
- },
- "compile": {
- "lib/netstandard2.1/AutoMapper.EF6.dll": {}
- },
- "runtime": {
- "lib/netstandard2.1/AutoMapper.EF6.dll": {}
- }
- },
- "AutoMapper.Extensions.EnumMapping/4.1.0": {
- "type": "package",
- "dependencies": {
- "AutoMapper": "[14.0.0, 15.0.0)"
- },
- "compile": {
- "lib/net8.0/AutoMapper.Extensions.EnumMapping.dll": {
- "related": ".xml"
- }
- },
- "runtime": {
- "lib/net8.0/AutoMapper.Extensions.EnumMapping.dll": {
- "related": ".xml"
- }
- }
- },
- "AutoMapper.Extensions.ExpressionMapping/8.0.0": {
- "type": "package",
- "dependencies": {
- "AutoMapper": "[14.0.0, 15.0.0)"
- },
- "compile": {
- "lib/net8.0/AutoMapper.Extensions.ExpressionMapping.dll": {
- "related": ".xml"
- }
- },
- "runtime": {
- "lib/net8.0/AutoMapper.Extensions.ExpressionMapping.dll": {
- "related": ".xml"
- }
- }
- },
"AWS.Logger.Core/3.3.3": {
"type": "package",
"dependencies": {
@@ -364,31 +209,6 @@
}
}
},
- "DelegateDecompiler/0.34.0": {
- "type": "package",
- "dependencies": {
- "Mono.Reflection": "2.0.0"
- },
- "compile": {
- "lib/netstandard2.1/DelegateDecompiler.dll": {}
- },
- "runtime": {
- "lib/netstandard2.1/DelegateDecompiler.dll": {}
- }
- },
- "DelegateDecompiler.EntityFramework/0.34.0": {
- "type": "package",
- "dependencies": {
- "DelegateDecompiler": "0.34.0",
- "EntityFramework": "6.3.0"
- },
- "compile": {
- "lib/netstandard2.1/DelegateDecompiler.EntityFramework.dll": {}
- },
- "runtime": {
- "lib/netstandard2.1/DelegateDecompiler.EntityFramework.dll": {}
- }
- },
"DnsClient/1.6.1": {
"type": "package",
"dependencies": {
@@ -427,36 +247,6 @@
"lib/netcoreapp2.0/DumpExtensions.dll": {}
}
},
- "EntityFramework/6.5.1": {
- "type": "package",
- "dependencies": {
- "Microsoft.CSharp": "4.7.0",
- "System.CodeDom": "6.0.0",
- "System.ComponentModel.Annotations": "5.0.0",
- "System.Configuration.ConfigurationManager": "6.0.1",
- "System.Data.SqlClient": "4.8.6"
- },
- "compile": {
- "lib/netstandard2.1/EntityFramework.SqlServer.dll": {
- "related": ".xml"
- },
- "lib/netstandard2.1/EntityFramework.dll": {
- "related": ".SqlServer.xml;.xml"
- }
- },
- "runtime": {
- "lib/netstandard2.1/EntityFramework.SqlServer.dll": {
- "related": ".xml"
- },
- "lib/netstandard2.1/EntityFramework.dll": {
- "related": ".SqlServer.xml;.xml"
- }
- },
- "build": {
- "buildTransitive/net6.0/EntityFramework.props": {},
- "buildTransitive/net6.0/EntityFramework.targets": {}
- }
- },
"Google.Protobuf/3.27.1": {
"type": "package",
"compile": {
@@ -653,29 +443,6 @@
}
}
},
- "LogicBuilder.Expressions.Utils/7.0.0": {
- "type": "package",
- "dependencies": {
- "LogicBuilder.Structures": "7.0.0",
- "Microsoft.CSharp": "4.7.0",
- "System.Reflection.Emit": "4.7.0"
- },
- "compile": {
- "lib/netstandard2.0/LogicBuilder.Expressions.Utils.dll": {}
- },
- "runtime": {
- "lib/netstandard2.0/LogicBuilder.Expressions.Utils.dll": {}
- }
- },
- "LogicBuilder.Structures/7.0.0": {
- "type": "package",
- "compile": {
- "lib/netstandard2.0/LogicBuilder.Structures.dll": {}
- },
- "runtime": {
- "lib/netstandard2.0/LogicBuilder.Structures.dll": {}
- }
- },
"Microsoft.AspNetCore.Authentication.JwtBearer/8.0.2": {
"type": "package",
"dependencies": {
@@ -695,29 +462,10 @@
"Microsoft.AspNetCore.App"
]
},
- "Microsoft.AspNetCore.OData/9.1.1": {
- "type": "package",
- "dependencies": {
- "Microsoft.OData.Core": "[8.2.2, 9.0.0)",
- "Microsoft.OData.Edm": "[8.2.2, 9.0.0)",
- "Microsoft.OData.ModelBuilder": "[2.0.0, 3.0.0)",
- "Microsoft.Spatial": "[8.2.2, 9.0.0)"
- },
- "compile": {
- "lib/net8.0/Microsoft.AspNetCore.OData.dll": {
- "related": ".xml"
- }
- },
- "runtime": {
- "lib/net8.0/Microsoft.AspNetCore.OData.dll": {
- "related": ".xml"
- }
- }
- },
- "Microsoft.Bcl.AsyncInterfaces/8.0.0": {
+ "Microsoft.Bcl.AsyncInterfaces/6.0.0": {
"type": "package",
"compile": {
- "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll": {
+ "lib/netstandard2.1/_._": {
"related": ".xml"
}
},
@@ -989,15 +737,6 @@
}
}
},
- "Microsoft.CSharp/4.7.0": {
- "type": "package",
- "compile": {
- "ref/netcoreapp2.0/_._": {}
- },
- "runtime": {
- "lib/netcoreapp2.0/_._": {}
- }
- },
"Microsoft.Diagnostics.NETCore.Client/0.2.621003": {
"type": "package",
"dependencies": {
@@ -1014,13 +753,13 @@
}
}
},
- "Microsoft.EntityFrameworkCore/9.0.2": {
+ "Microsoft.EntityFrameworkCore/8.0.13": {
"type": "package",
"dependencies": {
- "Microsoft.EntityFrameworkCore.Abstractions": "9.0.2",
- "Microsoft.EntityFrameworkCore.Analyzers": "9.0.2",
- "Microsoft.Extensions.Caching.Memory": "9.0.2",
- "Microsoft.Extensions.Logging": "9.0.2"
+ "Microsoft.EntityFrameworkCore.Abstractions": "8.0.13",
+ "Microsoft.EntityFrameworkCore.Analyzers": "8.0.13",
+ "Microsoft.Extensions.Caching.Memory": "8.0.1",
+ "Microsoft.Extensions.Logging": "8.0.1"
},
"compile": {
"lib/net8.0/Microsoft.EntityFrameworkCore.dll": {
@@ -1036,7 +775,7 @@
"buildTransitive/net8.0/Microsoft.EntityFrameworkCore.props": {}
}
},
- "Microsoft.EntityFrameworkCore.Abstractions/9.0.2": {
+ "Microsoft.EntityFrameworkCore.Abstractions/8.0.13": {
"type": "package",
"compile": {
"lib/net8.0/Microsoft.EntityFrameworkCore.Abstractions.dll": {
@@ -1049,16 +788,22 @@
}
}
},
- "Microsoft.EntityFrameworkCore.Analyzers/9.0.2": {
- "type": "package"
+ "Microsoft.EntityFrameworkCore.Analyzers/8.0.13": {
+ "type": "package",
+ "compile": {
+ "lib/netstandard2.0/_._": {}
+ },
+ "runtime": {
+ "lib/netstandard2.0/_._": {}
+ }
},
- "Microsoft.EntityFrameworkCore.Design/8.0.2": {
+ "Microsoft.EntityFrameworkCore.Design/8.0.13": {
"type": "package",
"dependencies": {
"Humanizer.Core": "2.14.1",
"Microsoft.CodeAnalysis.CSharp.Workspaces": "4.5.0",
- "Microsoft.EntityFrameworkCore.Relational": "8.0.2",
- "Microsoft.Extensions.DependencyModel": "8.0.0",
+ "Microsoft.EntityFrameworkCore.Relational": "8.0.13",
+ "Microsoft.Extensions.DependencyModel": "8.0.2",
"Mono.TextTemplating": "2.2.1"
},
"compile": {
@@ -1075,10 +820,10 @@
"build/net8.0/Microsoft.EntityFrameworkCore.Design.props": {}
}
},
- "Microsoft.EntityFrameworkCore.Relational/8.0.2": {
+ "Microsoft.EntityFrameworkCore.Relational/8.0.13": {
"type": "package",
"dependencies": {
- "Microsoft.EntityFrameworkCore": "8.0.2",
+ "Microsoft.EntityFrameworkCore": "8.0.13",
"Microsoft.Extensions.Configuration.Abstractions": "8.0.0"
},
"compile": {
@@ -1092,10 +837,10 @@
}
}
},
- "Microsoft.EntityFrameworkCore.Tools/8.0.2": {
+ "Microsoft.EntityFrameworkCore.Tools/8.0.13": {
"type": "package",
"dependencies": {
- "Microsoft.EntityFrameworkCore.Design": "8.0.2"
+ "Microsoft.EntityFrameworkCore.Design": "8.0.13"
},
"compile": {
"lib/net8.0/_._": {}
@@ -1104,10 +849,10 @@
"lib/net8.0/_._": {}
}
},
- "Microsoft.Extensions.Caching.Abstractions/9.0.2": {
+ "Microsoft.Extensions.Caching.Abstractions/8.0.0": {
"type": "package",
"dependencies": {
- "Microsoft.Extensions.Primitives": "9.0.2"
+ "Microsoft.Extensions.Primitives": "8.0.0"
},
"compile": {
"lib/net8.0/Microsoft.Extensions.Caching.Abstractions.dll": {
@@ -1120,17 +865,17 @@
}
},
"build": {
- "buildTransitive/net8.0/_._": {}
+ "buildTransitive/net6.0/_._": {}
}
},
- "Microsoft.Extensions.Caching.Memory/9.0.2": {
+ "Microsoft.Extensions.Caching.Memory/8.0.1": {
"type": "package",
"dependencies": {
- "Microsoft.Extensions.Caching.Abstractions": "9.0.2",
- "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.2",
- "Microsoft.Extensions.Logging.Abstractions": "9.0.2",
- "Microsoft.Extensions.Options": "9.0.2",
- "Microsoft.Extensions.Primitives": "9.0.2"
+ "Microsoft.Extensions.Caching.Abstractions": "8.0.0",
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2",
+ "Microsoft.Extensions.Logging.Abstractions": "8.0.2",
+ "Microsoft.Extensions.Options": "8.0.2",
+ "Microsoft.Extensions.Primitives": "8.0.0"
},
"compile": {
"lib/net8.0/Microsoft.Extensions.Caching.Memory.dll": {
@@ -1143,14 +888,14 @@
}
},
"build": {
- "buildTransitive/net8.0/_._": {}
+ "buildTransitive/net6.0/_._": {}
}
},
- "Microsoft.Extensions.Configuration/9.0.4": {
+ "Microsoft.Extensions.Configuration/8.0.0": {
"type": "package",
"dependencies": {
- "Microsoft.Extensions.Configuration.Abstractions": "9.0.4",
- "Microsoft.Extensions.Primitives": "9.0.4"
+ "Microsoft.Extensions.Configuration.Abstractions": "8.0.0",
+ "Microsoft.Extensions.Primitives": "8.0.0"
},
"compile": {
"lib/net8.0/Microsoft.Extensions.Configuration.dll": {
@@ -1163,13 +908,13 @@
}
},
"build": {
- "buildTransitive/net8.0/_._": {}
+ "buildTransitive/net6.0/_._": {}
}
},
- "Microsoft.Extensions.Configuration.Abstractions/9.0.4": {
+ "Microsoft.Extensions.Configuration.Abstractions/8.0.0": {
"type": "package",
"dependencies": {
- "Microsoft.Extensions.Primitives": "9.0.4"
+ "Microsoft.Extensions.Primitives": "8.0.0"
},
"compile": {
"lib/net8.0/Microsoft.Extensions.Configuration.Abstractions.dll": {
@@ -1182,7 +927,7 @@
}
},
"build": {
- "buildTransitive/net8.0/_._": {}
+ "buildTransitive/net6.0/_._": {}
}
},
"Microsoft.Extensions.Configuration.Binder/8.0.0": {
@@ -1273,10 +1018,10 @@
"buildTransitive/net6.0/Microsoft.Extensions.Configuration.UserSecrets.targets": {}
}
},
- "Microsoft.Extensions.DependencyInjection/9.0.2": {
+ "Microsoft.Extensions.DependencyInjection/8.0.1": {
"type": "package",
"dependencies": {
- "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.2"
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2"
},
"compile": {
"lib/net8.0/Microsoft.Extensions.DependencyInjection.dll": {
@@ -1289,10 +1034,10 @@
}
},
"build": {
- "buildTransitive/net8.0/_._": {}
+ "buildTransitive/net6.0/_._": {}
}
},
- "Microsoft.Extensions.DependencyInjection.Abstractions/9.0.4": {
+ "Microsoft.Extensions.DependencyInjection.Abstractions/8.0.2": {
"type": "package",
"compile": {
"lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {
@@ -1305,15 +1050,11 @@
}
},
"build": {
- "buildTransitive/net8.0/_._": {}
+ "buildTransitive/net6.0/_._": {}
}
},
- "Microsoft.Extensions.DependencyModel/8.0.0": {
+ "Microsoft.Extensions.DependencyModel/8.0.2": {
"type": "package",
- "dependencies": {
- "System.Text.Encodings.Web": "8.0.0",
- "System.Text.Json": "8.0.0"
- },
"compile": {
"lib/net8.0/_._": {
"related": ".xml"
@@ -1450,12 +1191,12 @@
"buildTransitive/net6.0/_._": {}
}
},
- "Microsoft.Extensions.Logging/9.0.2": {
+ "Microsoft.Extensions.Logging/8.0.1": {
"type": "package",
"dependencies": {
- "Microsoft.Extensions.DependencyInjection": "9.0.2",
- "Microsoft.Extensions.Logging.Abstractions": "9.0.2",
- "Microsoft.Extensions.Options": "9.0.2"
+ "Microsoft.Extensions.DependencyInjection": "8.0.1",
+ "Microsoft.Extensions.Logging.Abstractions": "8.0.2",
+ "Microsoft.Extensions.Options": "8.0.2"
},
"compile": {
"lib/net8.0/Microsoft.Extensions.Logging.dll": {
@@ -1468,14 +1209,13 @@
}
},
"build": {
- "buildTransitive/net8.0/_._": {}
+ "buildTransitive/net6.0/_._": {}
}
},
- "Microsoft.Extensions.Logging.Abstractions/9.0.2": {
+ "Microsoft.Extensions.Logging.Abstractions/8.0.3": {
"type": "package",
"dependencies": {
- "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.2",
- "System.Diagnostics.DiagnosticSource": "9.0.2"
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2"
},
"compile": {
"lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll": {
@@ -1488,27 +1228,14 @@
}
},
"build": {
- "buildTransitive/net8.0/Microsoft.Extensions.Logging.Abstractions.targets": {}
+ "buildTransitive/net6.0/Microsoft.Extensions.Logging.Abstractions.targets": {}
}
},
- "Microsoft.Extensions.ObjectPool/6.0.3": {
- "type": "package",
- "compile": {
- "lib/net6.0/Microsoft.Extensions.ObjectPool.dll": {
- "related": ".xml"
- }
- },
- "runtime": {
- "lib/net6.0/Microsoft.Extensions.ObjectPool.dll": {
- "related": ".xml"
- }
- }
- },
- "Microsoft.Extensions.Options/9.0.4": {
+ "Microsoft.Extensions.Options/8.0.2": {
"type": "package",
"dependencies": {
- "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.4",
- "Microsoft.Extensions.Primitives": "9.0.4"
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0",
+ "Microsoft.Extensions.Primitives": "8.0.0"
},
"compile": {
"lib/net8.0/Microsoft.Extensions.Options.dll": {
@@ -1521,7 +1248,7 @@
}
},
"build": {
- "buildTransitive/net8.0/Microsoft.Extensions.Options.targets": {}
+ "buildTransitive/net6.0/Microsoft.Extensions.Options.targets": {}
}
},
"Microsoft.Extensions.Options.ConfigurationExtensions/8.0.0": {
@@ -1547,7 +1274,7 @@
"buildTransitive/net6.0/_._": {}
}
},
- "Microsoft.Extensions.Primitives/9.0.4": {
+ "Microsoft.Extensions.Primitives/8.0.0": {
"type": "package",
"compile": {
"lib/net8.0/Microsoft.Extensions.Primitives.dll": {
@@ -1560,7 +1287,7 @@
}
},
"build": {
- "buildTransitive/net8.0/_._": {}
+ "buildTransitive/net6.0/_._": {}
}
},
"Microsoft.IdentityModel.Abstractions/8.9.0": {
@@ -1660,59 +1387,13 @@
}
}
},
- "Microsoft.OData.Core/8.2.2": {
+ "Microsoft.NETCore.Platforms/5.0.0": {
"type": "package",
- "dependencies": {
- "Microsoft.Bcl.AsyncInterfaces": "8.0.0",
- "Microsoft.Extensions.ObjectPool": "6.0.3",
- "Microsoft.OData.Edm": "[8.2.2]",
- "Microsoft.Spatial": "[8.2.2]"
- },
"compile": {
- "lib/net8.0/Microsoft.OData.Core.dll": {
- "related": ".xml"
- }
+ "lib/netstandard1.0/_._": {}
},
"runtime": {
- "lib/net8.0/Microsoft.OData.Core.dll": {
- "related": ".xml"
- }
- }
- },
- "Microsoft.OData.Edm/8.2.2": {
- "type": "package",
- "dependencies": {
- "System.Runtime.CompilerServices.Unsafe": "4.6.0",
- "System.Text.Encodings.Web": "4.7.2",
- "System.Text.Json": "4.6.0"
- },
- "compile": {
- "lib/net8.0/Microsoft.OData.Edm.dll": {
- "related": ".xml"
- }
- },
- "runtime": {
- "lib/net8.0/Microsoft.OData.Edm.dll": {
- "related": ".xml"
- }
- }
- },
- "Microsoft.OData.ModelBuilder/2.0.0": {
- "type": "package",
- "dependencies": {
- "Microsoft.OData.Edm": "[8.0.0, 9.0.0)",
- "Microsoft.Spatial": "[8.0.0, 9.0.0)",
- "System.ComponentModel.Annotations": "4.6.0"
- },
- "compile": {
- "lib/net8.0/Microsoft.OData.ModelBuilder.dll": {
- "related": ".xml"
- }
- },
- "runtime": {
- "lib/net8.0/Microsoft.OData.ModelBuilder.dll": {
- "related": ".xml"
- }
+ "lib/netstandard1.0/_._": {}
}
},
"Microsoft.OpenApi/1.6.22": {
@@ -1728,19 +1409,6 @@
}
}
},
- "Microsoft.Spatial/8.2.2": {
- "type": "package",
- "compile": {
- "lib/net8.0/Microsoft.Spatial.dll": {
- "related": ".xml"
- }
- },
- "runtime": {
- "lib/net8.0/Microsoft.Spatial.dll": {
- "related": ".xml"
- }
- }
- },
"Microsoft.Win32.Registry/5.0.0": {
"type": "package",
"dependencies": {
@@ -1764,28 +1432,6 @@
}
}
},
- "Microsoft.Win32.SystemEvents/6.0.0": {
- "type": "package",
- "compile": {
- "lib/net6.0/Microsoft.Win32.SystemEvents.dll": {
- "related": ".xml"
- }
- },
- "runtime": {
- "lib/net6.0/Microsoft.Win32.SystemEvents.dll": {
- "related": ".xml"
- }
- },
- "build": {
- "buildTransitive/netcoreapp3.1/_._": {}
- },
- "runtimeTargets": {
- "runtimes/win/lib/net6.0/Microsoft.Win32.SystemEvents.dll": {
- "assetType": "runtime",
- "rid": "win"
- }
- }
- },
"MongoDB.Analyzer/1.5.0": {
"type": "package"
},
@@ -1828,19 +1474,6 @@
}
}
},
- "Mono.Reflection/2.0.0": {
- "type": "package",
- "compile": {
- "lib/netstandard2.0/Mono.Reflection.dll": {
- "related": ".pdb"
- }
- },
- "runtime": {
- "lib/netstandard2.0/Mono.Reflection.dll": {
- "related": ".pdb"
- }
- }
- },
"Mono.TextTemplating/2.2.1": {
"type": "package",
"dependencies": {
@@ -2104,10 +1737,10 @@
}
}
},
- "Pomelo.EntityFrameworkCore.MySql/8.0.2": {
+ "Pomelo.EntityFrameworkCore.MySql/8.0.3": {
"type": "package",
"dependencies": {
- "Microsoft.EntityFrameworkCore.Relational": "[8.0.2, 8.0.999]",
+ "Microsoft.EntityFrameworkCore.Relational": "[8.0.13, 8.0.999]",
"MySqlConnector": "2.3.5"
},
"compile": {
@@ -2138,41 +1771,6 @@
}
}
},
- "runtime.native.System.Data.SqlClient.sni/4.7.0": {
- "type": "package",
- "dependencies": {
- "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": "4.4.0",
- "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": "4.4.0",
- "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": "4.4.0"
- }
- },
- "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni/4.4.0": {
- "type": "package",
- "runtimeTargets": {
- "runtimes/win-arm64/native/sni.dll": {
- "assetType": "native",
- "rid": "win-arm64"
- }
- }
- },
- "runtime.win-x64.runtime.native.System.Data.SqlClient.sni/4.4.0": {
- "type": "package",
- "runtimeTargets": {
- "runtimes/win-x64/native/sni.dll": {
- "assetType": "native",
- "rid": "win-x64"
- }
- }
- },
- "runtime.win-x86.runtime.native.System.Data.SqlClient.sni/4.4.0": {
- "type": "package",
- "runtimeTargets": {
- "runtimes/win-x86/native/sni.dll": {
- "assetType": "native",
- "rid": "win-x86"
- }
- }
- },
"SharpCompress/0.30.1": {
"type": "package",
"compile": {
@@ -2327,20 +1925,15 @@
"lib/netcoreapp2.0/_._": {}
}
},
- "System.CodeDom/6.0.0": {
+ "System.CodeDom/4.4.0": {
"type": "package",
"compile": {
- "lib/net6.0/System.CodeDom.dll": {
+ "ref/netstandard2.0/_._": {
"related": ".xml"
}
},
"runtime": {
- "lib/net6.0/System.CodeDom.dll": {
- "related": ".xml"
- }
- },
- "build": {
- "buildTransitive/netcoreapp3.1/_._": {}
+ "lib/netstandard2.0/System.CodeDom.dll": {}
}
},
"System.Collections.Immutable/6.0.0": {
@@ -2362,19 +1955,6 @@
"buildTransitive/netcoreapp3.1/_._": {}
}
},
- "System.ComponentModel.Annotations/5.0.0": {
- "type": "package",
- "compile": {
- "ref/netstandard2.1/System.ComponentModel.Annotations.dll": {
- "related": ".xml"
- }
- },
- "runtime": {
- "lib/netstandard2.1/System.ComponentModel.Annotations.dll": {
- "related": ".xml"
- }
- }
- },
"System.Composition/6.0.0": {
"type": "package",
"dependencies": {
@@ -2479,55 +2059,7 @@
"buildTransitive/netcoreapp3.1/_._": {}
}
},
- "System.Configuration.ConfigurationManager/6.0.1": {
- "type": "package",
- "dependencies": {
- "System.Security.Cryptography.ProtectedData": "6.0.0",
- "System.Security.Permissions": "6.0.0"
- },
- "compile": {
- "lib/net6.0/System.Configuration.ConfigurationManager.dll": {
- "related": ".xml"
- }
- },
- "runtime": {
- "lib/net6.0/System.Configuration.ConfigurationManager.dll": {
- "related": ".xml"
- }
- },
- "build": {
- "buildTransitive/netcoreapp3.1/_._": {}
- }
- },
- "System.Data.SqlClient/4.8.6": {
- "type": "package",
- "dependencies": {
- "Microsoft.Win32.Registry": "4.7.0",
- "System.Security.Principal.Windows": "4.7.0",
- "runtime.native.System.Data.SqlClient.sni": "4.7.0"
- },
- "compile": {
- "ref/netcoreapp2.1/System.Data.SqlClient.dll": {
- "related": ".xml"
- }
- },
- "runtime": {
- "lib/netcoreapp2.1/System.Data.SqlClient.dll": {
- "related": ".xml"
- }
- },
- "runtimeTargets": {
- "runtimes/unix/lib/netcoreapp2.1/System.Data.SqlClient.dll": {
- "assetType": "runtime",
- "rid": "unix"
- },
- "runtimes/win/lib/netcoreapp2.1/System.Data.SqlClient.dll": {
- "assetType": "runtime",
- "rid": "win"
- }
- }
- },
- "System.Diagnostics.DiagnosticSource/9.0.2": {
+ "System.Diagnostics.DiagnosticSource/8.0.0": {
"type": "package",
"compile": {
"lib/net8.0/System.Diagnostics.DiagnosticSource.dll": {
@@ -2539,44 +2071,8 @@
"related": ".xml"
}
},
- "contentFiles": {
- "contentFiles/any/any/_._": {
- "buildAction": "None",
- "codeLanguage": "any",
- "copyToOutput": false
- }
- },
"build": {
- "buildTransitive/net8.0/_._": {}
- }
- },
- "System.Drawing.Common/6.0.0": {
- "type": "package",
- "dependencies": {
- "Microsoft.Win32.SystemEvents": "6.0.0"
- },
- "compile": {
- "lib/net6.0/System.Drawing.Common.dll": {
- "related": ".xml"
- }
- },
- "runtime": {
- "lib/net6.0/System.Drawing.Common.dll": {
- "related": ".xml"
- }
- },
- "build": {
- "buildTransitive/netcoreapp3.1/_._": {}
- },
- "runtimeTargets": {
- "runtimes/unix/lib/net6.0/System.Drawing.Common.dll": {
- "assetType": "runtime",
- "rid": "unix"
- },
- "runtimes/win/lib/net6.0/System.Drawing.Common.dll": {
- "assetType": "runtime",
- "rid": "win"
- }
+ "buildTransitive/net6.0/_._": {}
}
},
"System.IdentityModel.Tokens.Jwt/8.9.0": {
@@ -2637,15 +2133,6 @@
"buildTransitive/net6.0/_._": {}
}
},
- "System.Reflection.Emit/4.7.0": {
- "type": "package",
- "compile": {
- "ref/netcoreapp2.0/_._": {}
- },
- "runtime": {
- "lib/netcoreapp2.0/_._": {}
- }
- },
"System.Reflection.Metadata/6.0.1": {
"type": "package",
"dependencies": {
@@ -2681,68 +2168,27 @@
"buildTransitive/netcoreapp3.1/_._": {}
}
},
- "System.Security.AccessControl/6.0.0": {
- "type": "package",
- "compile": {
- "lib/net6.0/System.Security.AccessControl.dll": {
- "related": ".xml"
- }
- },
- "runtime": {
- "lib/net6.0/System.Security.AccessControl.dll": {
- "related": ".xml"
- }
- },
- "build": {
- "buildTransitive/netcoreapp3.1/_._": {}
- },
- "runtimeTargets": {
- "runtimes/win/lib/net6.0/System.Security.AccessControl.dll": {
- "assetType": "runtime",
- "rid": "win"
- }
- }
- },
- "System.Security.Cryptography.ProtectedData/6.0.0": {
- "type": "package",
- "compile": {
- "lib/net6.0/System.Security.Cryptography.ProtectedData.dll": {
- "related": ".xml"
- }
- },
- "runtime": {
- "lib/net6.0/System.Security.Cryptography.ProtectedData.dll": {
- "related": ".xml"
- }
- },
- "build": {
- "buildTransitive/netcoreapp3.1/_._": {}
- },
- "runtimeTargets": {
- "runtimes/win/lib/net6.0/System.Security.Cryptography.ProtectedData.dll": {
- "assetType": "runtime",
- "rid": "win"
- }
- }
- },
- "System.Security.Permissions/6.0.0": {
+ "System.Security.AccessControl/5.0.0": {
"type": "package",
"dependencies": {
- "System.Security.AccessControl": "6.0.0",
- "System.Windows.Extensions": "6.0.0"
+ "Microsoft.NETCore.Platforms": "5.0.0",
+ "System.Security.Principal.Windows": "5.0.0"
},
"compile": {
- "lib/net6.0/System.Security.Permissions.dll": {
+ "ref/netstandard2.0/System.Security.AccessControl.dll": {
"related": ".xml"
}
},
"runtime": {
- "lib/net6.0/System.Security.Permissions.dll": {
+ "lib/netstandard2.0/System.Security.AccessControl.dll": {
"related": ".xml"
}
},
- "build": {
- "buildTransitive/netcoreapp3.1/_._": {}
+ "runtimeTargets": {
+ "runtimes/win/lib/netcoreapp2.0/System.Security.AccessControl.dll": {
+ "assetType": "runtime",
+ "rid": "win"
+ }
}
},
"System.Security.Principal.Windows/5.0.0": {
@@ -2850,26 +2296,17 @@
"buildTransitive/net6.0/_._": {}
}
},
- "System.Windows.Extensions/6.0.0": {
+ "Ulid/1.3.4": {
"type": "package",
- "dependencies": {
- "System.Drawing.Common": "6.0.0"
- },
"compile": {
- "lib/net6.0/System.Windows.Extensions.dll": {
+ "lib/net8.0/Ulid.dll": {
"related": ".xml"
}
},
"runtime": {
- "lib/net6.0/System.Windows.Extensions.dll": {
+ "lib/net8.0/Ulid.dll": {
"related": ".xml"
}
- },
- "runtimeTargets": {
- "runtimes/win/lib/net6.0/System.Windows.Extensions.dll": {
- "assetType": "runtime",
- "rid": "win"
- }
}
},
"YamlDotNet/16.3.0": {
@@ -2979,7 +2416,8 @@
"Protocol": "1.0.0",
"ServerBase": "1.0.0",
"ServerCore": "1.0.0",
- "UGQDatabase": "1.0.0"
+ "UGQDatabase": "1.0.0",
+ "Ulid": "1.3.4"
},
"compile": {
"bin/placeholder/ServerCommon.dll": {}
@@ -2999,15 +2437,6 @@
"AWSSDK.S3": "3.7.416.15",
"AWSSDK.SecurityToken": "3.7.401.89",
"AsyncStateMachine": "1.3.2",
- "AutoMapper": "14.0.0",
- "AutoMapper.AspNetCore.OData.EFCore": "7.0.1",
- "AutoMapper.Collection": "11.0.0",
- "AutoMapper.Collection.EntityFrameworkCore": "11.0.0",
- "AutoMapper.Contrib.Autofac.DependencyInjection": "9.0.0",
- "AutoMapper.Data": "9.0.0",
- "AutoMapper.EF6": "3.0.1",
- "AutoMapper.Extensions.EnumMapping": "4.1.0",
- "AutoMapper.Extensions.ExpressionMapping": "8.0.0",
"Axion.ConcurrentHashSet": "1.0.0",
"BCrypt.Net-Next": "4.0.3",
"BouncyCastle.Cryptography": "2.5.1",
@@ -3017,8 +2446,8 @@
"Google.Protobuf": "3.27.1",
"JWT": "11.0.0",
"Microsoft.Diagnostics.NETCore.Client": "0.2.621003",
- "Microsoft.Extensions.Configuration": "9.0.4",
- "Microsoft.Extensions.Options": "9.0.4",
+ "Microsoft.Extensions.Configuration": "8.0.0",
+ "Microsoft.Extensions.Options": "8.0.2",
"MongoDB.Analyzer": "1.5.0",
"MongoDB.Bson": "3.3.0",
"MongoDB.Driver": "3.3.0",
@@ -3077,156 +2506,6 @@
"lib/netstandard2.0/AsyncStateMachine.dll"
]
},
- "Autofac/8.2.0": {
- "sha512": "T+4+W4byzyUOarCbIcFRbxpYKC+cndfQm/+VeWpB60P2MCN0JMsewUhZqvH5Ooe936HQjn5uHvEY9tq6BfbiIw==",
- "type": "package",
- "path": "autofac/8.2.0",
- "files": [
- ".nupkg.metadata",
- ".signature.p7s",
- "README.md",
- "autofac.8.2.0.nupkg.sha512",
- "autofac.nuspec",
- "icon.png",
- "lib/net6.0/Autofac.dll",
- "lib/net6.0/Autofac.xml",
- "lib/net7.0/Autofac.dll",
- "lib/net7.0/Autofac.xml",
- "lib/net8.0/Autofac.dll",
- "lib/net8.0/Autofac.xml",
- "lib/netstandard2.0/Autofac.dll",
- "lib/netstandard2.0/Autofac.xml",
- "lib/netstandard2.1/Autofac.dll",
- "lib/netstandard2.1/Autofac.xml"
- ]
- },
- "AutoMapper/14.0.0": {
- "sha512": "OC+1neAPM4oCCqQj3g2GJ2shziNNhOkxmNB9cVS8jtx4JbgmRzLcUOxB9Tsz6cVPHugdkHgCaCrTjjSI0Z5sCQ==",
- "type": "package",
- "path": "automapper/14.0.0",
- "files": [
- ".nupkg.metadata",
- ".signature.p7s",
- "README.md",
- "automapper.14.0.0.nupkg.sha512",
- "automapper.nuspec",
- "icon.png",
- "lib/net8.0/AutoMapper.dll",
- "lib/net8.0/AutoMapper.xml"
- ]
- },
- "AutoMapper.AspNetCore.OData.EFCore/7.0.1": {
- "sha512": "VfJFmLdPjdKX1gOlUx9+n1hdi9tFadsEDd28iSsTy26SdOe8AuV9fWozVMXg6663qBbw/7LiaPP19VgRlfFkOA==",
- "type": "package",
- "path": "automapper.aspnetcore.odata.efcore/7.0.1",
- "files": [
- ".nupkg.metadata",
- ".signature.p7s",
- "README.md",
- "automapper.aspnetcore.odata.efcore.7.0.1.nupkg.sha512",
- "automapper.aspnetcore.odata.efcore.nuspec",
- "icon.png",
- "lib/net8.0/AutoMapper.AspNetCore.OData.EFCore.dll",
- "lib/net9.0/AutoMapper.AspNetCore.OData.EFCore.dll"
- ]
- },
- "AutoMapper.Collection/11.0.0": {
- "sha512": "26CXTuPsIbfk121na1sWt/QcJ4EkXtlWy6R+LJFvsxiF80d2srbUgL0WgZn9mDyrJo4Hvvyqr/WFwNrVOKMiHQ==",
- "type": "package",
- "path": "automapper.collection/11.0.0",
- "files": [
- ".nupkg.metadata",
- ".signature.p7s",
- "automapper.collection.11.0.0.nupkg.sha512",
- "automapper.collection.nuspec",
- "icon.png",
- "lib/net8.0/AutoMapper.Collection.dll"
- ]
- },
- "AutoMapper.Collection.EntityFrameworkCore/11.0.0": {
- "sha512": "+IHCGSLfdc2pNXEUF2Kz8P1I1anCqPlEGWswMzTz1tZ2eRod9bY609TS55dg2NlS8e9CKebIoT3e/c4m90jCoQ==",
- "type": "package",
- "path": "automapper.collection.entityframeworkcore/11.0.0",
- "files": [
- ".nupkg.metadata",
- ".signature.p7s",
- "automapper.collection.entityframeworkcore.11.0.0.nupkg.sha512",
- "automapper.collection.entityframeworkcore.nuspec",
- "icon.png",
- "lib/net8.0/AutoMapper.Collection.EntityFrameworkCore.dll"
- ]
- },
- "AutoMapper.Contrib.Autofac.DependencyInjection/9.0.0": {
- "sha512": "vomQXQ4vqWUhl5tpbUbD3200BtlVJxdAUdCMa08a/vzRL6S9MJb2mN6EplaXXA3FLH1a3lPT1KpiHu6AlooQ/w==",
- "type": "package",
- "path": "automapper.contrib.autofac.dependencyinjection/9.0.0",
- "files": [
- ".nupkg.metadata",
- ".signature.p7s",
- "automapper.contrib.autofac.dependencyinjection.9.0.0.nupkg.sha512",
- "automapper.contrib.autofac.dependencyinjection.nuspec",
- "icon.png",
- "lib/net8.0/AutoMapper.Contrib.Autofac.DependencyInjection.dll",
- "lib/net8.0/AutoMapper.Contrib.Autofac.DependencyInjection.pdb"
- ]
- },
- "AutoMapper.Data/9.0.0": {
- "sha512": "OI0+nHZaVGZCys2Nz7YV1I5ZjKjuTM2NXlAUmd2Nx68s4qX5m8piUfSapVjxInoQDf5PJ7Mox7a1lEZHpSHYpg==",
- "type": "package",
- "path": "automapper.data/9.0.0",
- "files": [
- ".nupkg.metadata",
- ".signature.p7s",
- "README.md",
- "automapper.data.9.0.0.nupkg.sha512",
- "automapper.data.nuspec",
- "lib/net8.0/AutoMapper.Data.dll",
- "lib/net8.0/AutoMapper.Data.xml"
- ]
- },
- "AutoMapper.EF6/3.0.1": {
- "sha512": "4w8gqn6NixT69TmH5Iup2nFoC6bYtjwh/QozOvOEbnu6imnegZE2DE4EqEG6Fis1dKKJ6WT9NCbiWC4NZv7Abw==",
- "type": "package",
- "path": "automapper.ef6/3.0.1",
- "files": [
- ".nupkg.metadata",
- ".signature.p7s",
- "automapper.ef6.3.0.1.nupkg.sha512",
- "automapper.ef6.nuspec",
- "lib/net462/AutoMapper.EF6.dll",
- "lib/netstandard2.1/AutoMapper.EF6.dll"
- ]
- },
- "AutoMapper.Extensions.EnumMapping/4.1.0": {
- "sha512": "4i6FVLOequZNLgU6CRFbT900tBHb6JxyJty7Q8Rf7wMiwIBy/PkjsOT7Vz6svacFykghEy7PURSxpO9Fl2OUsA==",
- "type": "package",
- "path": "automapper.extensions.enummapping/4.1.0",
- "files": [
- ".nupkg.metadata",
- ".signature.p7s",
- "README.md",
- "automapper.extensions.enummapping.4.1.0.nupkg.sha512",
- "automapper.extensions.enummapping.nuspec",
- "icon.png",
- "lib/net8.0/AutoMapper.Extensions.EnumMapping.dll",
- "lib/net8.0/AutoMapper.Extensions.EnumMapping.xml"
- ]
- },
- "AutoMapper.Extensions.ExpressionMapping/8.0.0": {
- "sha512": "fR55QEOt8GiaVQPuEpyWJAzZxFSInCIYg6E1EoqQByWnjzQnQ5zHwQvMMF3E+AdtvAzbG7Intm08/8pK8eUTvQ==",
- "type": "package",
- "path": "automapper.extensions.expressionmapping/8.0.0",
- "files": [
- ".nupkg.metadata",
- ".signature.p7s",
- "README.md",
- "automapper.extensions.expressionmapping.8.0.0.nupkg.sha512",
- "automapper.extensions.expressionmapping.nuspec",
- "icon.png",
- "lib/net8.0/AutoMapper.Extensions.ExpressionMapping.dll",
- "lib/net8.0/AutoMapper.Extensions.ExpressionMapping.xml"
- ]
- },
"AWS.Logger.Core/3.3.3": {
"sha512": "JEXjiwIwAws5YJZDVwSqUoZIjMxsAuaZOQFZfLk6lYTg9NLrFY1dHafy6qifz/8ZQSlBiuSs+MAAHlBqHF9Cfw==",
"type": "package",
@@ -3576,36 +2855,6 @@
"lib/netstandard2.0/CommandLine.xml"
]
},
- "DelegateDecompiler/0.34.0": {
- "sha512": "blUx3XMP4lJynw2y34NrnHzrshF2YGOPirxVUhHnAT09L/LwQc8Q6szmNGFi9hLd9AcM4nVAmXIX2DDyqCfwLg==",
- "type": "package",
- "path": "delegatedecompiler/0.34.0",
- "files": [
- ".nupkg.metadata",
- ".signature.p7s",
- "README.md",
- "delegatedecompiler.0.34.0.nupkg.sha512",
- "delegatedecompiler.nuspec",
- "lib/net40/DelegateDecompiler.dll",
- "lib/net45/DelegateDecompiler.dll",
- "lib/netstandard2.0/DelegateDecompiler.dll",
- "lib/netstandard2.1/DelegateDecompiler.dll"
- ]
- },
- "DelegateDecompiler.EntityFramework/0.34.0": {
- "sha512": "U55TkUKhrAsssd+cgXsEZqYXdT20nJBlEOBdLInsCRt1UghtWhYNZqbnR9oPIV4phrtgmkqj/6kXhfdczYNn4g==",
- "type": "package",
- "path": "delegatedecompiler.entityframework/0.34.0",
- "files": [
- ".nupkg.metadata",
- ".signature.p7s",
- "README.md",
- "delegatedecompiler.entityframework.0.34.0.nupkg.sha512",
- "delegatedecompiler.entityframework.nuspec",
- "lib/net45/DelegateDecompiler.EntityFramework.dll",
- "lib/netstandard2.1/DelegateDecompiler.EntityFramework.dll"
- ]
- },
"DnsClient/1.6.1": {
"sha512": "4H/f2uYJOZ+YObZjpY9ABrKZI+JNw3uizp6oMzTXwDw6F+2qIPhpRl/1t68O/6e98+vqNiYGu+lswmwdYUy3gg==",
"type": "package",
@@ -3657,68 +2906,6 @@
"lib/netstandard2.0/DumpExtensions.dll"
]
},
- "EntityFramework/6.5.1": {
- "sha512": "sQRP2lWg1i3aAGWqdliAM8zrGx7LHMUk+9/MoxUjwfTZYGMXvZ2JYZTlyTm1PqDxvn3c9E3U76TWDON7Y5+CVA==",
- "type": "package",
- "path": "entityframework/6.5.1",
- "hasTools": true,
- "files": [
- ".nupkg.metadata",
- ".signature.p7s",
- "Icon.png",
- "README.md",
- "build/EntityFramework.DefaultItems.props",
- "build/EntityFramework.props",
- "build/EntityFramework.targets",
- "build/Microsoft.Data.Entity.Build.Tasks.dll",
- "build/net6.0/EntityFramework.props",
- "build/net6.0/EntityFramework.targets",
- "buildTransitive/EntityFramework.props",
- "buildTransitive/EntityFramework.targets",
- "buildTransitive/net6.0/EntityFramework.props",
- "buildTransitive/net6.0/EntityFramework.targets",
- "content/net40/App.config.install.xdt",
- "content/net40/App.config.transform",
- "content/net40/Web.config.install.xdt",
- "content/net40/Web.config.transform",
- "entityframework.6.5.1.nupkg.sha512",
- "entityframework.nuspec",
- "lib/net40/EntityFramework.SqlServer.dll",
- "lib/net40/EntityFramework.SqlServer.xml",
- "lib/net40/EntityFramework.dll",
- "lib/net40/EntityFramework.xml",
- "lib/net45/EntityFramework.SqlServer.dll",
- "lib/net45/EntityFramework.SqlServer.xml",
- "lib/net45/EntityFramework.dll",
- "lib/net45/EntityFramework.xml",
- "lib/netstandard2.1/EntityFramework.SqlServer.dll",
- "lib/netstandard2.1/EntityFramework.SqlServer.xml",
- "lib/netstandard2.1/EntityFramework.dll",
- "lib/netstandard2.1/EntityFramework.xml",
- "tools/EntityFramework6.PS2.psd1",
- "tools/EntityFramework6.PS2.psm1",
- "tools/EntityFramework6.psd1",
- "tools/EntityFramework6.psm1",
- "tools/about_EntityFramework6.help.txt",
- "tools/init.ps1",
- "tools/install.ps1",
- "tools/net40/any/ef6.exe",
- "tools/net40/any/ef6.pdb",
- "tools/net40/win-arm64/ef6.exe",
- "tools/net40/win-arm64/ef6.pdb",
- "tools/net40/win-x86/ef6.exe",
- "tools/net40/win-x86/ef6.pdb",
- "tools/net45/any/ef6.exe",
- "tools/net45/any/ef6.pdb",
- "tools/net45/win-arm64/ef6.exe",
- "tools/net45/win-arm64/ef6.pdb",
- "tools/net45/win-x86/ef6.exe",
- "tools/net45/win-x86/ef6.pdb",
- "tools/net6.0/any/ef6.dll",
- "tools/net6.0/any/ef6.pdb",
- "tools/net6.0/any/ef6.runtimeconfig.json"
- ]
- },
"Google.Protobuf/3.27.1": {
"sha512": "7IVz9TzhYCZ8qY0rPhXUnyJSXYdshUqmmxmTI763XmDDSJJFnyfKH43FFcMJu/CZgBcE98xlFztrKwhzcRkiPg==",
"type": "package",
@@ -4000,32 +3187,6 @@
"lib/netstandard2.0/JWT.xml"
]
},
- "LogicBuilder.Expressions.Utils/7.0.0": {
- "sha512": "nTlL/5nGPHZ0s987Kta4lFnzU79Px/9R9rFhJi6AxCMHZUz5BUX4Aab1A29iBTLmIMu2DKyQM8iN8q1NK3+CUA==",
- "type": "package",
- "path": "logicbuilder.expressions.utils/7.0.0",
- "files": [
- ".nupkg.metadata",
- ".signature.p7s",
- "README.md",
- "lib/netstandard2.0/LogicBuilder.Expressions.Utils.dll",
- "logicbuilder.expressions.utils.7.0.0.nupkg.sha512",
- "logicbuilder.expressions.utils.nuspec"
- ]
- },
- "LogicBuilder.Structures/7.0.0": {
- "sha512": "KDfzBB7cYk2ras9Nb3xYXuUKs+rvje0vVyGzkXPQCpKsSbugFi2fXz+0MIQ108K+f/mOde7ZBECkkmYObyPf2Q==",
- "type": "package",
- "path": "logicbuilder.structures/7.0.0",
- "files": [
- ".nupkg.metadata",
- ".signature.p7s",
- "README.md",
- "lib/netstandard2.0/LogicBuilder.Structures.dll",
- "logicbuilder.structures.7.0.0.nupkg.sha512",
- "logicbuilder.structures.nuspec"
- ]
- },
"Microsoft.AspNetCore.Authentication.JwtBearer/8.0.2": {
"sha512": "7qJkk5k5jabATZZrMIQgpUB9yjDNAAApSqw+8d0FEyK1AJ4j+wv1qOMl2byUr837xbK+MjehtPnQ32yZ5Gtzlw==",
"type": "package",
@@ -4041,40 +3202,23 @@
"microsoft.aspnetcore.authentication.jwtbearer.nuspec"
]
},
- "Microsoft.AspNetCore.OData/9.1.1": {
- "sha512": "if1N+q3dTgUbUZ4KjLXCHYDQLKEEv0gpx8dLaSRp2StrYuWcRVCKjncI7fPcndFkt/nEJcIYzNKxtws4L5OO8Q==",
+ "Microsoft.Bcl.AsyncInterfaces/6.0.0": {
+ "sha512": "UcSjPsst+DfAdJGVDsu346FX0ci0ah+lw3WRtn18NUwEqRt70HaOQ7lI72vy3+1LxtqI3T5GWwV39rQSrCzAeg==",
"type": "package",
- "path": "microsoft.aspnetcore.odata/9.1.1",
- "files": [
- ".nupkg.metadata",
- ".signature.p7s",
- "images/odata.png",
- "lib/net8.0/Microsoft.AspNetCore.OData.dll",
- "lib/net8.0/Microsoft.AspNetCore.OData.xml",
- "microsoft.aspnetcore.odata.9.1.1.nupkg.sha512",
- "microsoft.aspnetcore.odata.nuspec"
- ]
- },
- "Microsoft.Bcl.AsyncInterfaces/8.0.0": {
- "sha512": "3WA9q9yVqJp222P3x1wYIGDAkpjAku0TMUaaQV22g6L67AI0LdOIrVS7Ht2vJfLHGSPVuqN94vIr15qn+HEkHw==",
- "type": "package",
- "path": "microsoft.bcl.asyncinterfaces/8.0.0",
+ "path": "microsoft.bcl.asyncinterfaces/6.0.0",
"files": [
".nupkg.metadata",
".signature.p7s",
"Icon.png",
"LICENSE.TXT",
- "PACKAGE.md",
"THIRD-PARTY-NOTICES.TXT",
- "buildTransitive/net461/Microsoft.Bcl.AsyncInterfaces.targets",
- "buildTransitive/net462/_._",
- "lib/net462/Microsoft.Bcl.AsyncInterfaces.dll",
- "lib/net462/Microsoft.Bcl.AsyncInterfaces.xml",
+ "lib/net461/Microsoft.Bcl.AsyncInterfaces.dll",
+ "lib/net461/Microsoft.Bcl.AsyncInterfaces.xml",
"lib/netstandard2.0/Microsoft.Bcl.AsyncInterfaces.dll",
"lib/netstandard2.0/Microsoft.Bcl.AsyncInterfaces.xml",
"lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll",
"lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.xml",
- "microsoft.bcl.asyncinterfaces.8.0.0.nupkg.sha512",
+ "microsoft.bcl.asyncinterfaces.6.0.0.nupkg.sha512",
"microsoft.bcl.asyncinterfaces.nuspec",
"useSharedDesignerContext.txt"
]
@@ -4540,75 +3684,6 @@
"microsoft.codeanalysis.workspaces.common.nuspec"
]
},
- "Microsoft.CSharp/4.7.0": {
- "sha512": "pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA==",
- "type": "package",
- "path": "microsoft.csharp/4.7.0",
- "files": [
- ".nupkg.metadata",
- ".signature.p7s",
- "LICENSE.TXT",
- "THIRD-PARTY-NOTICES.TXT",
- "lib/MonoAndroid10/_._",
- "lib/MonoTouch10/_._",
- "lib/net45/_._",
- "lib/netcore50/Microsoft.CSharp.dll",
- "lib/netcoreapp2.0/_._",
- "lib/netstandard1.3/Microsoft.CSharp.dll",
- "lib/netstandard2.0/Microsoft.CSharp.dll",
- "lib/netstandard2.0/Microsoft.CSharp.xml",
- "lib/portable-net45+win8+wp8+wpa81/_._",
- "lib/uap10.0.16299/_._",
- "lib/win8/_._",
- "lib/wp80/_._",
- "lib/wpa81/_._",
- "lib/xamarinios10/_._",
- "lib/xamarinmac20/_._",
- "lib/xamarintvos10/_._",
- "lib/xamarinwatchos10/_._",
- "microsoft.csharp.4.7.0.nupkg.sha512",
- "microsoft.csharp.nuspec",
- "ref/MonoAndroid10/_._",
- "ref/MonoTouch10/_._",
- "ref/net45/_._",
- "ref/netcore50/Microsoft.CSharp.dll",
- "ref/netcore50/Microsoft.CSharp.xml",
- "ref/netcore50/de/Microsoft.CSharp.xml",
- "ref/netcore50/es/Microsoft.CSharp.xml",
- "ref/netcore50/fr/Microsoft.CSharp.xml",
- "ref/netcore50/it/Microsoft.CSharp.xml",
- "ref/netcore50/ja/Microsoft.CSharp.xml",
- "ref/netcore50/ko/Microsoft.CSharp.xml",
- "ref/netcore50/ru/Microsoft.CSharp.xml",
- "ref/netcore50/zh-hans/Microsoft.CSharp.xml",
- "ref/netcore50/zh-hant/Microsoft.CSharp.xml",
- "ref/netcoreapp2.0/_._",
- "ref/netstandard1.0/Microsoft.CSharp.dll",
- "ref/netstandard1.0/Microsoft.CSharp.xml",
- "ref/netstandard1.0/de/Microsoft.CSharp.xml",
- "ref/netstandard1.0/es/Microsoft.CSharp.xml",
- "ref/netstandard1.0/fr/Microsoft.CSharp.xml",
- "ref/netstandard1.0/it/Microsoft.CSharp.xml",
- "ref/netstandard1.0/ja/Microsoft.CSharp.xml",
- "ref/netstandard1.0/ko/Microsoft.CSharp.xml",
- "ref/netstandard1.0/ru/Microsoft.CSharp.xml",
- "ref/netstandard1.0/zh-hans/Microsoft.CSharp.xml",
- "ref/netstandard1.0/zh-hant/Microsoft.CSharp.xml",
- "ref/netstandard2.0/Microsoft.CSharp.dll",
- "ref/netstandard2.0/Microsoft.CSharp.xml",
- "ref/portable-net45+win8+wp8+wpa81/_._",
- "ref/uap10.0.16299/_._",
- "ref/win8/_._",
- "ref/wp80/_._",
- "ref/wpa81/_._",
- "ref/xamarinios10/_._",
- "ref/xamarinmac20/_._",
- "ref/xamarintvos10/_._",
- "ref/xamarinwatchos10/_._",
- "useSharedDesignerContext.txt",
- "version.txt"
- ]
- },
"Microsoft.Diagnostics.NETCore.Client/0.2.621003": {
"sha512": "22YdSeB53xk4Pd1Xz92HigUy8ySJMzd8hpEZHlFWeaefzYox4VJnW+gJEzGrxbSvl3oGCpiIFKqh8the0xhzSA==",
"type": "package",
@@ -4625,10 +3700,10 @@
"microsoft.diagnostics.netcore.client.nuspec"
]
},
- "Microsoft.EntityFrameworkCore/9.0.2": {
- "sha512": "P90ZuybgcpW32y985eOYxSoZ9IiL0UTYQlY0y1Pt1iHAnpZj/dQHREpSpry1RNvk8YjAeoAkWFdem5conqB9zQ==",
+ "Microsoft.EntityFrameworkCore/8.0.13": {
+ "sha512": "4wyLeg64sZgJcER83fkitlKuySY3OzwcOZSZcGV1TNskmThupfhcVlsQht7bNCfNpXTCZVNIOwAZChk6/OFdXQ==",
"type": "package",
- "path": "microsoft.entityframeworkcore/9.0.2",
+ "path": "microsoft.entityframeworkcore/8.0.13",
"files": [
".nupkg.metadata",
".signature.p7s",
@@ -4637,14 +3712,14 @@
"buildTransitive/net8.0/Microsoft.EntityFrameworkCore.props",
"lib/net8.0/Microsoft.EntityFrameworkCore.dll",
"lib/net8.0/Microsoft.EntityFrameworkCore.xml",
- "microsoft.entityframeworkcore.9.0.2.nupkg.sha512",
+ "microsoft.entityframeworkcore.8.0.13.nupkg.sha512",
"microsoft.entityframeworkcore.nuspec"
]
},
- "Microsoft.EntityFrameworkCore.Abstractions/9.0.2": {
- "sha512": "oVSjNSIYHsk0N66eqAWgDcyo9etEFbUswbz7SmlYR6nGp05byHrJAYM5N8U2aGWJWJI6WvIC2e4TXJgH6GZ6HQ==",
+ "Microsoft.EntityFrameworkCore.Abstractions/8.0.13": {
+ "sha512": "a6O+v8CMStumpVoQyN0aUpx5P3/qYZP+5791sGrzJhIM+QsniQdSaJVdUSneL40M+FpBgtiC8ggqzNo2x/gVlw==",
"type": "package",
- "path": "microsoft.entityframeworkcore.abstractions/9.0.2",
+ "path": "microsoft.entityframeworkcore.abstractions/8.0.13",
"files": [
".nupkg.metadata",
".signature.p7s",
@@ -4652,64 +3727,68 @@
"PACKAGE.md",
"lib/net8.0/Microsoft.EntityFrameworkCore.Abstractions.dll",
"lib/net8.0/Microsoft.EntityFrameworkCore.Abstractions.xml",
- "microsoft.entityframeworkcore.abstractions.9.0.2.nupkg.sha512",
+ "microsoft.entityframeworkcore.abstractions.8.0.13.nupkg.sha512",
"microsoft.entityframeworkcore.abstractions.nuspec"
]
},
- "Microsoft.EntityFrameworkCore.Analyzers/9.0.2": {
- "sha512": "w4jzX7XI+L3erVGzbHXpx64A3QaLXxqG3f1vPpGYYZGpxOIHkh7e4iLLD7cq4Ng1vjkwzWl5ZJp0Kj/nHsgFYg==",
+ "Microsoft.EntityFrameworkCore.Analyzers/8.0.13": {
+ "sha512": "ENny33QADFiRxge5ikJBs2p7JB4MQx/ZSPKPNwt2eJPO0lVUGSjTiJeunGGggkVHiaUy0yY4f625LQtNlErIsw==",
"type": "package",
- "path": "microsoft.entityframeworkcore.analyzers/9.0.2",
+ "path": "microsoft.entityframeworkcore.analyzers/8.0.13",
"files": [
".nupkg.metadata",
".signature.p7s",
"Icon.png",
"analyzers/dotnet/cs/Microsoft.EntityFrameworkCore.Analyzers.dll",
"docs/PACKAGE.md",
- "microsoft.entityframeworkcore.analyzers.9.0.2.nupkg.sha512",
+ "lib/netstandard2.0/_._",
+ "microsoft.entityframeworkcore.analyzers.8.0.13.nupkg.sha512",
"microsoft.entityframeworkcore.analyzers.nuspec"
]
},
- "Microsoft.EntityFrameworkCore.Design/8.0.2": {
- "sha512": "lpSEopadyq4VjgErVbKXznlzmrdR+1zG4jjJlumgnDTz6Ov60qZkBn8uTfPYk0PUZ3wn+GNFOi3ouSTK4JKEIA==",
+ "Microsoft.EntityFrameworkCore.Design/8.0.13": {
+ "sha512": "lQ+ck65jBgUc4VdQFzmeE7rofw3VCW4vkLZKp3ntz1GONw8Upsvhg+bpRiMjz4HvArxoGaUZz2XQ6vg5Im0uUQ==",
"type": "package",
- "path": "microsoft.entityframeworkcore.design/8.0.2",
+ "path": "microsoft.entityframeworkcore.design/8.0.13",
"files": [
".nupkg.metadata",
".signature.p7s",
"Icon.png",
+ "PACKAGE.md",
"build/net8.0/Microsoft.EntityFrameworkCore.Design.props",
"lib/net8.0/Microsoft.EntityFrameworkCore.Design.dll",
"lib/net8.0/Microsoft.EntityFrameworkCore.Design.xml",
- "microsoft.entityframeworkcore.design.8.0.2.nupkg.sha512",
+ "microsoft.entityframeworkcore.design.8.0.13.nupkg.sha512",
"microsoft.entityframeworkcore.design.nuspec"
]
},
- "Microsoft.EntityFrameworkCore.Relational/8.0.2": {
- "sha512": "NoGfcq2OPw0z8XAPf74YFwGlTKjedWdsIEJqq4SvKcPjcu+B+/XDDNrDRxTvILfz4Ug8POSF49s1jz1JvUqTAg==",
+ "Microsoft.EntityFrameworkCore.Relational/8.0.13": {
+ "sha512": "uQR2iTar+6ZEjEHTwgH0/7ySSRme4R9sDiupfG3w/eBub3365fPw/MjhsuOMQkdq9YzLM7veH4Qt/K9OqL26Qg==",
"type": "package",
- "path": "microsoft.entityframeworkcore.relational/8.0.2",
+ "path": "microsoft.entityframeworkcore.relational/8.0.13",
"files": [
".nupkg.metadata",
".signature.p7s",
"Icon.png",
+ "PACKAGE.md",
"lib/net8.0/Microsoft.EntityFrameworkCore.Relational.dll",
"lib/net8.0/Microsoft.EntityFrameworkCore.Relational.xml",
- "microsoft.entityframeworkcore.relational.8.0.2.nupkg.sha512",
+ "microsoft.entityframeworkcore.relational.8.0.13.nupkg.sha512",
"microsoft.entityframeworkcore.relational.nuspec"
]
},
- "Microsoft.EntityFrameworkCore.Tools/8.0.2": {
- "sha512": "PWy3X3Z1fnWlbU6pQMSnBvMwqERoKsriJ688TMl1xT2NyqcSk6/dX22eI5eV+qYXYmYna72Dq2u0P8tNZ6AYtg==",
+ "Microsoft.EntityFrameworkCore.Tools/8.0.13": {
+ "sha512": "mbCcyX6ImsCcK2OU2qEQKLWaHn91Z7P/KlQSKCZt+rxRMM+d94jV3SR3KKSchA4TzAehZaDKeQlLxuToEX15gQ==",
"type": "package",
- "path": "microsoft.entityframeworkcore.tools/8.0.2",
+ "path": "microsoft.entityframeworkcore.tools/8.0.13",
"hasTools": true,
"files": [
".nupkg.metadata",
".signature.p7s",
"Icon.png",
+ "docs/PACKAGE.md",
"lib/net8.0/_._",
- "microsoft.entityframeworkcore.tools.8.0.2.nupkg.sha512",
+ "microsoft.entityframeworkcore.tools.8.0.13.nupkg.sha512",
"microsoft.entityframeworkcore.tools.nuspec",
"tools/EntityFrameworkCore.PS2.psd1",
"tools/EntityFrameworkCore.PS2.psm1",
@@ -4724,10 +3803,10 @@
"tools/netcoreapp2.0/any/ef.runtimeconfig.json"
]
},
- "Microsoft.Extensions.Caching.Abstractions/9.0.2": {
- "sha512": "a7QhA25n+BzSM5r5d7JznfyluMBGI7z3qyLlFviZ1Eiqv6DdiK27sLZdP/rpYirBM6UYAKxu5TbmfhIy13GN9A==",
+ "Microsoft.Extensions.Caching.Abstractions/8.0.0": {
+ "sha512": "3KuSxeHoNYdxVYfg2IRZCThcrlJ1XJqIXkAWikCsbm5C/bCjv7G0WoKDyuR98Q+T607QT2Zl5GsbGRkENcV2yQ==",
"type": "package",
- "path": "microsoft.extensions.caching.abstractions/9.0.2",
+ "path": "microsoft.extensions.caching.abstractions/8.0.0",
"files": [
".nupkg.metadata",
".signature.p7s",
@@ -4737,25 +3816,27 @@
"THIRD-PARTY-NOTICES.TXT",
"buildTransitive/net461/Microsoft.Extensions.Caching.Abstractions.targets",
"buildTransitive/net462/_._",
- "buildTransitive/net8.0/_._",
+ "buildTransitive/net6.0/_._",
"buildTransitive/netcoreapp2.0/Microsoft.Extensions.Caching.Abstractions.targets",
"lib/net462/Microsoft.Extensions.Caching.Abstractions.dll",
"lib/net462/Microsoft.Extensions.Caching.Abstractions.xml",
+ "lib/net6.0/Microsoft.Extensions.Caching.Abstractions.dll",
+ "lib/net6.0/Microsoft.Extensions.Caching.Abstractions.xml",
+ "lib/net7.0/Microsoft.Extensions.Caching.Abstractions.dll",
+ "lib/net7.0/Microsoft.Extensions.Caching.Abstractions.xml",
"lib/net8.0/Microsoft.Extensions.Caching.Abstractions.dll",
"lib/net8.0/Microsoft.Extensions.Caching.Abstractions.xml",
- "lib/net9.0/Microsoft.Extensions.Caching.Abstractions.dll",
- "lib/net9.0/Microsoft.Extensions.Caching.Abstractions.xml",
"lib/netstandard2.0/Microsoft.Extensions.Caching.Abstractions.dll",
"lib/netstandard2.0/Microsoft.Extensions.Caching.Abstractions.xml",
- "microsoft.extensions.caching.abstractions.9.0.2.nupkg.sha512",
+ "microsoft.extensions.caching.abstractions.8.0.0.nupkg.sha512",
"microsoft.extensions.caching.abstractions.nuspec",
"useSharedDesignerContext.txt"
]
},
- "Microsoft.Extensions.Caching.Memory/9.0.2": {
- "sha512": "AlEfp0DMz8E1h1Exi8LBrUCNmCYcGDfSM4F/uK1D1cYx/R3w0LVvlmjICqxqXTsy7BEZaCf5leRZY2FuPEiFaw==",
+ "Microsoft.Extensions.Caching.Memory/8.0.1": {
+ "sha512": "HFDnhYLccngrzyGgHkjEDU5FMLn4MpOsr5ElgsBMC4yx6lJh4jeWO7fHS8+TXPq+dgxCmUa/Trl8svObmwW4QA==",
"type": "package",
- "path": "microsoft.extensions.caching.memory/9.0.2",
+ "path": "microsoft.extensions.caching.memory/8.0.1",
"files": [
".nupkg.metadata",
".signature.p7s",
@@ -4765,25 +3846,27 @@
"THIRD-PARTY-NOTICES.TXT",
"buildTransitive/net461/Microsoft.Extensions.Caching.Memory.targets",
"buildTransitive/net462/_._",
- "buildTransitive/net8.0/_._",
+ "buildTransitive/net6.0/_._",
"buildTransitive/netcoreapp2.0/Microsoft.Extensions.Caching.Memory.targets",
"lib/net462/Microsoft.Extensions.Caching.Memory.dll",
"lib/net462/Microsoft.Extensions.Caching.Memory.xml",
+ "lib/net6.0/Microsoft.Extensions.Caching.Memory.dll",
+ "lib/net6.0/Microsoft.Extensions.Caching.Memory.xml",
+ "lib/net7.0/Microsoft.Extensions.Caching.Memory.dll",
+ "lib/net7.0/Microsoft.Extensions.Caching.Memory.xml",
"lib/net8.0/Microsoft.Extensions.Caching.Memory.dll",
"lib/net8.0/Microsoft.Extensions.Caching.Memory.xml",
- "lib/net9.0/Microsoft.Extensions.Caching.Memory.dll",
- "lib/net9.0/Microsoft.Extensions.Caching.Memory.xml",
"lib/netstandard2.0/Microsoft.Extensions.Caching.Memory.dll",
"lib/netstandard2.0/Microsoft.Extensions.Caching.Memory.xml",
- "microsoft.extensions.caching.memory.9.0.2.nupkg.sha512",
+ "microsoft.extensions.caching.memory.8.0.1.nupkg.sha512",
"microsoft.extensions.caching.memory.nuspec",
"useSharedDesignerContext.txt"
]
},
- "Microsoft.Extensions.Configuration/9.0.4": {
- "sha512": "KIVBrMbItnCJDd1RF4KEaE8jZwDJcDUJW5zXpbwQ05HNYTK1GveHxHK0B3SjgDJuR48GRACXAO+BLhL8h34S7g==",
+ "Microsoft.Extensions.Configuration/8.0.0": {
+ "sha512": "0J/9YNXTMWSZP2p2+nvl8p71zpSwokZXZuJW+VjdErkegAnFdO1XlqtA62SJtgVYHdKu3uPxJHcMR/r35HwFBA==",
"type": "package",
- "path": "microsoft.extensions.configuration/9.0.4",
+ "path": "microsoft.extensions.configuration/8.0.0",
"files": [
".nupkg.metadata",
".signature.p7s",
@@ -4793,25 +3876,27 @@
"THIRD-PARTY-NOTICES.TXT",
"buildTransitive/net461/Microsoft.Extensions.Configuration.targets",
"buildTransitive/net462/_._",
- "buildTransitive/net8.0/_._",
+ "buildTransitive/net6.0/_._",
"buildTransitive/netcoreapp2.0/Microsoft.Extensions.Configuration.targets",
"lib/net462/Microsoft.Extensions.Configuration.dll",
"lib/net462/Microsoft.Extensions.Configuration.xml",
+ "lib/net6.0/Microsoft.Extensions.Configuration.dll",
+ "lib/net6.0/Microsoft.Extensions.Configuration.xml",
+ "lib/net7.0/Microsoft.Extensions.Configuration.dll",
+ "lib/net7.0/Microsoft.Extensions.Configuration.xml",
"lib/net8.0/Microsoft.Extensions.Configuration.dll",
"lib/net8.0/Microsoft.Extensions.Configuration.xml",
- "lib/net9.0/Microsoft.Extensions.Configuration.dll",
- "lib/net9.0/Microsoft.Extensions.Configuration.xml",
"lib/netstandard2.0/Microsoft.Extensions.Configuration.dll",
"lib/netstandard2.0/Microsoft.Extensions.Configuration.xml",
- "microsoft.extensions.configuration.9.0.4.nupkg.sha512",
+ "microsoft.extensions.configuration.8.0.0.nupkg.sha512",
"microsoft.extensions.configuration.nuspec",
"useSharedDesignerContext.txt"
]
},
- "Microsoft.Extensions.Configuration.Abstractions/9.0.4": {
- "sha512": "0LN/DiIKvBrkqp7gkF3qhGIeZk6/B63PthAHjQsxymJfIBcz0kbf4/p/t4lMgggVxZ+flRi5xvTwlpPOoZk8fg==",
+ "Microsoft.Extensions.Configuration.Abstractions/8.0.0": {
+ "sha512": "3lE/iLSutpgX1CC0NOW70FJoGARRHbyKmG7dc0klnUZ9Dd9hS6N/POPWhKhMLCEuNN5nXEY5agmlFtH562vqhQ==",
"type": "package",
- "path": "microsoft.extensions.configuration.abstractions/9.0.4",
+ "path": "microsoft.extensions.configuration.abstractions/8.0.0",
"files": [
".nupkg.metadata",
".signature.p7s",
@@ -4821,17 +3906,19 @@
"THIRD-PARTY-NOTICES.TXT",
"buildTransitive/net461/Microsoft.Extensions.Configuration.Abstractions.targets",
"buildTransitive/net462/_._",
- "buildTransitive/net8.0/_._",
+ "buildTransitive/net6.0/_._",
"buildTransitive/netcoreapp2.0/Microsoft.Extensions.Configuration.Abstractions.targets",
"lib/net462/Microsoft.Extensions.Configuration.Abstractions.dll",
"lib/net462/Microsoft.Extensions.Configuration.Abstractions.xml",
+ "lib/net6.0/Microsoft.Extensions.Configuration.Abstractions.dll",
+ "lib/net6.0/Microsoft.Extensions.Configuration.Abstractions.xml",
+ "lib/net7.0/Microsoft.Extensions.Configuration.Abstractions.dll",
+ "lib/net7.0/Microsoft.Extensions.Configuration.Abstractions.xml",
"lib/net8.0/Microsoft.Extensions.Configuration.Abstractions.dll",
"lib/net8.0/Microsoft.Extensions.Configuration.Abstractions.xml",
- "lib/net9.0/Microsoft.Extensions.Configuration.Abstractions.dll",
- "lib/net9.0/Microsoft.Extensions.Configuration.Abstractions.xml",
"lib/netstandard2.0/Microsoft.Extensions.Configuration.Abstractions.dll",
"lib/netstandard2.0/Microsoft.Extensions.Configuration.Abstractions.xml",
- "microsoft.extensions.configuration.abstractions.9.0.4.nupkg.sha512",
+ "microsoft.extensions.configuration.abstractions.8.0.0.nupkg.sha512",
"microsoft.extensions.configuration.abstractions.nuspec",
"useSharedDesignerContext.txt"
]
@@ -4973,10 +4060,10 @@
"useSharedDesignerContext.txt"
]
},
- "Microsoft.Extensions.DependencyInjection/9.0.2": {
- "sha512": "ZffbJrskOZ40JTzcTyKwFHS5eACSWp2bUQBBApIgGV+es8RaTD4OxUG7XxFr3RIPLXtYQ1jQzF2DjKB5fZn7Qg==",
+ "Microsoft.Extensions.DependencyInjection/8.0.1": {
+ "sha512": "BmANAnR5Xd4Oqw7yQ75xOAYODybZQRzdeNucg7kS5wWKd2PNnMdYtJ2Vciy0QLylRmv42DGl5+AFL9izA6F1Rw==",
"type": "package",
- "path": "microsoft.extensions.dependencyinjection/9.0.2",
+ "path": "microsoft.extensions.dependencyinjection/8.0.1",
"files": [
".nupkg.metadata",
".signature.p7s",
@@ -4986,27 +4073,29 @@
"THIRD-PARTY-NOTICES.TXT",
"buildTransitive/net461/Microsoft.Extensions.DependencyInjection.targets",
"buildTransitive/net462/_._",
- "buildTransitive/net8.0/_._",
+ "buildTransitive/net6.0/_._",
"buildTransitive/netcoreapp2.0/Microsoft.Extensions.DependencyInjection.targets",
"lib/net462/Microsoft.Extensions.DependencyInjection.dll",
"lib/net462/Microsoft.Extensions.DependencyInjection.xml",
+ "lib/net6.0/Microsoft.Extensions.DependencyInjection.dll",
+ "lib/net6.0/Microsoft.Extensions.DependencyInjection.xml",
+ "lib/net7.0/Microsoft.Extensions.DependencyInjection.dll",
+ "lib/net7.0/Microsoft.Extensions.DependencyInjection.xml",
"lib/net8.0/Microsoft.Extensions.DependencyInjection.dll",
"lib/net8.0/Microsoft.Extensions.DependencyInjection.xml",
- "lib/net9.0/Microsoft.Extensions.DependencyInjection.dll",
- "lib/net9.0/Microsoft.Extensions.DependencyInjection.xml",
"lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.dll",
"lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.xml",
"lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.dll",
"lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.xml",
- "microsoft.extensions.dependencyinjection.9.0.2.nupkg.sha512",
+ "microsoft.extensions.dependencyinjection.8.0.1.nupkg.sha512",
"microsoft.extensions.dependencyinjection.nuspec",
"useSharedDesignerContext.txt"
]
},
- "Microsoft.Extensions.DependencyInjection.Abstractions/9.0.4": {
- "sha512": "UI0TQPVkS78bFdjkTodmkH0Fe8lXv9LnhGFKgKrsgUJ5a5FVdFRcgjIkBVLbGgdRhxWirxH/8IXUtEyYJx6GQg==",
+ "Microsoft.Extensions.DependencyInjection.Abstractions/8.0.2": {
+ "sha512": "3iE7UF7MQkCv1cxzCahz+Y/guQbTqieyxyaWKhrRO91itI9cOKO76OHeQDahqG4MmW5umr3CcCvGmK92lWNlbg==",
"type": "package",
- "path": "microsoft.extensions.dependencyinjection.abstractions/9.0.4",
+ "path": "microsoft.extensions.dependencyinjection.abstractions/8.0.2",
"files": [
".nupkg.metadata",
".signature.p7s",
@@ -5016,27 +4105,29 @@
"THIRD-PARTY-NOTICES.TXT",
"buildTransitive/net461/Microsoft.Extensions.DependencyInjection.Abstractions.targets",
"buildTransitive/net462/_._",
- "buildTransitive/net8.0/_._",
+ "buildTransitive/net6.0/_._",
"buildTransitive/netcoreapp2.0/Microsoft.Extensions.DependencyInjection.Abstractions.targets",
"lib/net462/Microsoft.Extensions.DependencyInjection.Abstractions.dll",
"lib/net462/Microsoft.Extensions.DependencyInjection.Abstractions.xml",
+ "lib/net6.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll",
+ "lib/net6.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml",
+ "lib/net7.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll",
+ "lib/net7.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml",
"lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll",
"lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml",
- "lib/net9.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll",
- "lib/net9.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml",
"lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll",
"lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml",
"lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.Abstractions.dll",
"lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.Abstractions.xml",
- "microsoft.extensions.dependencyinjection.abstractions.9.0.4.nupkg.sha512",
+ "microsoft.extensions.dependencyinjection.abstractions.8.0.2.nupkg.sha512",
"microsoft.extensions.dependencyinjection.abstractions.nuspec",
"useSharedDesignerContext.txt"
]
},
- "Microsoft.Extensions.DependencyModel/8.0.0": {
- "sha512": "NSmDw3K0ozNDgShSIpsZcbFIzBX4w28nDag+TfaQujkXGazBm+lid5onlWoCBy4VsLxqnnKjEBbGSJVWJMf43g==",
+ "Microsoft.Extensions.DependencyModel/8.0.2": {
+ "sha512": "mUBDZZRgZrSyFOsJ2qJJ9fXfqd/kXJwf3AiDoqLD9m6TjY5OO/vLNOb9fb4juC0487eq4hcGN/M2Rh/CKS7QYw==",
"type": "package",
- "path": "microsoft.extensions.dependencymodel/8.0.0",
+ "path": "microsoft.extensions.dependencymodel/8.0.2",
"files": [
".nupkg.metadata",
".signature.p7s",
@@ -5058,7 +4149,7 @@
"lib/net8.0/Microsoft.Extensions.DependencyModel.xml",
"lib/netstandard2.0/Microsoft.Extensions.DependencyModel.dll",
"lib/netstandard2.0/Microsoft.Extensions.DependencyModel.xml",
- "microsoft.extensions.dependencymodel.8.0.0.nupkg.sha512",
+ "microsoft.extensions.dependencymodel.8.0.2.nupkg.sha512",
"microsoft.extensions.dependencymodel.nuspec",
"useSharedDesignerContext.txt"
]
@@ -5239,10 +4330,10 @@
"useSharedDesignerContext.txt"
]
},
- "Microsoft.Extensions.Logging/9.0.2": {
- "sha512": "loV/0UNpt2bD+6kCDzFALVE63CDtqzPeC0LAetkdhiEr/tTNbvOlQ7CBResH7BQBd3cikrwiBfaHdyHMFUlc2g==",
+ "Microsoft.Extensions.Logging/8.0.1": {
+ "sha512": "4x+pzsQEbqxhNf1QYRr5TDkLP9UsLT3A6MdRKDDEgrW7h1ljiEPgTNhKYUhNCCAaVpQECVQ+onA91PTPnIp6Lw==",
"type": "package",
- "path": "microsoft.extensions.logging/9.0.2",
+ "path": "microsoft.extensions.logging/8.0.1",
"files": [
".nupkg.metadata",
".signature.p7s",
@@ -5252,27 +4343,29 @@
"THIRD-PARTY-NOTICES.TXT",
"buildTransitive/net461/Microsoft.Extensions.Logging.targets",
"buildTransitive/net462/_._",
- "buildTransitive/net8.0/_._",
+ "buildTransitive/net6.0/_._",
"buildTransitive/netcoreapp2.0/Microsoft.Extensions.Logging.targets",
"lib/net462/Microsoft.Extensions.Logging.dll",
"lib/net462/Microsoft.Extensions.Logging.xml",
+ "lib/net6.0/Microsoft.Extensions.Logging.dll",
+ "lib/net6.0/Microsoft.Extensions.Logging.xml",
+ "lib/net7.0/Microsoft.Extensions.Logging.dll",
+ "lib/net7.0/Microsoft.Extensions.Logging.xml",
"lib/net8.0/Microsoft.Extensions.Logging.dll",
"lib/net8.0/Microsoft.Extensions.Logging.xml",
- "lib/net9.0/Microsoft.Extensions.Logging.dll",
- "lib/net9.0/Microsoft.Extensions.Logging.xml",
"lib/netstandard2.0/Microsoft.Extensions.Logging.dll",
"lib/netstandard2.0/Microsoft.Extensions.Logging.xml",
"lib/netstandard2.1/Microsoft.Extensions.Logging.dll",
"lib/netstandard2.1/Microsoft.Extensions.Logging.xml",
- "microsoft.extensions.logging.9.0.2.nupkg.sha512",
+ "microsoft.extensions.logging.8.0.1.nupkg.sha512",
"microsoft.extensions.logging.nuspec",
"useSharedDesignerContext.txt"
]
},
- "Microsoft.Extensions.Logging.Abstractions/9.0.2": {
- "sha512": "dV9s2Lamc8jSaqhl2BQSPn/AryDIH2sSbQUyLitLXV0ROmsb+SROnn2cH939JFbsNrnf3mIM3GNRKT7P0ldwLg==",
+ "Microsoft.Extensions.Logging.Abstractions/8.0.3": {
+ "sha512": "dL0QGToTxggRLMYY4ZYX5AMwBb+byQBd/5dMiZE07Nv73o6I5Are3C7eQTh7K2+A4ct0PVISSr7TZANbiNb2yQ==",
"type": "package",
- "path": "microsoft.extensions.logging.abstractions/9.0.2",
+ "path": "microsoft.extensions.logging.abstractions/8.0.3",
"files": [
".nupkg.metadata",
".signature.p7s",
@@ -5324,45 +4417,28 @@
"analyzers/dotnet/roslyn4.4/cs/zh-Hant/Microsoft.Extensions.Logging.Generators.resources.dll",
"buildTransitive/net461/Microsoft.Extensions.Logging.Abstractions.targets",
"buildTransitive/net462/Microsoft.Extensions.Logging.Abstractions.targets",
- "buildTransitive/net8.0/Microsoft.Extensions.Logging.Abstractions.targets",
+ "buildTransitive/net6.0/Microsoft.Extensions.Logging.Abstractions.targets",
"buildTransitive/netcoreapp2.0/Microsoft.Extensions.Logging.Abstractions.targets",
"buildTransitive/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.targets",
"lib/net462/Microsoft.Extensions.Logging.Abstractions.dll",
"lib/net462/Microsoft.Extensions.Logging.Abstractions.xml",
+ "lib/net6.0/Microsoft.Extensions.Logging.Abstractions.dll",
+ "lib/net6.0/Microsoft.Extensions.Logging.Abstractions.xml",
+ "lib/net7.0/Microsoft.Extensions.Logging.Abstractions.dll",
+ "lib/net7.0/Microsoft.Extensions.Logging.Abstractions.xml",
"lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll",
"lib/net8.0/Microsoft.Extensions.Logging.Abstractions.xml",
- "lib/net9.0/Microsoft.Extensions.Logging.Abstractions.dll",
- "lib/net9.0/Microsoft.Extensions.Logging.Abstractions.xml",
"lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.dll",
"lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.xml",
- "microsoft.extensions.logging.abstractions.9.0.2.nupkg.sha512",
+ "microsoft.extensions.logging.abstractions.8.0.3.nupkg.sha512",
"microsoft.extensions.logging.abstractions.nuspec",
"useSharedDesignerContext.txt"
]
},
- "Microsoft.Extensions.ObjectPool/6.0.3": {
- "sha512": "IbQUEZr/LxxpPxkXDmKaemMeQNPjdHfk87HtTsI18a3RVgad0NOJSRaJ20hcesqL45PLcpQHR8xrPP7wZKbFQQ==",
+ "Microsoft.Extensions.Options/8.0.2": {
+ "sha512": "dWGKvhFybsaZpGmzkGCbNNwBD1rVlWzrZKANLW/CcbFJpCEceMCGzT7zZwHOGBCbwM0SzBuceMj5HN1LKV1QqA==",
"type": "package",
- "path": "microsoft.extensions.objectpool/6.0.3",
- "files": [
- ".nupkg.metadata",
- ".signature.p7s",
- "Icon.png",
- "THIRD-PARTY-NOTICES.TXT",
- "lib/net461/Microsoft.Extensions.ObjectPool.dll",
- "lib/net461/Microsoft.Extensions.ObjectPool.xml",
- "lib/net6.0/Microsoft.Extensions.ObjectPool.dll",
- "lib/net6.0/Microsoft.Extensions.ObjectPool.xml",
- "lib/netstandard2.0/Microsoft.Extensions.ObjectPool.dll",
- "lib/netstandard2.0/Microsoft.Extensions.ObjectPool.xml",
- "microsoft.extensions.objectpool.6.0.3.nupkg.sha512",
- "microsoft.extensions.objectpool.nuspec"
- ]
- },
- "Microsoft.Extensions.Options/9.0.4": {
- "sha512": "fiFI2+58kicqVZyt/6obqoFwHiab7LC4FkQ3mmiBJ28Yy4fAvy2+v9MRnSvvlOO8chTOjKsdafFl/K9veCPo5g==",
- "type": "package",
- "path": "microsoft.extensions.options/9.0.4",
+ "path": "microsoft.extensions.options/8.0.2",
"files": [
".nupkg.metadata",
".signature.p7s",
@@ -5386,20 +4462,22 @@
"analyzers/dotnet/roslyn4.4/cs/zh-Hant/Microsoft.Extensions.Options.SourceGeneration.resources.dll",
"buildTransitive/net461/Microsoft.Extensions.Options.targets",
"buildTransitive/net462/Microsoft.Extensions.Options.targets",
- "buildTransitive/net8.0/Microsoft.Extensions.Options.targets",
+ "buildTransitive/net6.0/Microsoft.Extensions.Options.targets",
"buildTransitive/netcoreapp2.0/Microsoft.Extensions.Options.targets",
"buildTransitive/netstandard2.0/Microsoft.Extensions.Options.targets",
"lib/net462/Microsoft.Extensions.Options.dll",
"lib/net462/Microsoft.Extensions.Options.xml",
+ "lib/net6.0/Microsoft.Extensions.Options.dll",
+ "lib/net6.0/Microsoft.Extensions.Options.xml",
+ "lib/net7.0/Microsoft.Extensions.Options.dll",
+ "lib/net7.0/Microsoft.Extensions.Options.xml",
"lib/net8.0/Microsoft.Extensions.Options.dll",
"lib/net8.0/Microsoft.Extensions.Options.xml",
- "lib/net9.0/Microsoft.Extensions.Options.dll",
- "lib/net9.0/Microsoft.Extensions.Options.xml",
"lib/netstandard2.0/Microsoft.Extensions.Options.dll",
"lib/netstandard2.0/Microsoft.Extensions.Options.xml",
"lib/netstandard2.1/Microsoft.Extensions.Options.dll",
"lib/netstandard2.1/Microsoft.Extensions.Options.xml",
- "microsoft.extensions.options.9.0.4.nupkg.sha512",
+ "microsoft.extensions.options.8.0.2.nupkg.sha512",
"microsoft.extensions.options.nuspec",
"useSharedDesignerContext.txt"
]
@@ -5434,10 +4512,10 @@
"useSharedDesignerContext.txt"
]
},
- "Microsoft.Extensions.Primitives/9.0.4": {
- "sha512": "SPFyMjyku1nqTFFJ928JAMd0QnRe4xjE7KeKnZMWXf3xk+6e0WiOZAluYtLdbJUXtsl2cCRSi8cBquJ408k8RA==",
+ "Microsoft.Extensions.Primitives/8.0.0": {
+ "sha512": "bXJEZrW9ny8vjMF1JV253WeLhpEVzFo1lyaZu1vQ4ZxWUlVvknZ/+ftFgVheLubb4eZPSwwxBeqS1JkCOjxd8g==",
"type": "package",
- "path": "microsoft.extensions.primitives/9.0.4",
+ "path": "microsoft.extensions.primitives/8.0.0",
"files": [
".nupkg.metadata",
".signature.p7s",
@@ -5447,17 +4525,19 @@
"THIRD-PARTY-NOTICES.TXT",
"buildTransitive/net461/Microsoft.Extensions.Primitives.targets",
"buildTransitive/net462/_._",
- "buildTransitive/net8.0/_._",
+ "buildTransitive/net6.0/_._",
"buildTransitive/netcoreapp2.0/Microsoft.Extensions.Primitives.targets",
"lib/net462/Microsoft.Extensions.Primitives.dll",
"lib/net462/Microsoft.Extensions.Primitives.xml",
+ "lib/net6.0/Microsoft.Extensions.Primitives.dll",
+ "lib/net6.0/Microsoft.Extensions.Primitives.xml",
+ "lib/net7.0/Microsoft.Extensions.Primitives.dll",
+ "lib/net7.0/Microsoft.Extensions.Primitives.xml",
"lib/net8.0/Microsoft.Extensions.Primitives.dll",
"lib/net8.0/Microsoft.Extensions.Primitives.xml",
- "lib/net9.0/Microsoft.Extensions.Primitives.dll",
- "lib/net9.0/Microsoft.Extensions.Primitives.xml",
"lib/netstandard2.0/Microsoft.Extensions.Primitives.dll",
"lib/netstandard2.0/Microsoft.Extensions.Primitives.xml",
- "microsoft.extensions.primitives.9.0.4.nupkg.sha512",
+ "microsoft.extensions.primitives.8.0.0.nupkg.sha512",
"microsoft.extensions.primitives.nuspec",
"useSharedDesignerContext.txt"
]
@@ -5604,44 +4684,22 @@
"microsoft.identitymodel.tokens.nuspec"
]
},
- "Microsoft.OData.Core/8.2.2": {
- "sha512": "VY3sZzBOxePvRuCeBlEiJ2LNxjr8ReOKj6YWXi5i8vG3TLWo+CmIc9fiE8WDoe90NcCaBnwK6Ub2fWnpNEbLxA==",
+ "Microsoft.NETCore.Platforms/5.0.0": {
+ "sha512": "VyPlqzH2wavqquTcYpkIIAQ6WdenuKoFN0BdYBbCWsclXacSOHNQn66Gt4z5NBqEYW0FAPm5rlvki9ZiCij5xQ==",
"type": "package",
- "path": "microsoft.odata.core/8.2.2",
+ "path": "microsoft.netcore.platforms/5.0.0",
"files": [
".nupkg.metadata",
".signature.p7s",
- "lib/net8.0/Microsoft.OData.Core.dll",
- "lib/net8.0/Microsoft.OData.Core.xml",
- "microsoft.odata.core.8.2.2.nupkg.sha512",
- "microsoft.odata.core.nuspec"
- ]
- },
- "Microsoft.OData.Edm/8.2.2": {
- "sha512": "cHMsoV059EPNLD+SJFxIM8rKLUA3kKifflfUQy+7hWKZpmw+YhLi7qeWSSA9UDRVd0sqApFU8gdqHjordJoTIg==",
- "type": "package",
- "path": "microsoft.odata.edm/8.2.2",
- "files": [
- ".nupkg.metadata",
- ".signature.p7s",
- "lib/net8.0/Microsoft.OData.Edm.dll",
- "lib/net8.0/Microsoft.OData.Edm.xml",
- "microsoft.odata.edm.8.2.2.nupkg.sha512",
- "microsoft.odata.edm.nuspec"
- ]
- },
- "Microsoft.OData.ModelBuilder/2.0.0": {
- "sha512": "QzySAMGhLCMyLNHSTIYKFjJXetoDeGkRS/7JEjm7eMJlyu1Qv4MfL1CXQFg2uijizNu2jQojT0mdCpawXbyv8Q==",
- "type": "package",
- "path": "microsoft.odata.modelbuilder/2.0.0",
- "files": [
- ".nupkg.metadata",
- ".signature.p7s",
- "images/odata.png",
- "lib/net8.0/Microsoft.OData.ModelBuilder.dll",
- "lib/net8.0/Microsoft.OData.ModelBuilder.xml",
- "microsoft.odata.modelbuilder.2.0.0.nupkg.sha512",
- "microsoft.odata.modelbuilder.nuspec"
+ "Icon.png",
+ "LICENSE.TXT",
+ "THIRD-PARTY-NOTICES.TXT",
+ "lib/netstandard1.0/_._",
+ "microsoft.netcore.platforms.5.0.0.nupkg.sha512",
+ "microsoft.netcore.platforms.nuspec",
+ "runtime.json",
+ "useSharedDesignerContext.txt",
+ "version.txt"
]
},
"Microsoft.OpenApi/1.6.22": {
@@ -5659,19 +4717,6 @@
"microsoft.openapi.nuspec"
]
},
- "Microsoft.Spatial/8.2.2": {
- "sha512": "iG0pF7o7bR9/J+WcSNGEW0DzewO8Te/T+5FJ9EIuXcPkVE96cqc6Cf57ygqlQZj5jmf+D/gOtBJjPc4iyeI0Aw==",
- "type": "package",
- "path": "microsoft.spatial/8.2.2",
- "files": [
- ".nupkg.metadata",
- ".signature.p7s",
- "lib/net8.0/Microsoft.Spatial.dll",
- "lib/net8.0/Microsoft.Spatial.xml",
- "microsoft.spatial.8.2.2.nupkg.sha512",
- "microsoft.spatial.nuspec"
- ]
- },
"Microsoft.Win32.Registry/5.0.0": {
"sha512": "dDoKi0PnDz31yAyETfRntsLArTlVAVzUzCIvvEDsDsucrl33Dl8pIJG06ePTJTI3tGpeyHS9Cq7Foc/s4EeKcg==",
"type": "package",
@@ -5716,35 +4761,6 @@
"version.txt"
]
},
- "Microsoft.Win32.SystemEvents/6.0.0": {
- "sha512": "hqTM5628jSsQiv+HGpiq3WKBl2c8v1KZfby2J6Pr7pEPlK9waPdgEO6b8A/+/xn/yZ9ulv8HuqK71ONy2tg67A==",
- "type": "package",
- "path": "microsoft.win32.systemevents/6.0.0",
- "files": [
- ".nupkg.metadata",
- ".signature.p7s",
- "Icon.png",
- "LICENSE.TXT",
- "THIRD-PARTY-NOTICES.TXT",
- "buildTransitive/netcoreapp2.0/Microsoft.Win32.SystemEvents.targets",
- "buildTransitive/netcoreapp3.1/_._",
- "lib/net461/Microsoft.Win32.SystemEvents.dll",
- "lib/net461/Microsoft.Win32.SystemEvents.xml",
- "lib/net6.0/Microsoft.Win32.SystemEvents.dll",
- "lib/net6.0/Microsoft.Win32.SystemEvents.xml",
- "lib/netcoreapp3.1/Microsoft.Win32.SystemEvents.dll",
- "lib/netcoreapp3.1/Microsoft.Win32.SystemEvents.xml",
- "lib/netstandard2.0/Microsoft.Win32.SystemEvents.dll",
- "lib/netstandard2.0/Microsoft.Win32.SystemEvents.xml",
- "microsoft.win32.systemevents.6.0.0.nupkg.sha512",
- "microsoft.win32.systemevents.nuspec",
- "runtimes/win/lib/net6.0/Microsoft.Win32.SystemEvents.dll",
- "runtimes/win/lib/net6.0/Microsoft.Win32.SystemEvents.xml",
- "runtimes/win/lib/netcoreapp3.1/Microsoft.Win32.SystemEvents.dll",
- "runtimes/win/lib/netcoreapp3.1/Microsoft.Win32.SystemEvents.xml",
- "useSharedDesignerContext.txt"
- ]
- },
"MongoDB.Analyzer/1.5.0": {
"sha512": "ujrUe6NeLGW9q8ABseYY/NFx7pc1G/LshtVfLMONV02+fEy0jUDsXLHU7YvuARjJhJI7Mgz88tfvCncccUmerw==",
"type": "package",
@@ -5803,21 +4819,6 @@
"packageIcon.png"
]
},
- "Mono.Reflection/2.0.0": {
- "sha512": "gipqt3dO1NsgM9wfUsQeNVLYmSskDfaN+muNQHLJYkCuYxx2bIp6gAA8j2Rp+Ey6YNHloZv+BJY56r9fl3tfew==",
- "type": "package",
- "path": "mono.reflection/2.0.0",
- "files": [
- ".nupkg.metadata",
- ".signature.p7s",
- "lib/net40/Mono.Reflection.dll",
- "lib/net40/Mono.Reflection.pdb",
- "lib/netstandard2.0/Mono.Reflection.dll",
- "lib/netstandard2.0/Mono.Reflection.pdb",
- "mono.reflection.2.0.0.nupkg.sha512",
- "mono.reflection.nuspec"
- ]
- },
"Mono.TextTemplating/2.2.1": {
"sha512": "KZYeKBET/2Z0gY1WlTAK7+RHTl7GSbtvTLDXEZZojUdAPqpQNDL6tHv7VUpqfX5VEOh+uRGKaZXkuD253nEOBQ==",
"type": "package",
@@ -6181,10 +5182,10 @@
"pipelines.sockets.unofficial.nuspec"
]
},
- "Pomelo.EntityFrameworkCore.MySql/8.0.2": {
- "sha512": "XjnlcxVBLnEMbyEc5cZzgZeDyLvAniACZQ04W1slWN0f4rmfNzl98gEMvHnFH0fMDF06z9MmgGi/Sr7hJ+BVnw==",
+ "Pomelo.EntityFrameworkCore.MySql/8.0.3": {
+ "sha512": "gOHP6v/nFp5V/FgHqv9mZocGqCLGofihEX9dTbLhiXX3H7SJHmGX70GIPUpiqLT+1jIfDxg1PZh9MTUKuk7Kig==",
"type": "package",
- "path": "pomelo.entityframeworkcore.mysql/8.0.2",
+ "path": "pomelo.entityframeworkcore.mysql/8.0.3",
"files": [
".nupkg.metadata",
".signature.p7s",
@@ -6192,7 +5193,7 @@
"icon.png",
"lib/net8.0/Pomelo.EntityFrameworkCore.MySql.dll",
"lib/net8.0/Pomelo.EntityFrameworkCore.MySql.xml",
- "pomelo.entityframeworkcore.mysql.8.0.2.nupkg.sha512",
+ "pomelo.entityframeworkcore.mysql.8.0.3.nupkg.sha512",
"pomelo.entityframeworkcore.mysql.nuspec"
]
},
@@ -6213,69 +5214,6 @@
"rabbitmq.client.nuspec"
]
},
- "runtime.native.System.Data.SqlClient.sni/4.7.0": {
- "sha512": "9kyFSIdN3T0qjDQ2R0HRXYIhS3l5psBzQi6qqhdLz+SzFyEy4sVxNOke+yyYv8Cu8rPER12c3RDjLT8wF3WBYQ==",
- "type": "package",
- "path": "runtime.native.system.data.sqlclient.sni/4.7.0",
- "files": [
- ".nupkg.metadata",
- ".signature.p7s",
- "LICENSE.TXT",
- "THIRD-PARTY-NOTICES.TXT",
- "runtime.native.system.data.sqlclient.sni.4.7.0.nupkg.sha512",
- "runtime.native.system.data.sqlclient.sni.nuspec",
- "useSharedDesignerContext.txt",
- "version.txt"
- ]
- },
- "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni/4.4.0": {
- "sha512": "LbrynESTp3bm5O/+jGL8v0Qg5SJlTV08lpIpFesXjF6uGNMWqFnUQbYBJwZTeua6E/Y7FIM1C54Ey1btLWupdg==",
- "type": "package",
- "path": "runtime.win-arm64.runtime.native.system.data.sqlclient.sni/4.4.0",
- "files": [
- ".nupkg.metadata",
- ".signature.p7s",
- "ThirdPartyNotices.txt",
- "dotnet_library_license.txt",
- "runtime.win-arm64.runtime.native.system.data.sqlclient.sni.4.4.0.nupkg.sha512",
- "runtime.win-arm64.runtime.native.system.data.sqlclient.sni.nuspec",
- "runtimes/win-arm64/native/sni.dll",
- "useSharedDesignerContext.txt",
- "version.txt"
- ]
- },
- "runtime.win-x64.runtime.native.System.Data.SqlClient.sni/4.4.0": {
- "sha512": "38ugOfkYJqJoX9g6EYRlZB5U2ZJH51UP8ptxZgdpS07FgOEToV+lS11ouNK2PM12Pr6X/PpT5jK82G3DwH/SxQ==",
- "type": "package",
- "path": "runtime.win-x64.runtime.native.system.data.sqlclient.sni/4.4.0",
- "files": [
- ".nupkg.metadata",
- ".signature.p7s",
- "ThirdPartyNotices.txt",
- "dotnet_library_license.txt",
- "runtime.win-x64.runtime.native.system.data.sqlclient.sni.4.4.0.nupkg.sha512",
- "runtime.win-x64.runtime.native.system.data.sqlclient.sni.nuspec",
- "runtimes/win-x64/native/sni.dll",
- "useSharedDesignerContext.txt",
- "version.txt"
- ]
- },
- "runtime.win-x86.runtime.native.System.Data.SqlClient.sni/4.4.0": {
- "sha512": "YhEdSQUsTx+C8m8Bw7ar5/VesXvCFMItyZF7G1AUY+OM0VPZUOeAVpJ4Wl6fydBGUYZxojTDR3I6Bj/+BPkJNA==",
- "type": "package",
- "path": "runtime.win-x86.runtime.native.system.data.sqlclient.sni/4.4.0",
- "files": [
- ".nupkg.metadata",
- ".signature.p7s",
- "ThirdPartyNotices.txt",
- "dotnet_library_license.txt",
- "runtime.win-x86.runtime.native.system.data.sqlclient.sni.4.4.0.nupkg.sha512",
- "runtime.win-x86.runtime.native.system.data.sqlclient.sni.nuspec",
- "runtimes/win-x86/native/sni.dll",
- "useSharedDesignerContext.txt",
- "version.txt"
- ]
- },
"SharpCompress/0.30.1": {
"sha512": "XqD4TpfyYGa7QTPzaGlMVbcecKnXy4YmYLDWrU+JIj7IuRNl7DH2END+Ll7ekWIY8o3dAMWLFDE1xdhfIWD1nw==",
"type": "package",
@@ -6508,27 +5446,25 @@
"version.txt"
]
},
- "System.CodeDom/6.0.0": {
- "sha512": "CPc6tWO1LAer3IzfZufDBRL+UZQcj5uS207NHALQzP84Vp/z6wF0Aa0YZImOQY8iStY0A2zI/e3ihKNPfUm8XA==",
+ "System.CodeDom/4.4.0": {
+ "sha512": "2sCCb7doXEwtYAbqzbF/8UAeDRMNmPaQbU2q50Psg1J9KzumyVVCgKQY8s53WIPTufNT0DpSe9QRvVjOzfDWBA==",
"type": "package",
- "path": "system.codedom/6.0.0",
+ "path": "system.codedom/4.4.0",
"files": [
".nupkg.metadata",
".signature.p7s",
- "Icon.png",
"LICENSE.TXT",
"THIRD-PARTY-NOTICES.TXT",
- "buildTransitive/netcoreapp2.0/System.CodeDom.targets",
- "buildTransitive/netcoreapp3.1/_._",
"lib/net461/System.CodeDom.dll",
- "lib/net461/System.CodeDom.xml",
- "lib/net6.0/System.CodeDom.dll",
- "lib/net6.0/System.CodeDom.xml",
"lib/netstandard2.0/System.CodeDom.dll",
- "lib/netstandard2.0/System.CodeDom.xml",
- "system.codedom.6.0.0.nupkg.sha512",
+ "ref/net461/System.CodeDom.dll",
+ "ref/net461/System.CodeDom.xml",
+ "ref/netstandard2.0/System.CodeDom.dll",
+ "ref/netstandard2.0/System.CodeDom.xml",
+ "system.codedom.4.4.0.nupkg.sha512",
"system.codedom.nuspec",
- "useSharedDesignerContext.txt"
+ "useSharedDesignerContext.txt",
+ "version.txt"
]
},
"System.Collections.Immutable/6.0.0": {
@@ -6554,96 +5490,6 @@
"useSharedDesignerContext.txt"
]
},
- "System.ComponentModel.Annotations/5.0.0": {
- "sha512": "dMkqfy2el8A8/I76n2Hi1oBFEbG1SfxD2l5nhwXV3XjlnOmwxJlQbYpJH4W51odnU9sARCSAgv7S3CyAFMkpYg==",
- "type": "package",
- "path": "system.componentmodel.annotations/5.0.0",
- "files": [
- ".nupkg.metadata",
- ".signature.p7s",
- "Icon.png",
- "LICENSE.TXT",
- "THIRD-PARTY-NOTICES.TXT",
- "lib/MonoAndroid10/_._",
- "lib/MonoTouch10/_._",
- "lib/net45/_._",
- "lib/net461/System.ComponentModel.Annotations.dll",
- "lib/netcore50/System.ComponentModel.Annotations.dll",
- "lib/netstandard1.4/System.ComponentModel.Annotations.dll",
- "lib/netstandard2.0/System.ComponentModel.Annotations.dll",
- "lib/netstandard2.1/System.ComponentModel.Annotations.dll",
- "lib/netstandard2.1/System.ComponentModel.Annotations.xml",
- "lib/portable-net45+win8/_._",
- "lib/win8/_._",
- "lib/xamarinios10/_._",
- "lib/xamarinmac20/_._",
- "lib/xamarintvos10/_._",
- "lib/xamarinwatchos10/_._",
- "ref/MonoAndroid10/_._",
- "ref/MonoTouch10/_._",
- "ref/net45/_._",
- "ref/net461/System.ComponentModel.Annotations.dll",
- "ref/net461/System.ComponentModel.Annotations.xml",
- "ref/netcore50/System.ComponentModel.Annotations.dll",
- "ref/netcore50/System.ComponentModel.Annotations.xml",
- "ref/netcore50/de/System.ComponentModel.Annotations.xml",
- "ref/netcore50/es/System.ComponentModel.Annotations.xml",
- "ref/netcore50/fr/System.ComponentModel.Annotations.xml",
- "ref/netcore50/it/System.ComponentModel.Annotations.xml",
- "ref/netcore50/ja/System.ComponentModel.Annotations.xml",
- "ref/netcore50/ko/System.ComponentModel.Annotations.xml",
- "ref/netcore50/ru/System.ComponentModel.Annotations.xml",
- "ref/netcore50/zh-hans/System.ComponentModel.Annotations.xml",
- "ref/netcore50/zh-hant/System.ComponentModel.Annotations.xml",
- "ref/netstandard1.1/System.ComponentModel.Annotations.dll",
- "ref/netstandard1.1/System.ComponentModel.Annotations.xml",
- "ref/netstandard1.1/de/System.ComponentModel.Annotations.xml",
- "ref/netstandard1.1/es/System.ComponentModel.Annotations.xml",
- "ref/netstandard1.1/fr/System.ComponentModel.Annotations.xml",
- "ref/netstandard1.1/it/System.ComponentModel.Annotations.xml",
- "ref/netstandard1.1/ja/System.ComponentModel.Annotations.xml",
- "ref/netstandard1.1/ko/System.ComponentModel.Annotations.xml",
- "ref/netstandard1.1/ru/System.ComponentModel.Annotations.xml",
- "ref/netstandard1.1/zh-hans/System.ComponentModel.Annotations.xml",
- "ref/netstandard1.1/zh-hant/System.ComponentModel.Annotations.xml",
- "ref/netstandard1.3/System.ComponentModel.Annotations.dll",
- "ref/netstandard1.3/System.ComponentModel.Annotations.xml",
- "ref/netstandard1.3/de/System.ComponentModel.Annotations.xml",
- "ref/netstandard1.3/es/System.ComponentModel.Annotations.xml",
- "ref/netstandard1.3/fr/System.ComponentModel.Annotations.xml",
- "ref/netstandard1.3/it/System.ComponentModel.Annotations.xml",
- "ref/netstandard1.3/ja/System.ComponentModel.Annotations.xml",
- "ref/netstandard1.3/ko/System.ComponentModel.Annotations.xml",
- "ref/netstandard1.3/ru/System.ComponentModel.Annotations.xml",
- "ref/netstandard1.3/zh-hans/System.ComponentModel.Annotations.xml",
- "ref/netstandard1.3/zh-hant/System.ComponentModel.Annotations.xml",
- "ref/netstandard1.4/System.ComponentModel.Annotations.dll",
- "ref/netstandard1.4/System.ComponentModel.Annotations.xml",
- "ref/netstandard1.4/de/System.ComponentModel.Annotations.xml",
- "ref/netstandard1.4/es/System.ComponentModel.Annotations.xml",
- "ref/netstandard1.4/fr/System.ComponentModel.Annotations.xml",
- "ref/netstandard1.4/it/System.ComponentModel.Annotations.xml",
- "ref/netstandard1.4/ja/System.ComponentModel.Annotations.xml",
- "ref/netstandard1.4/ko/System.ComponentModel.Annotations.xml",
- "ref/netstandard1.4/ru/System.ComponentModel.Annotations.xml",
- "ref/netstandard1.4/zh-hans/System.ComponentModel.Annotations.xml",
- "ref/netstandard1.4/zh-hant/System.ComponentModel.Annotations.xml",
- "ref/netstandard2.0/System.ComponentModel.Annotations.dll",
- "ref/netstandard2.0/System.ComponentModel.Annotations.xml",
- "ref/netstandard2.1/System.ComponentModel.Annotations.dll",
- "ref/netstandard2.1/System.ComponentModel.Annotations.xml",
- "ref/portable-net45+win8/_._",
- "ref/win8/_._",
- "ref/xamarinios10/_._",
- "ref/xamarinmac20/_._",
- "ref/xamarintvos10/_._",
- "ref/xamarinwatchos10/_._",
- "system.componentmodel.annotations.5.0.0.nupkg.sha512",
- "system.componentmodel.annotations.nuspec",
- "useSharedDesignerContext.txt",
- "version.txt"
- ]
- },
"System.Composition/6.0.0": {
"sha512": "d7wMuKQtfsxUa7S13tITC8n1cQzewuhD5iDjZtK2prwFfKVzdYtgrTHgjaV03Zq7feGQ5gkP85tJJntXwInsJA==",
"type": "package",
@@ -6776,121 +5622,10 @@
"useSharedDesignerContext.txt"
]
},
- "System.Configuration.ConfigurationManager/6.0.1": {
- "sha512": "jXw9MlUu/kRfEU0WyTptAVueupqIeE3/rl0EZDMlf8pcvJnitQ8HeVEp69rZdaStXwTV72boi/Bhw8lOeO+U2w==",
+ "System.Diagnostics.DiagnosticSource/8.0.0": {
+ "sha512": "c9xLpVz6PL9lp/djOWtk5KPDZq3cSYpmXoJQY524EOtuFl5z9ZtsotpsyrDW40U1DRnQSYvcPKEUV0X//u6gkQ==",
"type": "package",
- "path": "system.configuration.configurationmanager/6.0.1",
- "files": [
- ".nupkg.metadata",
- ".signature.p7s",
- "Icon.png",
- "LICENSE.TXT",
- "THIRD-PARTY-NOTICES.TXT",
- "buildTransitive/netcoreapp2.0/System.Configuration.ConfigurationManager.targets",
- "buildTransitive/netcoreapp3.1/_._",
- "lib/net461/System.Configuration.ConfigurationManager.dll",
- "lib/net461/System.Configuration.ConfigurationManager.xml",
- "lib/net6.0/System.Configuration.ConfigurationManager.dll",
- "lib/net6.0/System.Configuration.ConfigurationManager.xml",
- "lib/netstandard2.0/System.Configuration.ConfigurationManager.dll",
- "lib/netstandard2.0/System.Configuration.ConfigurationManager.xml",
- "runtimes/win/lib/net461/System.Configuration.ConfigurationManager.dll",
- "runtimes/win/lib/net461/System.Configuration.ConfigurationManager.xml",
- "system.configuration.configurationmanager.6.0.1.nupkg.sha512",
- "system.configuration.configurationmanager.nuspec",
- "useSharedDesignerContext.txt"
- ]
- },
- "System.Data.SqlClient/4.8.6": {
- "sha512": "2Ij/LCaTQRyAi5lAv7UUTV9R2FobC8xN9mE0fXBZohum/xLl8IZVmE98Rq5ugQHjCgTBRKqpXRb4ORulRdA6Ig==",
- "type": "package",
- "path": "system.data.sqlclient/4.8.6",
- "files": [
- ".nupkg.metadata",
- ".signature.p7s",
- "Icon.png",
- "LICENSE.TXT",
- "THIRD-PARTY-NOTICES.TXT",
- "lib/MonoAndroid10/_._",
- "lib/MonoTouch10/_._",
- "lib/net451/System.Data.SqlClient.dll",
- "lib/net46/System.Data.SqlClient.dll",
- "lib/net461/System.Data.SqlClient.dll",
- "lib/net461/System.Data.SqlClient.xml",
- "lib/netcoreapp2.1/System.Data.SqlClient.dll",
- "lib/netcoreapp2.1/System.Data.SqlClient.xml",
- "lib/netstandard1.2/System.Data.SqlClient.dll",
- "lib/netstandard1.2/System.Data.SqlClient.xml",
- "lib/netstandard1.3/System.Data.SqlClient.dll",
- "lib/netstandard1.3/System.Data.SqlClient.xml",
- "lib/netstandard2.0/System.Data.SqlClient.dll",
- "lib/netstandard2.0/System.Data.SqlClient.xml",
- "lib/xamarinios10/_._",
- "lib/xamarinmac20/_._",
- "lib/xamarintvos10/_._",
- "lib/xamarinwatchos10/_._",
- "ref/MonoAndroid10/_._",
- "ref/MonoTouch10/_._",
- "ref/net451/System.Data.SqlClient.dll",
- "ref/net46/System.Data.SqlClient.dll",
- "ref/net461/System.Data.SqlClient.dll",
- "ref/net461/System.Data.SqlClient.xml",
- "ref/netcoreapp2.1/System.Data.SqlClient.dll",
- "ref/netcoreapp2.1/System.Data.SqlClient.xml",
- "ref/netstandard1.2/System.Data.SqlClient.dll",
- "ref/netstandard1.2/System.Data.SqlClient.xml",
- "ref/netstandard1.2/de/System.Data.SqlClient.xml",
- "ref/netstandard1.2/es/System.Data.SqlClient.xml",
- "ref/netstandard1.2/fr/System.Data.SqlClient.xml",
- "ref/netstandard1.2/it/System.Data.SqlClient.xml",
- "ref/netstandard1.2/ja/System.Data.SqlClient.xml",
- "ref/netstandard1.2/ko/System.Data.SqlClient.xml",
- "ref/netstandard1.2/ru/System.Data.SqlClient.xml",
- "ref/netstandard1.2/zh-hans/System.Data.SqlClient.xml",
- "ref/netstandard1.2/zh-hant/System.Data.SqlClient.xml",
- "ref/netstandard1.3/System.Data.SqlClient.dll",
- "ref/netstandard1.3/System.Data.SqlClient.xml",
- "ref/netstandard1.3/de/System.Data.SqlClient.xml",
- "ref/netstandard1.3/es/System.Data.SqlClient.xml",
- "ref/netstandard1.3/fr/System.Data.SqlClient.xml",
- "ref/netstandard1.3/it/System.Data.SqlClient.xml",
- "ref/netstandard1.3/ja/System.Data.SqlClient.xml",
- "ref/netstandard1.3/ko/System.Data.SqlClient.xml",
- "ref/netstandard1.3/ru/System.Data.SqlClient.xml",
- "ref/netstandard1.3/zh-hans/System.Data.SqlClient.xml",
- "ref/netstandard1.3/zh-hant/System.Data.SqlClient.xml",
- "ref/netstandard2.0/System.Data.SqlClient.dll",
- "ref/netstandard2.0/System.Data.SqlClient.xml",
- "ref/xamarinios10/_._",
- "ref/xamarinmac20/_._",
- "ref/xamarintvos10/_._",
- "ref/xamarinwatchos10/_._",
- "runtimes/unix/lib/netcoreapp2.1/System.Data.SqlClient.dll",
- "runtimes/unix/lib/netcoreapp2.1/System.Data.SqlClient.xml",
- "runtimes/unix/lib/netstandard1.3/System.Data.SqlClient.dll",
- "runtimes/unix/lib/netstandard2.0/System.Data.SqlClient.dll",
- "runtimes/unix/lib/netstandard2.0/System.Data.SqlClient.xml",
- "runtimes/win/lib/net451/System.Data.SqlClient.dll",
- "runtimes/win/lib/net46/System.Data.SqlClient.dll",
- "runtimes/win/lib/net461/System.Data.SqlClient.dll",
- "runtimes/win/lib/net461/System.Data.SqlClient.xml",
- "runtimes/win/lib/netcoreapp2.1/System.Data.SqlClient.dll",
- "runtimes/win/lib/netcoreapp2.1/System.Data.SqlClient.xml",
- "runtimes/win/lib/netstandard1.3/System.Data.SqlClient.dll",
- "runtimes/win/lib/netstandard2.0/System.Data.SqlClient.dll",
- "runtimes/win/lib/netstandard2.0/System.Data.SqlClient.xml",
- "runtimes/win/lib/uap10.0.16299/System.Data.SqlClient.dll",
- "runtimes/win/lib/uap10.0.16299/System.Data.SqlClient.xml",
- "system.data.sqlclient.4.8.6.nupkg.sha512",
- "system.data.sqlclient.nuspec",
- "useSharedDesignerContext.txt",
- "version.txt"
- ]
- },
- "System.Diagnostics.DiagnosticSource/9.0.2": {
- "sha512": "z5CMQNLzk8UKnTEHRKb4nq03CCDWBMEF2gfP3oPKZn4F8wip6LFZCP5rF90DREHqdNddScIGAfszXJSjh4drSw==",
- "type": "package",
- "path": "system.diagnostics.diagnosticsource/9.0.2",
+ "path": "system.diagnostics.diagnosticsource/8.0.0",
"files": [
".nupkg.metadata",
".signature.p7s",
@@ -6899,65 +5634,23 @@
"THIRD-PARTY-NOTICES.TXT",
"buildTransitive/net461/System.Diagnostics.DiagnosticSource.targets",
"buildTransitive/net462/_._",
- "buildTransitive/net8.0/_._",
+ "buildTransitive/net6.0/_._",
"buildTransitive/netcoreapp2.0/System.Diagnostics.DiagnosticSource.targets",
- "content/ILLink/ILLink.Descriptors.LibraryBuild.xml",
- "contentFiles/any/net462/ILLink/ILLink.Descriptors.LibraryBuild.xml",
- "contentFiles/any/net8.0/ILLink/ILLink.Descriptors.LibraryBuild.xml",
- "contentFiles/any/net9.0/ILLink/ILLink.Descriptors.LibraryBuild.xml",
- "contentFiles/any/netstandard2.0/ILLink/ILLink.Descriptors.LibraryBuild.xml",
"lib/net462/System.Diagnostics.DiagnosticSource.dll",
"lib/net462/System.Diagnostics.DiagnosticSource.xml",
+ "lib/net6.0/System.Diagnostics.DiagnosticSource.dll",
+ "lib/net6.0/System.Diagnostics.DiagnosticSource.xml",
+ "lib/net7.0/System.Diagnostics.DiagnosticSource.dll",
+ "lib/net7.0/System.Diagnostics.DiagnosticSource.xml",
"lib/net8.0/System.Diagnostics.DiagnosticSource.dll",
"lib/net8.0/System.Diagnostics.DiagnosticSource.xml",
- "lib/net9.0/System.Diagnostics.DiagnosticSource.dll",
- "lib/net9.0/System.Diagnostics.DiagnosticSource.xml",
"lib/netstandard2.0/System.Diagnostics.DiagnosticSource.dll",
"lib/netstandard2.0/System.Diagnostics.DiagnosticSource.xml",
- "system.diagnostics.diagnosticsource.9.0.2.nupkg.sha512",
+ "system.diagnostics.diagnosticsource.8.0.0.nupkg.sha512",
"system.diagnostics.diagnosticsource.nuspec",
"useSharedDesignerContext.txt"
]
},
- "System.Drawing.Common/6.0.0": {
- "sha512": "NfuoKUiP2nUWwKZN6twGqXioIe1zVD0RIj2t976A+czLHr2nY454RwwXs6JU9Htc6mwqL6Dn/nEL3dpVf2jOhg==",
- "type": "package",
- "path": "system.drawing.common/6.0.0",
- "files": [
- ".nupkg.metadata",
- ".signature.p7s",
- "Icon.png",
- "LICENSE.TXT",
- "THIRD-PARTY-NOTICES.TXT",
- "buildTransitive/netcoreapp2.0/System.Drawing.Common.targets",
- "buildTransitive/netcoreapp3.1/_._",
- "lib/MonoAndroid10/_._",
- "lib/MonoTouch10/_._",
- "lib/net461/System.Drawing.Common.dll",
- "lib/net461/System.Drawing.Common.xml",
- "lib/net6.0/System.Drawing.Common.dll",
- "lib/net6.0/System.Drawing.Common.xml",
- "lib/netcoreapp3.1/System.Drawing.Common.dll",
- "lib/netcoreapp3.1/System.Drawing.Common.xml",
- "lib/netstandard2.0/System.Drawing.Common.dll",
- "lib/netstandard2.0/System.Drawing.Common.xml",
- "lib/xamarinios10/_._",
- "lib/xamarinmac20/_._",
- "lib/xamarintvos10/_._",
- "lib/xamarinwatchos10/_._",
- "runtimes/unix/lib/net6.0/System.Drawing.Common.dll",
- "runtimes/unix/lib/net6.0/System.Drawing.Common.xml",
- "runtimes/unix/lib/netcoreapp3.1/System.Drawing.Common.dll",
- "runtimes/unix/lib/netcoreapp3.1/System.Drawing.Common.xml",
- "runtimes/win/lib/net6.0/System.Drawing.Common.dll",
- "runtimes/win/lib/net6.0/System.Drawing.Common.xml",
- "runtimes/win/lib/netcoreapp3.1/System.Drawing.Common.dll",
- "runtimes/win/lib/netcoreapp3.1/System.Drawing.Common.xml",
- "system.drawing.common.6.0.0.nupkg.sha512",
- "system.drawing.common.nuspec",
- "useSharedDesignerContext.txt"
- ]
- },
"System.IdentityModel.Tokens.Jwt/8.9.0": {
"sha512": "7Pu9UjF1+so0s8zgzcIxSxbRQoiM2DMdwazVGmNptX3O6gDfMyeWZBd/Zn6VueDteN0ZTHw2acsf6+mAe8UpMw==",
"type": "package",
@@ -7058,60 +5751,6 @@
"system.reactive.nuspec"
]
},
- "System.Reflection.Emit/4.7.0": {
- "sha512": "VR4kk8XLKebQ4MZuKuIni/7oh+QGFmZW3qORd1GvBq/8026OpW501SzT/oypwiQl4TvT8ErnReh/NzY9u+C6wQ==",
- "type": "package",
- "path": "system.reflection.emit/4.7.0",
- "files": [
- ".nupkg.metadata",
- ".signature.p7s",
- "LICENSE.TXT",
- "THIRD-PARTY-NOTICES.TXT",
- "lib/MonoAndroid10/_._",
- "lib/MonoTouch10/_._",
- "lib/net45/_._",
- "lib/netcore50/System.Reflection.Emit.dll",
- "lib/netcoreapp2.0/_._",
- "lib/netstandard1.1/System.Reflection.Emit.dll",
- "lib/netstandard1.1/System.Reflection.Emit.xml",
- "lib/netstandard1.3/System.Reflection.Emit.dll",
- "lib/netstandard2.0/System.Reflection.Emit.dll",
- "lib/netstandard2.0/System.Reflection.Emit.xml",
- "lib/netstandard2.1/_._",
- "lib/xamarinios10/_._",
- "lib/xamarinmac20/_._",
- "lib/xamarintvos10/_._",
- "lib/xamarinwatchos10/_._",
- "ref/MonoAndroid10/_._",
- "ref/MonoTouch10/_._",
- "ref/net45/_._",
- "ref/netcoreapp2.0/_._",
- "ref/netstandard1.1/System.Reflection.Emit.dll",
- "ref/netstandard1.1/System.Reflection.Emit.xml",
- "ref/netstandard1.1/de/System.Reflection.Emit.xml",
- "ref/netstandard1.1/es/System.Reflection.Emit.xml",
- "ref/netstandard1.1/fr/System.Reflection.Emit.xml",
- "ref/netstandard1.1/it/System.Reflection.Emit.xml",
- "ref/netstandard1.1/ja/System.Reflection.Emit.xml",
- "ref/netstandard1.1/ko/System.Reflection.Emit.xml",
- "ref/netstandard1.1/ru/System.Reflection.Emit.xml",
- "ref/netstandard1.1/zh-hans/System.Reflection.Emit.xml",
- "ref/netstandard1.1/zh-hant/System.Reflection.Emit.xml",
- "ref/netstandard2.0/System.Reflection.Emit.dll",
- "ref/netstandard2.0/System.Reflection.Emit.xml",
- "ref/netstandard2.1/_._",
- "ref/xamarinios10/_._",
- "ref/xamarinmac20/_._",
- "ref/xamarintvos10/_._",
- "ref/xamarinwatchos10/_._",
- "runtimes/aot/lib/netcore50/System.Reflection.Emit.dll",
- "runtimes/aot/lib/netcore50/System.Reflection.Emit.xml",
- "system.reflection.emit.4.7.0.nupkg.sha512",
- "system.reflection.emit.nuspec",
- "useSharedDesignerContext.txt",
- "version.txt"
- ]
- },
"System.Reflection.Metadata/6.0.1": {
"sha512": "III/lNMSn0ZRBuM9m5Cgbiho5j81u0FAEagFX5ta2DKbljZ3T0IpD8j+BIiHQPeKqJppWS9bGEp6JnKnWKze0g==",
"type": "package",
@@ -7160,97 +5799,51 @@
"useSharedDesignerContext.txt"
]
},
- "System.Security.AccessControl/6.0.0": {
- "sha512": "AUADIc0LIEQe7MzC+I0cl0rAT8RrTAKFHl53yHjEUzNVIaUlhFY11vc2ebiVJzVBuOzun6F7FBA+8KAbGTTedQ==",
+ "System.Security.AccessControl/5.0.0": {
+ "sha512": "dagJ1mHZO3Ani8GH0PHpPEe/oYO+rVdbQjvjJkBRNQkX4t0r1iaeGn8+/ybkSLEan3/slM0t59SVdHzuHf2jmw==",
"type": "package",
- "path": "system.security.accesscontrol/6.0.0",
+ "path": "system.security.accesscontrol/5.0.0",
"files": [
".nupkg.metadata",
".signature.p7s",
"Icon.png",
"LICENSE.TXT",
"THIRD-PARTY-NOTICES.TXT",
- "buildTransitive/netcoreapp2.0/System.Security.AccessControl.targets",
- "buildTransitive/netcoreapp3.1/_._",
+ "lib/net46/System.Security.AccessControl.dll",
"lib/net461/System.Security.AccessControl.dll",
"lib/net461/System.Security.AccessControl.xml",
- "lib/net6.0/System.Security.AccessControl.dll",
- "lib/net6.0/System.Security.AccessControl.xml",
+ "lib/netstandard1.3/System.Security.AccessControl.dll",
"lib/netstandard2.0/System.Security.AccessControl.dll",
"lib/netstandard2.0/System.Security.AccessControl.xml",
+ "lib/uap10.0.16299/_._",
+ "ref/net46/System.Security.AccessControl.dll",
+ "ref/net461/System.Security.AccessControl.dll",
+ "ref/net461/System.Security.AccessControl.xml",
+ "ref/netstandard1.3/System.Security.AccessControl.dll",
+ "ref/netstandard1.3/System.Security.AccessControl.xml",
+ "ref/netstandard1.3/de/System.Security.AccessControl.xml",
+ "ref/netstandard1.3/es/System.Security.AccessControl.xml",
+ "ref/netstandard1.3/fr/System.Security.AccessControl.xml",
+ "ref/netstandard1.3/it/System.Security.AccessControl.xml",
+ "ref/netstandard1.3/ja/System.Security.AccessControl.xml",
+ "ref/netstandard1.3/ko/System.Security.AccessControl.xml",
+ "ref/netstandard1.3/ru/System.Security.AccessControl.xml",
+ "ref/netstandard1.3/zh-hans/System.Security.AccessControl.xml",
+ "ref/netstandard1.3/zh-hant/System.Security.AccessControl.xml",
+ "ref/netstandard2.0/System.Security.AccessControl.dll",
+ "ref/netstandard2.0/System.Security.AccessControl.xml",
+ "ref/uap10.0.16299/_._",
+ "runtimes/win/lib/net46/System.Security.AccessControl.dll",
"runtimes/win/lib/net461/System.Security.AccessControl.dll",
"runtimes/win/lib/net461/System.Security.AccessControl.xml",
- "runtimes/win/lib/net6.0/System.Security.AccessControl.dll",
- "runtimes/win/lib/net6.0/System.Security.AccessControl.xml",
- "runtimes/win/lib/netstandard2.0/System.Security.AccessControl.dll",
- "runtimes/win/lib/netstandard2.0/System.Security.AccessControl.xml",
- "system.security.accesscontrol.6.0.0.nupkg.sha512",
+ "runtimes/win/lib/netcoreapp2.0/System.Security.AccessControl.dll",
+ "runtimes/win/lib/netcoreapp2.0/System.Security.AccessControl.xml",
+ "runtimes/win/lib/netstandard1.3/System.Security.AccessControl.dll",
+ "runtimes/win/lib/uap10.0.16299/_._",
+ "system.security.accesscontrol.5.0.0.nupkg.sha512",
"system.security.accesscontrol.nuspec",
- "useSharedDesignerContext.txt"
- ]
- },
- "System.Security.Cryptography.ProtectedData/6.0.0": {
- "sha512": "rp1gMNEZpvx9vP0JW0oHLxlf8oSiQgtno77Y4PLUBjSiDYoD77Y8uXHr1Ea5XG4/pIKhqAdxZ8v8OTUtqo9PeQ==",
- "type": "package",
- "path": "system.security.cryptography.protecteddata/6.0.0",
- "files": [
- ".nupkg.metadata",
- ".signature.p7s",
- "Icon.png",
- "LICENSE.TXT",
- "THIRD-PARTY-NOTICES.TXT",
- "buildTransitive/netcoreapp2.0/System.Security.Cryptography.ProtectedData.targets",
- "buildTransitive/netcoreapp3.1/_._",
- "lib/MonoAndroid10/_._",
- "lib/MonoTouch10/_._",
- "lib/net461/System.Security.Cryptography.ProtectedData.dll",
- "lib/net461/System.Security.Cryptography.ProtectedData.xml",
- "lib/net6.0/System.Security.Cryptography.ProtectedData.dll",
- "lib/net6.0/System.Security.Cryptography.ProtectedData.xml",
- "lib/netstandard2.0/System.Security.Cryptography.ProtectedData.dll",
- "lib/netstandard2.0/System.Security.Cryptography.ProtectedData.xml",
- "lib/xamarinios10/_._",
- "lib/xamarinmac20/_._",
- "lib/xamarintvos10/_._",
- "lib/xamarinwatchos10/_._",
- "runtimes/win/lib/net461/System.Security.Cryptography.ProtectedData.dll",
- "runtimes/win/lib/net461/System.Security.Cryptography.ProtectedData.xml",
- "runtimes/win/lib/net6.0/System.Security.Cryptography.ProtectedData.dll",
- "runtimes/win/lib/net6.0/System.Security.Cryptography.ProtectedData.xml",
- "runtimes/win/lib/netstandard2.0/System.Security.Cryptography.ProtectedData.dll",
- "runtimes/win/lib/netstandard2.0/System.Security.Cryptography.ProtectedData.xml",
- "system.security.cryptography.protecteddata.6.0.0.nupkg.sha512",
- "system.security.cryptography.protecteddata.nuspec",
- "useSharedDesignerContext.txt"
- ]
- },
- "System.Security.Permissions/6.0.0": {
- "sha512": "T/uuc7AklkDoxmcJ7LGkyX1CcSviZuLCa4jg3PekfJ7SU0niF0IVTXwUiNVP9DSpzou2PpxJ+eNY2IfDM90ZCg==",
- "type": "package",
- "path": "system.security.permissions/6.0.0",
- "files": [
- ".nupkg.metadata",
- ".signature.p7s",
- "Icon.png",
- "LICENSE.TXT",
- "THIRD-PARTY-NOTICES.TXT",
- "buildTransitive/netcoreapp2.0/System.Security.Permissions.targets",
- "buildTransitive/netcoreapp3.1/_._",
- "lib/net461/System.Security.Permissions.dll",
- "lib/net461/System.Security.Permissions.xml",
- "lib/net5.0/System.Security.Permissions.dll",
- "lib/net5.0/System.Security.Permissions.xml",
- "lib/net6.0/System.Security.Permissions.dll",
- "lib/net6.0/System.Security.Permissions.xml",
- "lib/netcoreapp3.1/System.Security.Permissions.dll",
- "lib/netcoreapp3.1/System.Security.Permissions.xml",
- "lib/netstandard2.0/System.Security.Permissions.dll",
- "lib/netstandard2.0/System.Security.Permissions.xml",
- "runtimes/win/lib/net461/System.Security.Permissions.dll",
- "runtimes/win/lib/net461/System.Security.Permissions.xml",
- "system.security.permissions.6.0.0.nupkg.sha512",
- "system.security.permissions.nuspec",
- "useSharedDesignerContext.txt"
+ "useSharedDesignerContext.txt",
+ "version.txt"
]
},
"System.Security.Principal.Windows/5.0.0": {
@@ -7484,27 +6077,26 @@
"useSharedDesignerContext.txt"
]
},
- "System.Windows.Extensions/6.0.0": {
- "sha512": "IXoJOXIqc39AIe+CIR7koBtRGMiCt/LPM3lI+PELtDIy9XdyeSrwXFdWV9dzJ2Awl0paLWUaknLxFQ5HpHZUog==",
+ "Ulid/1.3.4": {
+ "sha512": "6IaGquwjjfW+BoHSV844y12Uy2kxbboYNmsibxr2lotcSPAA3LKy1CKcAQ8JOdAdL4xMoDNXA1oxG41w7fbr6Q==",
"type": "package",
- "path": "system.windows.extensions/6.0.0",
+ "path": "ulid/1.3.4",
"files": [
".nupkg.metadata",
".signature.p7s",
"Icon.png",
- "LICENSE.TXT",
- "THIRD-PARTY-NOTICES.TXT",
- "lib/net6.0/System.Windows.Extensions.dll",
- "lib/net6.0/System.Windows.Extensions.xml",
- "lib/netcoreapp3.1/System.Windows.Extensions.dll",
- "lib/netcoreapp3.1/System.Windows.Extensions.xml",
- "runtimes/win/lib/net6.0/System.Windows.Extensions.dll",
- "runtimes/win/lib/net6.0/System.Windows.Extensions.xml",
- "runtimes/win/lib/netcoreapp3.1/System.Windows.Extensions.dll",
- "runtimes/win/lib/netcoreapp3.1/System.Windows.Extensions.xml",
- "system.windows.extensions.6.0.0.nupkg.sha512",
- "system.windows.extensions.nuspec",
- "useSharedDesignerContext.txt"
+ "lib/net6.0/Ulid.dll",
+ "lib/net6.0/Ulid.xml",
+ "lib/net7.0/Ulid.dll",
+ "lib/net7.0/Ulid.xml",
+ "lib/net8.0/Ulid.dll",
+ "lib/net8.0/Ulid.xml",
+ "lib/netstandard2.0/Ulid.dll",
+ "lib/netstandard2.0/Ulid.xml",
+ "lib/netstandard2.1/Ulid.dll",
+ "lib/netstandard2.1/Ulid.xml",
+ "ulid.1.3.4.nupkg.sha512",
+ "ulid.nuspec"
]
},
"YamlDotNet/16.3.0": {
@@ -7592,10 +6184,12 @@
"projectFileDependencyGroups": {
"net8.0": [
"Microsoft.AspNetCore.Authentication.JwtBearer >= 8.0.2",
- "Microsoft.EntityFrameworkCore.Design >= 8.0.2",
- "Microsoft.EntityFrameworkCore.Tools >= 8.0.2",
+ "Microsoft.EntityFrameworkCore >= 8.0.13",
+ "Microsoft.EntityFrameworkCore.Design >= 8.0.13",
+ "Microsoft.EntityFrameworkCore.Relational >= 8.0.13",
+ "Microsoft.EntityFrameworkCore.Tools >= 8.0.13",
"NLog.Web.AspNetCore >= 5.3.11",
- "Pomelo.EntityFrameworkCore.MySql >= 8.0.2",
+ "Pomelo.EntityFrameworkCore.MySql >= 8.0.3",
"ServerCommon >= 1.0.0",
"Swashbuckle.AspNetCore.Annotations >= 7.2.0"
]
@@ -7654,18 +6248,28 @@
"version": "[8.0.2, )",
"versionCentrallyManaged": true
},
+ "Microsoft.EntityFrameworkCore": {
+ "target": "Package",
+ "version": "[8.0.13, )",
+ "versionCentrallyManaged": true
+ },
"Microsoft.EntityFrameworkCore.Design": {
"include": "Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive",
"suppressParent": "All",
"target": "Package",
- "version": "[8.0.2, )",
+ "version": "[8.0.13, )",
+ "versionCentrallyManaged": true
+ },
+ "Microsoft.EntityFrameworkCore.Relational": {
+ "target": "Package",
+ "version": "[8.0.13, )",
"versionCentrallyManaged": true
},
"Microsoft.EntityFrameworkCore.Tools": {
"include": "Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive",
"suppressParent": "All",
"target": "Package",
- "version": "[8.0.2, )",
+ "version": "[8.0.13, )",
"versionCentrallyManaged": true
},
"NLog.Web.AspNetCore": {
@@ -7675,7 +6279,7 @@
},
"Pomelo.EntityFrameworkCore.MySql": {
"target": "Package",
- "version": "[8.0.2, )",
+ "version": "[8.0.3, )",
"versionCentrallyManaged": true
},
"Swashbuckle.AspNetCore.Annotations": {
@@ -7687,17 +6291,10 @@
"centralPackageVersions": {
"Asp.Versioning.Mvc": "8.1.0",
"Asp.Versioning.Mvc.ApiExplorer": "8.1.0",
+ "Aspire.Hosting.AppHost": "8.2.2",
"AspNetCore.Swagger.Fluent.Annotations": "1.0.4",
"AsyncStateMachine": "1.3.2",
- "AutoMapper": "14.0.0",
- "AutoMapper.AspNetCore.OData.EFCore": "7.0.1",
- "AutoMapper.Collection": "11.0.0",
- "AutoMapper.Collection.EntityFrameworkCore": "11.0.0",
- "AutoMapper.Contrib.Autofac.DependencyInjection": "9.0.0",
- "AutoMapper.Data": "9.0.0",
- "AutoMapper.EF6": "3.0.1",
- "AutoMapper.Extensions.EnumMapping": "4.1.0",
- "AutoMapper.Extensions.ExpressionMapping": "8.0.0",
+ "AutoMapper": "15.0.1",
"AWS.Logger.NLog": "3.3.4",
"AWSSDK.Core": "3.7.402.46",
"AWSSDK.DynamoDBv2": "3.7.407",
@@ -7713,6 +6310,7 @@
"CommunityToolkit.Diagnostics": "8.2.2",
"CommunityToolkit.Mvvm": "8.2.2",
"Costura.Fody": "5.7.0",
+ "coverlet.collector": "6.0.4",
"Csv": "2.0.93",
"DocumentFormat.OpenXml": "2.20.0",
"DotNet.MultiMap": "2.2.1",
@@ -7720,6 +6318,7 @@
"ExcelDataReader": "3.6.0",
"ExcelDataReader.DataSet": "3.6.0",
"ExcelNumberFormat": "1.1.0",
+ "FluentAssertions": "8.3.0",
"Google.Protobuf": "3.27.1",
"Grpc.AspNetCore": "2.63.0",
"Grpc.AspNetCore.Server.Reflection": "2.63.0",
@@ -7735,10 +6334,12 @@
"Microsoft.AspNetCore.OpenApi": "8.0.6",
"Microsoft.Data.Sqlite": "8.0.6",
"Microsoft.Diagnostics.NETCore.Client": "0.2.621003",
- "Microsoft.EntityFrameworkCore.Design": "8.0.2",
- "Microsoft.EntityFrameworkCore.Tools": "8.0.2",
+ "Microsoft.EntityFrameworkCore": "8.0.13",
+ "Microsoft.EntityFrameworkCore.Design": "8.0.13",
+ "Microsoft.EntityFrameworkCore.Relational": "8.0.13",
+ "Microsoft.EntityFrameworkCore.Tools": "8.0.13",
"Microsoft.Extensions.Caching.StackExchangeRedis": "8.0.6",
- "Microsoft.Extensions.Configuration": "9.0.4",
+ "Microsoft.Extensions.Configuration": "8.0.0",
"Microsoft.Extensions.Configuration.Abstractions": "8.0.0",
"Microsoft.Extensions.Configuration.UserSecrets": "8.0.0",
"Microsoft.Extensions.DependencyInjection": "8.0.0",
@@ -7747,8 +6348,8 @@
"Microsoft.Extensions.Hosting.Abstractions": "8.0.0",
"Microsoft.Extensions.Http": "8.0.0",
"Microsoft.Extensions.Logging": "8.0.0",
- "Microsoft.Extensions.Logging.Abstractions": "9.0.4",
- "Microsoft.Extensions.Options": "9.0.4",
+ "Microsoft.Extensions.Logging.Abstractions": "8.0.3",
+ "Microsoft.Extensions.Options": "8.0.2",
"Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0",
"Microsoft.NET.Test.Sdk": "17.12.0",
"Microsoft.OpenApi": "1.6.22",
@@ -7758,18 +6359,27 @@
"MongoDB.Driver": "3.3.0",
"MongoDB.Driver.Core": "2.30.0",
"Moq": "4.20.72",
+ "MSTest.TestAdapter": "3.8.3",
+ "MSTest.TestFramework": "3.8.3",
"MySqlConnector": "2.4.0",
"NeoSmart.AsyncLock": "3.2.1",
"Newtonsoft.Json": "13.0.3",
"Nito.AsyncEx": "5.1.2",
"NJsonSchema.CodeGeneration.CSharp": "10.9.0",
"NLog": "5.4.0",
+ "NLog.Extensions.Logging": "5.3.11",
"NLog.Web.AspNetCore": "5.3.11",
+ "NSubstituteAutoSubstitute": "1.1.0",
+ "OneOf": "3.0.271",
"Otp.NET": "1.4.0",
"p4api.net": "2023.1.248.4623",
"Polly": "8.5.1",
- "Pomelo.EntityFrameworkCore.MySql": "8.0.2",
+ "Pomelo.EntityFrameworkCore.MySql": "8.0.3",
"RabbitMQ.Client": "6.8.1",
+ "RedLock.net": "2.3.2",
+ "Sentry.AspNetCore": "5.10.0",
+ "Sentry.Extensions.Logging": "5.10.0",
+ "Sentry.NLog": "5.10.0",
"SharpSvn": "1.14003.272",
"sqlite-net-pcl": "1.9.172",
"SSH.NET": "2025.0.0",
@@ -7782,8 +6392,11 @@
"Swashbuckle.AspNetCore.Filters": "8.0.2",
"Swashbuckle.AspNetCore.SwaggerUI": "7.2.0",
"System.IdentityModel.Tokens.Jwt": "8.9.0",
+ "System.IO.Hashing": "8.0.0",
+ "Ulid": "1.3.4",
"xunit": "2.9.3",
- "xunit.assert": "2.9.2",
+ "xunit.assert": "2.9.3",
+ "xunit.extensibility.core": "2.9.3",
"xunit.runner.visualstudio": "3.0.1",
"YamlDotNet": "16.3.0"
},
diff --git a/BrokerApiCore/obj/project.nuget.cache b/BrokerApiCore/obj/project.nuget.cache
index aaaee82..a0d7dae 100644
--- a/BrokerApiCore/obj/project.nuget.cache
+++ b/BrokerApiCore/obj/project.nuget.cache
@@ -1,20 +1,10 @@
{
"version": 2,
- "dgSpecHash": "1KN19Ey1X4g=",
+ "dgSpecHash": "OxiZmBRLTm0=",
"success": true,
"projectFilePath": "D:\\03.SVN\\03.caliverse\\Server\\CaliServer\\BrokerApiCore\\BrokerApiCore.csproj",
"expectedPackageFiles": [
"C:\\Users\\user\\.nuget\\packages\\asyncstatemachine\\1.3.2\\asyncstatemachine.1.3.2.nupkg.sha512",
- "C:\\Users\\user\\.nuget\\packages\\autofac\\8.2.0\\autofac.8.2.0.nupkg.sha512",
- "C:\\Users\\user\\.nuget\\packages\\automapper\\14.0.0\\automapper.14.0.0.nupkg.sha512",
- "C:\\Users\\user\\.nuget\\packages\\automapper.aspnetcore.odata.efcore\\7.0.1\\automapper.aspnetcore.odata.efcore.7.0.1.nupkg.sha512",
- "C:\\Users\\user\\.nuget\\packages\\automapper.collection\\11.0.0\\automapper.collection.11.0.0.nupkg.sha512",
- "C:\\Users\\user\\.nuget\\packages\\automapper.collection.entityframeworkcore\\11.0.0\\automapper.collection.entityframeworkcore.11.0.0.nupkg.sha512",
- "C:\\Users\\user\\.nuget\\packages\\automapper.contrib.autofac.dependencyinjection\\9.0.0\\automapper.contrib.autofac.dependencyinjection.9.0.0.nupkg.sha512",
- "C:\\Users\\user\\.nuget\\packages\\automapper.data\\9.0.0\\automapper.data.9.0.0.nupkg.sha512",
- "C:\\Users\\user\\.nuget\\packages\\automapper.ef6\\3.0.1\\automapper.ef6.3.0.1.nupkg.sha512",
- "C:\\Users\\user\\.nuget\\packages\\automapper.extensions.enummapping\\4.1.0\\automapper.extensions.enummapping.4.1.0.nupkg.sha512",
- "C:\\Users\\user\\.nuget\\packages\\automapper.extensions.expressionmapping\\8.0.0\\automapper.extensions.expressionmapping.8.0.0.nupkg.sha512",
"C:\\Users\\user\\.nuget\\packages\\aws.logger.core\\3.3.3\\aws.logger.core.3.3.3.nupkg.sha512",
"C:\\Users\\user\\.nuget\\packages\\aws.logger.nlog\\3.3.4\\aws.logger.nlog.3.3.4.nupkg.sha512",
"C:\\Users\\user\\.nuget\\packages\\awssdk.cloudwatchlogs\\3.7.305.15\\awssdk.cloudwatchlogs.3.7.305.15.nupkg.sha512",
@@ -28,12 +18,9 @@
"C:\\Users\\user\\.nuget\\packages\\bcrypt.net-next\\4.0.3\\bcrypt.net-next.4.0.3.nupkg.sha512",
"C:\\Users\\user\\.nuget\\packages\\bouncycastle.cryptography\\2.5.1\\bouncycastle.cryptography.2.5.1.nupkg.sha512",
"C:\\Users\\user\\.nuget\\packages\\commandlineparser\\2.9.1\\commandlineparser.2.9.1.nupkg.sha512",
- "C:\\Users\\user\\.nuget\\packages\\delegatedecompiler\\0.34.0\\delegatedecompiler.0.34.0.nupkg.sha512",
- "C:\\Users\\user\\.nuget\\packages\\delegatedecompiler.entityframework\\0.34.0\\delegatedecompiler.entityframework.0.34.0.nupkg.sha512",
"C:\\Users\\user\\.nuget\\packages\\dnsclient\\1.6.1\\dnsclient.1.6.1.nupkg.sha512",
"C:\\Users\\user\\.nuget\\packages\\dotnet.multimap\\2.2.1\\dotnet.multimap.2.2.1.nupkg.sha512",
"C:\\Users\\user\\.nuget\\packages\\dumpextensions\\2.0.0\\dumpextensions.2.0.0.nupkg.sha512",
- "C:\\Users\\user\\.nuget\\packages\\entityframework\\6.5.1\\entityframework.6.5.1.nupkg.sha512",
"C:\\Users\\user\\.nuget\\packages\\google.protobuf\\3.27.1\\google.protobuf.3.27.1.nupkg.sha512",
"C:\\Users\\user\\.nuget\\packages\\grpc.aspnetcore\\2.63.0\\grpc.aspnetcore.2.63.0.nupkg.sha512",
"C:\\Users\\user\\.nuget\\packages\\grpc.aspnetcore.server\\2.63.0\\grpc.aspnetcore.server.2.63.0.nupkg.sha512",
@@ -46,65 +33,55 @@
"C:\\Users\\user\\.nuget\\packages\\grpc.reflection\\2.63.0\\grpc.reflection.2.63.0.nupkg.sha512",
"C:\\Users\\user\\.nuget\\packages\\humanizer.core\\2.14.1\\humanizer.core.2.14.1.nupkg.sha512",
"C:\\Users\\user\\.nuget\\packages\\jwt\\11.0.0\\jwt.11.0.0.nupkg.sha512",
- "C:\\Users\\user\\.nuget\\packages\\logicbuilder.expressions.utils\\7.0.0\\logicbuilder.expressions.utils.7.0.0.nupkg.sha512",
- "C:\\Users\\user\\.nuget\\packages\\logicbuilder.structures\\7.0.0\\logicbuilder.structures.7.0.0.nupkg.sha512",
"C:\\Users\\user\\.nuget\\packages\\microsoft.aspnetcore.authentication.jwtbearer\\8.0.2\\microsoft.aspnetcore.authentication.jwtbearer.8.0.2.nupkg.sha512",
- "C:\\Users\\user\\.nuget\\packages\\microsoft.aspnetcore.odata\\9.1.1\\microsoft.aspnetcore.odata.9.1.1.nupkg.sha512",
- "C:\\Users\\user\\.nuget\\packages\\microsoft.bcl.asyncinterfaces\\8.0.0\\microsoft.bcl.asyncinterfaces.8.0.0.nupkg.sha512",
+ "C:\\Users\\user\\.nuget\\packages\\microsoft.bcl.asyncinterfaces\\6.0.0\\microsoft.bcl.asyncinterfaces.6.0.0.nupkg.sha512",
"C:\\Users\\user\\.nuget\\packages\\microsoft.bcl.memory\\9.0.0\\microsoft.bcl.memory.9.0.0.nupkg.sha512",
"C:\\Users\\user\\.nuget\\packages\\microsoft.codeanalysis.analyzers\\3.3.3\\microsoft.codeanalysis.analyzers.3.3.3.nupkg.sha512",
"C:\\Users\\user\\.nuget\\packages\\microsoft.codeanalysis.common\\4.5.0\\microsoft.codeanalysis.common.4.5.0.nupkg.sha512",
"C:\\Users\\user\\.nuget\\packages\\microsoft.codeanalysis.csharp\\4.5.0\\microsoft.codeanalysis.csharp.4.5.0.nupkg.sha512",
"C:\\Users\\user\\.nuget\\packages\\microsoft.codeanalysis.csharp.workspaces\\4.5.0\\microsoft.codeanalysis.csharp.workspaces.4.5.0.nupkg.sha512",
"C:\\Users\\user\\.nuget\\packages\\microsoft.codeanalysis.workspaces.common\\4.5.0\\microsoft.codeanalysis.workspaces.common.4.5.0.nupkg.sha512",
- "C:\\Users\\user\\.nuget\\packages\\microsoft.csharp\\4.7.0\\microsoft.csharp.4.7.0.nupkg.sha512",
"C:\\Users\\user\\.nuget\\packages\\microsoft.diagnostics.netcore.client\\0.2.621003\\microsoft.diagnostics.netcore.client.0.2.621003.nupkg.sha512",
- "C:\\Users\\user\\.nuget\\packages\\microsoft.entityframeworkcore\\9.0.2\\microsoft.entityframeworkcore.9.0.2.nupkg.sha512",
- "C:\\Users\\user\\.nuget\\packages\\microsoft.entityframeworkcore.abstractions\\9.0.2\\microsoft.entityframeworkcore.abstractions.9.0.2.nupkg.sha512",
- "C:\\Users\\user\\.nuget\\packages\\microsoft.entityframeworkcore.analyzers\\9.0.2\\microsoft.entityframeworkcore.analyzers.9.0.2.nupkg.sha512",
- "C:\\Users\\user\\.nuget\\packages\\microsoft.entityframeworkcore.design\\8.0.2\\microsoft.entityframeworkcore.design.8.0.2.nupkg.sha512",
- "C:\\Users\\user\\.nuget\\packages\\microsoft.entityframeworkcore.relational\\8.0.2\\microsoft.entityframeworkcore.relational.8.0.2.nupkg.sha512",
- "C:\\Users\\user\\.nuget\\packages\\microsoft.entityframeworkcore.tools\\8.0.2\\microsoft.entityframeworkcore.tools.8.0.2.nupkg.sha512",
- "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.caching.abstractions\\9.0.2\\microsoft.extensions.caching.abstractions.9.0.2.nupkg.sha512",
- "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.caching.memory\\9.0.2\\microsoft.extensions.caching.memory.9.0.2.nupkg.sha512",
- "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.configuration\\9.0.4\\microsoft.extensions.configuration.9.0.4.nupkg.sha512",
- "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.configuration.abstractions\\9.0.4\\microsoft.extensions.configuration.abstractions.9.0.4.nupkg.sha512",
+ "C:\\Users\\user\\.nuget\\packages\\microsoft.entityframeworkcore\\8.0.13\\microsoft.entityframeworkcore.8.0.13.nupkg.sha512",
+ "C:\\Users\\user\\.nuget\\packages\\microsoft.entityframeworkcore.abstractions\\8.0.13\\microsoft.entityframeworkcore.abstractions.8.0.13.nupkg.sha512",
+ "C:\\Users\\user\\.nuget\\packages\\microsoft.entityframeworkcore.analyzers\\8.0.13\\microsoft.entityframeworkcore.analyzers.8.0.13.nupkg.sha512",
+ "C:\\Users\\user\\.nuget\\packages\\microsoft.entityframeworkcore.design\\8.0.13\\microsoft.entityframeworkcore.design.8.0.13.nupkg.sha512",
+ "C:\\Users\\user\\.nuget\\packages\\microsoft.entityframeworkcore.relational\\8.0.13\\microsoft.entityframeworkcore.relational.8.0.13.nupkg.sha512",
+ "C:\\Users\\user\\.nuget\\packages\\microsoft.entityframeworkcore.tools\\8.0.13\\microsoft.entityframeworkcore.tools.8.0.13.nupkg.sha512",
+ "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.caching.abstractions\\8.0.0\\microsoft.extensions.caching.abstractions.8.0.0.nupkg.sha512",
+ "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.caching.memory\\8.0.1\\microsoft.extensions.caching.memory.8.0.1.nupkg.sha512",
+ "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.configuration\\8.0.0\\microsoft.extensions.configuration.8.0.0.nupkg.sha512",
+ "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.configuration.abstractions\\8.0.0\\microsoft.extensions.configuration.abstractions.8.0.0.nupkg.sha512",
"C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.configuration.binder\\8.0.0\\microsoft.extensions.configuration.binder.8.0.0.nupkg.sha512",
"C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.configuration.fileextensions\\8.0.0\\microsoft.extensions.configuration.fileextensions.8.0.0.nupkg.sha512",
"C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.configuration.json\\8.0.0\\microsoft.extensions.configuration.json.8.0.0.nupkg.sha512",
"C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.configuration.usersecrets\\8.0.0\\microsoft.extensions.configuration.usersecrets.8.0.0.nupkg.sha512",
- "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.dependencyinjection\\9.0.2\\microsoft.extensions.dependencyinjection.9.0.2.nupkg.sha512",
- "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.dependencyinjection.abstractions\\9.0.4\\microsoft.extensions.dependencyinjection.abstractions.9.0.4.nupkg.sha512",
- "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.dependencymodel\\8.0.0\\microsoft.extensions.dependencymodel.8.0.0.nupkg.sha512",
+ "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.dependencyinjection\\8.0.1\\microsoft.extensions.dependencyinjection.8.0.1.nupkg.sha512",
+ "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.dependencyinjection.abstractions\\8.0.2\\microsoft.extensions.dependencyinjection.abstractions.8.0.2.nupkg.sha512",
+ "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.dependencymodel\\8.0.2\\microsoft.extensions.dependencymodel.8.0.2.nupkg.sha512",
"C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.diagnostics\\8.0.0\\microsoft.extensions.diagnostics.8.0.0.nupkg.sha512",
"C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.diagnostics.abstractions\\8.0.0\\microsoft.extensions.diagnostics.abstractions.8.0.0.nupkg.sha512",
"C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.fileproviders.abstractions\\8.0.0\\microsoft.extensions.fileproviders.abstractions.8.0.0.nupkg.sha512",
"C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.fileproviders.physical\\8.0.0\\microsoft.extensions.fileproviders.physical.8.0.0.nupkg.sha512",
"C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.filesystemglobbing\\8.0.0\\microsoft.extensions.filesystemglobbing.8.0.0.nupkg.sha512",
"C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.http\\8.0.0\\microsoft.extensions.http.8.0.0.nupkg.sha512",
- "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.logging\\9.0.2\\microsoft.extensions.logging.9.0.2.nupkg.sha512",
- "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.logging.abstractions\\9.0.2\\microsoft.extensions.logging.abstractions.9.0.2.nupkg.sha512",
- "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.objectpool\\6.0.3\\microsoft.extensions.objectpool.6.0.3.nupkg.sha512",
- "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.options\\9.0.4\\microsoft.extensions.options.9.0.4.nupkg.sha512",
+ "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.logging\\8.0.1\\microsoft.extensions.logging.8.0.1.nupkg.sha512",
+ "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.logging.abstractions\\8.0.3\\microsoft.extensions.logging.abstractions.8.0.3.nupkg.sha512",
+ "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.options\\8.0.2\\microsoft.extensions.options.8.0.2.nupkg.sha512",
"C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.options.configurationextensions\\8.0.0\\microsoft.extensions.options.configurationextensions.8.0.0.nupkg.sha512",
- "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.primitives\\9.0.4\\microsoft.extensions.primitives.9.0.4.nupkg.sha512",
+ "C:\\Users\\user\\.nuget\\packages\\microsoft.extensions.primitives\\8.0.0\\microsoft.extensions.primitives.8.0.0.nupkg.sha512",
"C:\\Users\\user\\.nuget\\packages\\microsoft.identitymodel.abstractions\\8.9.0\\microsoft.identitymodel.abstractions.8.9.0.nupkg.sha512",
"C:\\Users\\user\\.nuget\\packages\\microsoft.identitymodel.jsonwebtokens\\8.9.0\\microsoft.identitymodel.jsonwebtokens.8.9.0.nupkg.sha512",
"C:\\Users\\user\\.nuget\\packages\\microsoft.identitymodel.logging\\8.9.0\\microsoft.identitymodel.logging.8.9.0.nupkg.sha512",
"C:\\Users\\user\\.nuget\\packages\\microsoft.identitymodel.protocols\\7.1.2\\microsoft.identitymodel.protocols.7.1.2.nupkg.sha512",
"C:\\Users\\user\\.nuget\\packages\\microsoft.identitymodel.protocols.openidconnect\\7.1.2\\microsoft.identitymodel.protocols.openidconnect.7.1.2.nupkg.sha512",
"C:\\Users\\user\\.nuget\\packages\\microsoft.identitymodel.tokens\\8.9.0\\microsoft.identitymodel.tokens.8.9.0.nupkg.sha512",
- "C:\\Users\\user\\.nuget\\packages\\microsoft.odata.core\\8.2.2\\microsoft.odata.core.8.2.2.nupkg.sha512",
- "C:\\Users\\user\\.nuget\\packages\\microsoft.odata.edm\\8.2.2\\microsoft.odata.edm.8.2.2.nupkg.sha512",
- "C:\\Users\\user\\.nuget\\packages\\microsoft.odata.modelbuilder\\2.0.0\\microsoft.odata.modelbuilder.2.0.0.nupkg.sha512",
+ "C:\\Users\\user\\.nuget\\packages\\microsoft.netcore.platforms\\5.0.0\\microsoft.netcore.platforms.5.0.0.nupkg.sha512",
"C:\\Users\\user\\.nuget\\packages\\microsoft.openapi\\1.6.22\\microsoft.openapi.1.6.22.nupkg.sha512",
- "C:\\Users\\user\\.nuget\\packages\\microsoft.spatial\\8.2.2\\microsoft.spatial.8.2.2.nupkg.sha512",
"C:\\Users\\user\\.nuget\\packages\\microsoft.win32.registry\\5.0.0\\microsoft.win32.registry.5.0.0.nupkg.sha512",
- "C:\\Users\\user\\.nuget\\packages\\microsoft.win32.systemevents\\6.0.0\\microsoft.win32.systemevents.6.0.0.nupkg.sha512",
"C:\\Users\\user\\.nuget\\packages\\mongodb.analyzer\\1.5.0\\mongodb.analyzer.1.5.0.nupkg.sha512",
"C:\\Users\\user\\.nuget\\packages\\mongodb.bson\\3.3.0\\mongodb.bson.3.3.0.nupkg.sha512",
"C:\\Users\\user\\.nuget\\packages\\mongodb.driver\\3.3.0\\mongodb.driver.3.3.0.nupkg.sha512",
- "C:\\Users\\user\\.nuget\\packages\\mono.reflection\\2.0.0\\mono.reflection.2.0.0.nupkg.sha512",
"C:\\Users\\user\\.nuget\\packages\\mono.texttemplating\\2.2.1\\mono.texttemplating.2.2.1.nupkg.sha512",
"C:\\Users\\user\\.nuget\\packages\\mysqlconnector\\2.4.0\\mysqlconnector.2.4.0.nupkg.sha512",
"C:\\Users\\user\\.nuget\\packages\\neosmart.asynclock\\3.2.1\\neosmart.asynclock.3.2.1.nupkg.sha512",
@@ -123,12 +100,8 @@
"C:\\Users\\user\\.nuget\\packages\\nlog.web.aspnetcore\\5.3.11\\nlog.web.aspnetcore.5.3.11.nupkg.sha512",
"C:\\Users\\user\\.nuget\\packages\\otp.net\\1.4.0\\otp.net.1.4.0.nupkg.sha512",
"C:\\Users\\user\\.nuget\\packages\\pipelines.sockets.unofficial\\2.2.8\\pipelines.sockets.unofficial.2.2.8.nupkg.sha512",
- "C:\\Users\\user\\.nuget\\packages\\pomelo.entityframeworkcore.mysql\\8.0.2\\pomelo.entityframeworkcore.mysql.8.0.2.nupkg.sha512",
+ "C:\\Users\\user\\.nuget\\packages\\pomelo.entityframeworkcore.mysql\\8.0.3\\pomelo.entityframeworkcore.mysql.8.0.3.nupkg.sha512",
"C:\\Users\\user\\.nuget\\packages\\rabbitmq.client\\6.8.1\\rabbitmq.client.6.8.1.nupkg.sha512",
- "C:\\Users\\user\\.nuget\\packages\\runtime.native.system.data.sqlclient.sni\\4.7.0\\runtime.native.system.data.sqlclient.sni.4.7.0.nupkg.sha512",
- "C:\\Users\\user\\.nuget\\packages\\runtime.win-arm64.runtime.native.system.data.sqlclient.sni\\4.4.0\\runtime.win-arm64.runtime.native.system.data.sqlclient.sni.4.4.0.nupkg.sha512",
- "C:\\Users\\user\\.nuget\\packages\\runtime.win-x64.runtime.native.system.data.sqlclient.sni\\4.4.0\\runtime.win-x64.runtime.native.system.data.sqlclient.sni.4.4.0.nupkg.sha512",
- "C:\\Users\\user\\.nuget\\packages\\runtime.win-x86.runtime.native.system.data.sqlclient.sni\\4.4.0\\runtime.win-x86.runtime.native.system.data.sqlclient.sni.4.4.0.nupkg.sha512",
"C:\\Users\\user\\.nuget\\packages\\sharpcompress\\0.30.1\\sharpcompress.0.30.1.nupkg.sha512",
"C:\\Users\\user\\.nuget\\packages\\snappier\\1.0.0\\snappier.1.0.0.nupkg.sha512",
"C:\\Users\\user\\.nuget\\packages\\ssh.net\\2025.0.0\\ssh.net.2025.0.0.nupkg.sha512",
@@ -140,35 +113,28 @@
"C:\\Users\\user\\.nuget\\packages\\swashbuckle.aspnetcore.swagger\\7.2.0\\swashbuckle.aspnetcore.swagger.7.2.0.nupkg.sha512",
"C:\\Users\\user\\.nuget\\packages\\swashbuckle.aspnetcore.swaggergen\\7.2.0\\swashbuckle.aspnetcore.swaggergen.7.2.0.nupkg.sha512",
"C:\\Users\\user\\.nuget\\packages\\system.buffers\\4.5.1\\system.buffers.4.5.1.nupkg.sha512",
- "C:\\Users\\user\\.nuget\\packages\\system.codedom\\6.0.0\\system.codedom.6.0.0.nupkg.sha512",
+ "C:\\Users\\user\\.nuget\\packages\\system.codedom\\4.4.0\\system.codedom.4.4.0.nupkg.sha512",
"C:\\Users\\user\\.nuget\\packages\\system.collections.immutable\\6.0.0\\system.collections.immutable.6.0.0.nupkg.sha512",
- "C:\\Users\\user\\.nuget\\packages\\system.componentmodel.annotations\\5.0.0\\system.componentmodel.annotations.5.0.0.nupkg.sha512",
"C:\\Users\\user\\.nuget\\packages\\system.composition\\6.0.0\\system.composition.6.0.0.nupkg.sha512",
"C:\\Users\\user\\.nuget\\packages\\system.composition.attributedmodel\\6.0.0\\system.composition.attributedmodel.6.0.0.nupkg.sha512",
"C:\\Users\\user\\.nuget\\packages\\system.composition.convention\\6.0.0\\system.composition.convention.6.0.0.nupkg.sha512",
"C:\\Users\\user\\.nuget\\packages\\system.composition.hosting\\6.0.0\\system.composition.hosting.6.0.0.nupkg.sha512",
"C:\\Users\\user\\.nuget\\packages\\system.composition.runtime\\6.0.0\\system.composition.runtime.6.0.0.nupkg.sha512",
"C:\\Users\\user\\.nuget\\packages\\system.composition.typedparts\\6.0.0\\system.composition.typedparts.6.0.0.nupkg.sha512",
- "C:\\Users\\user\\.nuget\\packages\\system.configuration.configurationmanager\\6.0.1\\system.configuration.configurationmanager.6.0.1.nupkg.sha512",
- "C:\\Users\\user\\.nuget\\packages\\system.data.sqlclient\\4.8.6\\system.data.sqlclient.4.8.6.nupkg.sha512",
- "C:\\Users\\user\\.nuget\\packages\\system.diagnostics.diagnosticsource\\9.0.2\\system.diagnostics.diagnosticsource.9.0.2.nupkg.sha512",
- "C:\\Users\\user\\.nuget\\packages\\system.drawing.common\\6.0.0\\system.drawing.common.6.0.0.nupkg.sha512",
+ "C:\\Users\\user\\.nuget\\packages\\system.diagnostics.diagnosticsource\\8.0.0\\system.diagnostics.diagnosticsource.8.0.0.nupkg.sha512",
"C:\\Users\\user\\.nuget\\packages\\system.identitymodel.tokens.jwt\\8.9.0\\system.identitymodel.tokens.jwt.8.9.0.nupkg.sha512",
"C:\\Users\\user\\.nuget\\packages\\system.io.pipelines\\6.0.3\\system.io.pipelines.6.0.3.nupkg.sha512",
"C:\\Users\\user\\.nuget\\packages\\system.memory\\4.5.5\\system.memory.4.5.5.nupkg.sha512",
"C:\\Users\\user\\.nuget\\packages\\system.reactive\\6.0.0\\system.reactive.6.0.0.nupkg.sha512",
- "C:\\Users\\user\\.nuget\\packages\\system.reflection.emit\\4.7.0\\system.reflection.emit.4.7.0.nupkg.sha512",
"C:\\Users\\user\\.nuget\\packages\\system.reflection.metadata\\6.0.1\\system.reflection.metadata.6.0.1.nupkg.sha512",
"C:\\Users\\user\\.nuget\\packages\\system.runtime.compilerservices.unsafe\\6.0.0\\system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512",
- "C:\\Users\\user\\.nuget\\packages\\system.security.accesscontrol\\6.0.0\\system.security.accesscontrol.6.0.0.nupkg.sha512",
- "C:\\Users\\user\\.nuget\\packages\\system.security.cryptography.protecteddata\\6.0.0\\system.security.cryptography.protecteddata.6.0.0.nupkg.sha512",
- "C:\\Users\\user\\.nuget\\packages\\system.security.permissions\\6.0.0\\system.security.permissions.6.0.0.nupkg.sha512",
+ "C:\\Users\\user\\.nuget\\packages\\system.security.accesscontrol\\5.0.0\\system.security.accesscontrol.5.0.0.nupkg.sha512",
"C:\\Users\\user\\.nuget\\packages\\system.security.principal.windows\\5.0.0\\system.security.principal.windows.5.0.0.nupkg.sha512",
"C:\\Users\\user\\.nuget\\packages\\system.text.encoding.codepages\\6.0.0\\system.text.encoding.codepages.6.0.0.nupkg.sha512",
"C:\\Users\\user\\.nuget\\packages\\system.text.encodings.web\\8.0.0\\system.text.encodings.web.8.0.0.nupkg.sha512",
"C:\\Users\\user\\.nuget\\packages\\system.text.json\\8.0.0\\system.text.json.8.0.0.nupkg.sha512",
"C:\\Users\\user\\.nuget\\packages\\system.threading.channels\\7.0.0\\system.threading.channels.7.0.0.nupkg.sha512",
- "C:\\Users\\user\\.nuget\\packages\\system.windows.extensions\\6.0.0\\system.windows.extensions.6.0.0.nupkg.sha512",
+ "C:\\Users\\user\\.nuget\\packages\\ulid\\1.3.4\\ulid.1.3.4.nupkg.sha512",
"C:\\Users\\user\\.nuget\\packages\\yamldotnet\\16.3.0\\yamldotnet.16.3.0.nupkg.sha512",
"C:\\Users\\user\\.nuget\\packages\\zstdsharp.port\\0.7.3\\zstdsharp.port.0.7.3.nupkg.sha512"
],
diff --git a/BrokerApiCore/obj/project.packagespec.json b/BrokerApiCore/obj/project.packagespec.json
index 62d9947..12e3bfe 100644
--- a/BrokerApiCore/obj/project.packagespec.json
+++ b/BrokerApiCore/obj/project.packagespec.json
@@ -1 +1 @@
-"restore":{"projectUniqueName":"D:\\03.SVN\\03.caliverse\\Server\\CaliServer\\BrokerApiCore\\BrokerApiCore.csproj","projectName":"BrokerApiCore","projectPath":"D:\\03.SVN\\03.caliverse\\Server\\CaliServer\\BrokerApiCore\\BrokerApiCore.csproj","outputPath":"D:\\03.SVN\\03.caliverse\\Server\\CaliServer\\BrokerApiCore\\obj\\","projectStyle":"PackageReference","centralPackageVersionsManagementEnabled":true,"originalTargetFrameworks":["net8.0"],"sources":{"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\":{},"https://api.nuget.org/v3/index.json":{}},"frameworks":{"net8.0":{"targetAlias":"net8.0","projectReferences":{"D:\\03.SVN\\03.caliverse\\Server\\CaliServer\\ServerCommon\\ServerCommon.csproj":{"projectPath":"D:\\03.SVN\\03.caliverse\\Server\\CaliServer\\ServerCommon\\ServerCommon.csproj"}}}},"warningProperties":{"warnAsError":["NU1605"]},"restoreAuditProperties":{"enableAudit":"true","auditLevel":"low","auditMode":"direct"}}"frameworks":{"net8.0":{"targetAlias":"net8.0","dependencies":{"Microsoft.AspNetCore.Authentication.JwtBearer":{"target":"Package","version":"[8.0.2, )","versionCentrallyManaged":true},"Microsoft.EntityFrameworkCore.Design":{"include":"Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive","suppressParent":"All","target":"Package","version":"[8.0.2, )","versionCentrallyManaged":true},"Microsoft.EntityFrameworkCore.Tools":{"include":"Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive","suppressParent":"All","target":"Package","version":"[8.0.2, )","versionCentrallyManaged":true},"NLog.Web.AspNetCore":{"target":"Package","version":"[5.3.11, )","versionCentrallyManaged":true},"Pomelo.EntityFrameworkCore.MySql":{"target":"Package","version":"[8.0.2, )","versionCentrallyManaged":true},"Swashbuckle.AspNetCore.Annotations":{"target":"Package","version":"[7.2.0, )","versionCentrallyManaged":true}},"centralPackageVersions":{"Asp.Versioning.Mvc":"8.1.0","Asp.Versioning.Mvc.ApiExplorer":"8.1.0","AspNetCore.Swagger.Fluent.Annotations":"1.0.4","AsyncStateMachine":"1.3.2","AutoMapper":"14.0.0","AutoMapper.AspNetCore.OData.EFCore":"7.0.1","AutoMapper.Collection":"11.0.0","AutoMapper.Collection.EntityFrameworkCore":"11.0.0","AutoMapper.Contrib.Autofac.DependencyInjection":"9.0.0","AutoMapper.Data":"9.0.0","AutoMapper.EF6":"3.0.1","AutoMapper.Extensions.EnumMapping":"4.1.0","AutoMapper.Extensions.ExpressionMapping":"8.0.0","AWS.Logger.NLog":"3.3.4","AWSSDK.Core":"3.7.402.46","AWSSDK.DynamoDBv2":"3.7.407","AWSSDK.EC2":"3.7.330.4","AWSSDK.ElasticLoadBalancingV2":"3.7.303.15","AWSSDK.OpenSearchService":"3.7.404.81","AWSSDK.S3":"3.7.416.15","AWSSDK.SecurityToken":"3.7.401.89","Axion.ConcurrentHashSet":"1.0.0","BCrypt.Net-Next":"4.0.3","BouncyCastle.Cryptography":"2.5.1","CommandLineParser":"2.9.1","CommunityToolkit.Diagnostics":"8.2.2","CommunityToolkit.Mvvm":"8.2.2","Costura.Fody":"5.7.0","Csv":"2.0.93","DocumentFormat.OpenXml":"2.20.0","DotNet.MultiMap":"2.2.1","DumpExtensions":"2.0.0","ExcelDataReader":"3.6.0","ExcelDataReader.DataSet":"3.6.0","ExcelNumberFormat":"1.1.0","Google.Protobuf":"3.27.1","Grpc.AspNetCore":"2.63.0","Grpc.AspNetCore.Server.Reflection":"2.63.0","Grpc.Tools":"2.64.0","JWT":"11.0.0","MaterialDesignColors":"3.1.1-ci850","MaterialDesignThemes":"5.1.1-ci850","MaxMind.Db":"4.1.0","MaxMind.GeoIP2":"5.2.0","MediatR":"12.3.0","Microsoft.AspNetCore.Authentication.JwtBearer":"8.0.2","Microsoft.AspNetCore.Mvc.Testing":"8.0.2","Microsoft.AspNetCore.OpenApi":"8.0.6","Microsoft.Data.Sqlite":"8.0.6","Microsoft.Diagnostics.NETCore.Client":"0.2.621003","Microsoft.EntityFrameworkCore.Design":"8.0.2","Microsoft.EntityFrameworkCore.Tools":"8.0.2","Microsoft.Extensions.Caching.StackExchangeRedis":"8.0.6","Microsoft.Extensions.Configuration":"9.0.4","Microsoft.Extensions.Configuration.Abstractions":"8.0.0","Microsoft.Extensions.Configuration.UserSecrets":"8.0.0","Microsoft.Extensions.DependencyInjection":"8.0.0","Microsoft.Extensions.DependencyInjection.Abstractions":"8.0.1","Microsoft.Extensions.Hosting":"8.0.0","Microsoft.Extensions.Hosting.Abstractions":"8.0.0","Microsoft.Extensions.Http":"8.0.0","Microsoft.Extensions.Logging":"8.0.0","Microsoft.Extensions.Logging.Abstractions":"9.0.4","Microsoft.Extensions.Options":"9.0.4","Microsoft.Extensions.Options.ConfigurationExtensions":"8.0.0","Microsoft.NET.Test.Sdk":"17.12.0","Microsoft.OpenApi":"1.6.22","Microsoft.Xaml.Behaviors.Wpf":"1.1.122","MongoDB.Analyzer":"1.5.0","MongoDB.Bson":"3.3.0","MongoDB.Driver":"3.3.0","MongoDB.Driver.Core":"2.30.0","Moq":"4.20.72","MySqlConnector":"2.4.0","NeoSmart.AsyncLock":"3.2.1","Newtonsoft.Json":"13.0.3","Nito.AsyncEx":"5.1.2","NJsonSchema.CodeGeneration.CSharp":"10.9.0","NLog":"5.4.0","NLog.Web.AspNetCore":"5.3.11","Otp.NET":"1.4.0","p4api.net":"2023.1.248.4623","Polly":"8.5.1","Pomelo.EntityFrameworkCore.MySql":"8.0.2","RabbitMQ.Client":"6.8.1","SharpSvn":"1.14003.272","sqlite-net-pcl":"1.9.172","SSH.NET":"2025.0.0","StackExchange.Redis":"2.8.31","StackExchange.Redis.Extensions.Core":"11.0.0","StackExchange.Redis.Extensions.Newtonsoft":"11.0.0","StackExchange.Redis.MultiplexerPool":"2.2.0","Swashbuckle.AspNetCore":"7.2.0","Swashbuckle.AspNetCore.Annotations":"7.2.0","Swashbuckle.AspNetCore.Filters":"8.0.2","Swashbuckle.AspNetCore.SwaggerUI":"7.2.0","System.IdentityModel.Tokens.Jwt":"8.9.0","xunit":"2.9.3","xunit.assert":"2.9.2","xunit.runner.visualstudio":"3.0.1","YamlDotNet":"16.3.0"},"imports":["net461","net462","net47","net471","net472","net48","net481"],"assetTargetFallback":true,"warn":true,"frameworkReferences":{"Microsoft.NETCore.App":{"privateAssets":"all"}},"runtimeIdentifierGraphPath":"C:\\Program Files\\dotnet\\sdk\\8.0.303/PortableRuntimeIdentifierGraph.json"}}
\ No newline at end of file
+"restore":{"projectUniqueName":"D:\\03.SVN\\03.caliverse\\Server\\CaliServer\\BrokerApiCore\\BrokerApiCore.csproj","projectName":"BrokerApiCore","projectPath":"D:\\03.SVN\\03.caliverse\\Server\\CaliServer\\BrokerApiCore\\BrokerApiCore.csproj","outputPath":"D:\\03.SVN\\03.caliverse\\Server\\CaliServer\\BrokerApiCore\\obj\\","projectStyle":"PackageReference","centralPackageVersionsManagementEnabled":true,"originalTargetFrameworks":["net8.0"],"sources":{"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\":{},"https://api.nuget.org/v3/index.json":{}},"frameworks":{"net8.0":{"targetAlias":"net8.0","projectReferences":{"D:\\03.SVN\\03.caliverse\\Server\\CaliServer\\ServerCommon\\ServerCommon.csproj":{"projectPath":"D:\\03.SVN\\03.caliverse\\Server\\CaliServer\\ServerCommon\\ServerCommon.csproj"}}}},"warningProperties":{"warnAsError":["NU1605"]},"restoreAuditProperties":{"enableAudit":"true","auditLevel":"low","auditMode":"direct"}}"frameworks":{"net8.0":{"targetAlias":"net8.0","dependencies":{"Microsoft.AspNetCore.Authentication.JwtBearer":{"target":"Package","version":"[8.0.2, )","versionCentrallyManaged":true},"Microsoft.EntityFrameworkCore":{"target":"Package","version":"[8.0.13, )","versionCentrallyManaged":true},"Microsoft.EntityFrameworkCore.Design":{"include":"Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive","suppressParent":"All","target":"Package","version":"[8.0.13, )","versionCentrallyManaged":true},"Microsoft.EntityFrameworkCore.Relational":{"target":"Package","version":"[8.0.13, )","versionCentrallyManaged":true},"Microsoft.EntityFrameworkCore.Tools":{"include":"Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive","suppressParent":"All","target":"Package","version":"[8.0.13, )","versionCentrallyManaged":true},"NLog.Web.AspNetCore":{"target":"Package","version":"[5.3.11, )","versionCentrallyManaged":true},"Pomelo.EntityFrameworkCore.MySql":{"target":"Package","version":"[8.0.3, )","versionCentrallyManaged":true},"Swashbuckle.AspNetCore.Annotations":{"target":"Package","version":"[7.2.0, )","versionCentrallyManaged":true}},"centralPackageVersions":{"Asp.Versioning.Mvc":"8.1.0","Asp.Versioning.Mvc.ApiExplorer":"8.1.0","Aspire.Hosting.AppHost":"8.2.2","AspNetCore.Swagger.Fluent.Annotations":"1.0.4","AsyncStateMachine":"1.3.2","AutoMapper":"15.0.1","AWS.Logger.NLog":"3.3.4","AWSSDK.Core":"3.7.402.46","AWSSDK.DynamoDBv2":"3.7.407","AWSSDK.EC2":"3.7.330.4","AWSSDK.ElasticLoadBalancingV2":"3.7.303.15","AWSSDK.OpenSearchService":"3.7.404.81","AWSSDK.S3":"3.7.416.15","AWSSDK.SecurityToken":"3.7.401.89","Axion.ConcurrentHashSet":"1.0.0","BCrypt.Net-Next":"4.0.3","BouncyCastle.Cryptography":"2.5.1","CommandLineParser":"2.9.1","CommunityToolkit.Diagnostics":"8.2.2","CommunityToolkit.Mvvm":"8.2.2","Costura.Fody":"5.7.0","coverlet.collector":"6.0.4","Csv":"2.0.93","DocumentFormat.OpenXml":"2.20.0","DotNet.MultiMap":"2.2.1","DumpExtensions":"2.0.0","ExcelDataReader":"3.6.0","ExcelDataReader.DataSet":"3.6.0","ExcelNumberFormat":"1.1.0","FluentAssertions":"8.3.0","Google.Protobuf":"3.27.1","Grpc.AspNetCore":"2.63.0","Grpc.AspNetCore.Server.Reflection":"2.63.0","Grpc.Tools":"2.64.0","JWT":"11.0.0","MaterialDesignColors":"3.1.1-ci850","MaterialDesignThemes":"5.1.1-ci850","MaxMind.Db":"4.1.0","MaxMind.GeoIP2":"5.2.0","MediatR":"12.3.0","Microsoft.AspNetCore.Authentication.JwtBearer":"8.0.2","Microsoft.AspNetCore.Mvc.Testing":"8.0.2","Microsoft.AspNetCore.OpenApi":"8.0.6","Microsoft.Data.Sqlite":"8.0.6","Microsoft.Diagnostics.NETCore.Client":"0.2.621003","Microsoft.EntityFrameworkCore":"8.0.13","Microsoft.EntityFrameworkCore.Design":"8.0.13","Microsoft.EntityFrameworkCore.Relational":"8.0.13","Microsoft.EntityFrameworkCore.Tools":"8.0.13","Microsoft.Extensions.Caching.StackExchangeRedis":"8.0.6","Microsoft.Extensions.Configuration":"8.0.0","Microsoft.Extensions.Configuration.Abstractions":"8.0.0","Microsoft.Extensions.Configuration.UserSecrets":"8.0.0","Microsoft.Extensions.DependencyInjection":"8.0.0","Microsoft.Extensions.DependencyInjection.Abstractions":"8.0.1","Microsoft.Extensions.Hosting":"8.0.0","Microsoft.Extensions.Hosting.Abstractions":"8.0.0","Microsoft.Extensions.Http":"8.0.0","Microsoft.Extensions.Logging":"8.0.0","Microsoft.Extensions.Logging.Abstractions":"8.0.3","Microsoft.Extensions.Options":"8.0.2","Microsoft.Extensions.Options.ConfigurationExtensions":"8.0.0","Microsoft.NET.Test.Sdk":"17.12.0","Microsoft.OpenApi":"1.6.22","Microsoft.Xaml.Behaviors.Wpf":"1.1.122","MongoDB.Analyzer":"1.5.0","MongoDB.Bson":"3.3.0","MongoDB.Driver":"3.3.0","MongoDB.Driver.Core":"2.30.0","Moq":"4.20.72","MSTest.TestAdapter":"3.8.3","MSTest.TestFramework":"3.8.3","MySqlConnector":"2.4.0","NeoSmart.AsyncLock":"3.2.1","Newtonsoft.Json":"13.0.3","Nito.AsyncEx":"5.1.2","NJsonSchema.CodeGeneration.CSharp":"10.9.0","NLog":"5.4.0","NLog.Extensions.Logging":"5.3.11","NLog.Web.AspNetCore":"5.3.11","NSubstituteAutoSubstitute":"1.1.0","OneOf":"3.0.271","Otp.NET":"1.4.0","p4api.net":"2023.1.248.4623","Polly":"8.5.1","Pomelo.EntityFrameworkCore.MySql":"8.0.3","RabbitMQ.Client":"6.8.1","RedLock.net":"2.3.2","Sentry.AspNetCore":"5.10.0","Sentry.Extensions.Logging":"5.10.0","Sentry.NLog":"5.10.0","SharpSvn":"1.14003.272","sqlite-net-pcl":"1.9.172","SSH.NET":"2025.0.0","StackExchange.Redis":"2.8.31","StackExchange.Redis.Extensions.Core":"11.0.0","StackExchange.Redis.Extensions.Newtonsoft":"11.0.0","StackExchange.Redis.MultiplexerPool":"2.2.0","Swashbuckle.AspNetCore":"7.2.0","Swashbuckle.AspNetCore.Annotations":"7.2.0","Swashbuckle.AspNetCore.Filters":"8.0.2","Swashbuckle.AspNetCore.SwaggerUI":"7.2.0","System.IdentityModel.Tokens.Jwt":"8.9.0","System.IO.Hashing":"8.0.0","Ulid":"1.3.4","xunit":"2.9.3","xunit.assert":"2.9.3","xunit.extensibility.core":"2.9.3","xunit.runner.visualstudio":"3.0.1","YamlDotNet":"16.3.0"},"imports":["net461","net462","net47","net471","net472","net48","net481"],"assetTargetFallback":true,"warn":true,"frameworkReferences":{"Microsoft.NETCore.App":{"privateAssets":"all"}},"runtimeIdentifierGraphPath":"C:\\Program Files\\dotnet\\sdk\\8.0.303/PortableRuntimeIdentifierGraph.json"}}
\ No newline at end of file
diff --git a/BrokerApiCore/obj/rider.project.model.nuget.info b/BrokerApiCore/obj/rider.project.model.nuget.info
index c69393a..24b7b8d 100644
--- a/BrokerApiCore/obj/rider.project.model.nuget.info
+++ b/BrokerApiCore/obj/rider.project.model.nuget.info
@@ -1 +1 @@
-17447875961277534
\ No newline at end of file
+17538446637724083
\ No newline at end of file
diff --git a/BrokerApiCore/obj/rider.project.restore.info b/BrokerApiCore/obj/rider.project.restore.info
index de1d89a..24b7b8d 100644
--- a/BrokerApiCore/obj/rider.project.restore.info
+++ b/BrokerApiCore/obj/rider.project.restore.info
@@ -1 +1 @@
-17460517968336276
\ No newline at end of file
+17538446637724083
\ No newline at end of file
diff --git a/BrokerApiServer/BrokerApiServer.csproj b/BrokerApiServer/BrokerApiServer.csproj
index dbec9e9..ef6934b 100644
--- a/BrokerApiServer/BrokerApiServer.csproj
+++ b/BrokerApiServer/BrokerApiServer.csproj
@@ -1,5 +1,4 @@
-
-
+
Exe
net8.0
@@ -8,108 +7,55 @@
true
true
Debug;Release;Shipping
- true
8600,8602,8603,8604
true
+ true
true
UTF-8
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
1591
full
-
+ $(DefineConstants);SEQUENCE
-
1591
full
-
+ $(DefineConstants);SEQUENCE
-
1591
full
true
-
+ $(DefineConstants);SEQUENCE
-
+
+
+
-
+
- all
- runtime; build; native; contentfiles; analyzers; buildtransitive
+ all
+ runtime; build; native; contentfiles; analyzers; buildtransitive
- all
- runtime; build; native; contentfiles; analyzers; buildtransitive
+ all
+ runtime; build; native; contentfiles; analyzers; buildtransitive
-
-
+
+
-
-
-
-
-
+
+
+
+
-
-
- <_ContentIncludedByDefault Remove="_Config\nlog.config" />
- <_ContentIncludedByDefault Remove="_Config\ServerConfig-Local.json" />
- <_ContentIncludedByDefault Remove="_Config\ServerConfig.json" />
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/BrokerApiServer/BrokerServerService.cs b/BrokerApiServer/BrokerServerService.cs
new file mode 100644
index 0000000..eb96bc5
--- /dev/null
+++ b/BrokerApiServer/BrokerServerService.cs
@@ -0,0 +1,111 @@
+using CommandLine;
+
+using ControlCenter.NamedPipe.Model;
+
+using ServerBase;
+
+using ServerCore;
+
+namespace BrokerApiServer;
+
+using BrokerApiCore;
+
+public class BrokerServerService
+{
+ public class CmdOptions
+ {
+ [Option("config", Default = "ServerConfig.json")]
+ public string Config { get; set; } = "ServerConfig.json";
+
+ [Option('p', "port", Default = 12000, Required = true, HelpText = "Server Port")]
+ public int Port { get; init; } = 12000;
+
+ [Option('s', "swagger", Default = false, Required = false, HelpText = "Show Swagger Mode")]
+ public bool UseSwagger { get; init; } = false;
+ }
+
+ private BrokerServerLogic? _serverLogic;
+ private CancellationTokenSource _onStartCts = new();
+ public BrokerServerLogic ServerLogic => _serverLogic!;
+ public CmdOptions Options { get; private set; } = new();
+
+ public bool IsRunning { get; private set; } = false;
+
+ public async Task> GetServerInfosByServerType(ServerType serverType)
+ {
+ var (result, serverInfos) = await ServerLogic.getServerInfosByServerType(serverType);
+ return result.isFail() ? [] : serverInfos;
+ }
+
+ public async Task Run(string[] args)
+ {
+ var result = new Result();
+
+ Log.getLogger().info($"GameServer start");
+
+ var name = nameof(BrokerServerService);
+
+ ParserResult? parser_result = Parser.Default.ParseArguments(args);
+ Options = parser_result?.Value ?? new CmdOptions();
+ try
+ {
+ await RunServer(Options);
+ }
+ catch (Exception e)
+ {
+ var err_msg = $"Exception !!!, {name}.runServer() : message:{e}";
+ result.setFail(ServerErrorCode.TryCatchException, err_msg);
+ await _onStartCts.CancelAsync();
+ }
+ finally
+ {
+ if (result.isFail())
+ {
+ Log.getLogger().error($"{name} finally error !!! - {result.toBasicString()}");
+ }
+ }
+
+ Log.getLogger().info($"{name} terminated");
+ Log.shutdown();
+ return 0;
+ }
+
+ private async Task RunServer(CmdOptions argCmdOptions)
+ {
+ var result = new Result();
+
+ var key_options = new Dictionary { { "config", argCmdOptions.Config }, };
+
+ var configuration = new ConfigurationBuilder().AddInMemoryCollection(key_options!).Build();
+ NullReferenceCheckHelper.throwIfNull(configuration, () => $"configuration is null !!!");
+ var server_config = new ServerConfig();
+ server_config.setAppParamPort((ushort)argCmdOptions.Port);
+
+ _serverLogic = new BrokerServerLogic(server_config);
+ _serverLogic.setServerType(nameof(ServerType.BrokerApi));
+ _serverLogic.setConfiguration(configuration);
+ _serverLogic.OnServerStart = () => { _onStartCts.Cancel(); };
+
+ var namedOptionBuilder = new NamedPipeClientOptionBuilder();
+ namedOptionBuilder.setIP(NetworkHelper.getEthernetLocalIPv4())
+ .setPort(argCmdOptions.Port)
+ .setType(nameof(ServerType.BrokerApi))
+ .setServiceCategory(nameof(ServiceCategory.Caliverse));
+
+ result = await _serverLogic.onRunServer(namedOptionBuilder);
+ if (result.isFail())
+ {
+ return result;
+ }
+
+ return result;
+ }
+
+ public async Task WaitOnStart()
+ {
+ while (!_onStartCts.IsCancellationRequested)
+ {
+ await Task.Delay(10);
+ }
+ }
+}
diff --git a/BrokerApiServer/BrokerServiceExtensions.cs b/BrokerApiServer/BrokerServiceExtensions.cs
new file mode 100644
index 0000000..5659083
--- /dev/null
+++ b/BrokerApiServer/BrokerServiceExtensions.cs
@@ -0,0 +1,73 @@
+using ServerBase;
+using ServerCore;
+using System.Reflection;
+using static ControlCenter.NamedPipeHost.Extensions.ExtensionsForClient;
+
+namespace BrokerApiServer;
+public static class BrokerServiceExtensions
+{
+ public static void AddBrokerServerService(this IServiceCollection services, string[] args)
+ {
+ var server = new BrokerServerService();
+ _ = server.Run(args);
+ server.WaitOnStart().Wait();
+
+ var broker_server_config = AppBuilderExtensions.initBrokerServerConfig();
+
+ services.AddSingleton(server);
+ services.AddSingleton(server.ServerLogic);
+ services.AddSingleton(x => server.ServerLogic.getServerConfig());
+ services.AddSingleton(x => server.ServerLogic.getDynamoDbClient());
+ services.addCoreServices(broker_server_config);
+ services.addInfraServices(broker_server_config);
+
+ services.AddHttpContextAccessor();
+ services.AddEndpointsApiExplorer();
+ services.AddControllers(options => { options.Filters.Add(new ResultExceptionFilter()); });
+ services.AddHealthChecks();
+ services.AddSwaggerGen(SwaggerSettingHelper.setSwaggerGen);
+
+ var useControlCenter = broker_server_config.ServiceType != nameof(ServiceType.Dev);
+ if (useControlCenter)
+ {
+ var assemblies = new List(AppDomain.CurrentDomain.GetAssemblies());
+ services.AddNamedPipelineClientManager(assemblies, ServerControlCenter.ServerType.BrokerApi,
+ nameof(ServiceCategory.Caliverse), NetworkHelper.getEthernetLocalIPv4(), server.Options.Port);
+ }
+ }
+
+ public static void UseBrokerServerService(this WebApplication app)
+ {
+ var server = app.Services.GetRequiredService();
+ app.UseCors("Everything");
+ app.UseHttpsRedirection();
+ app.UseMiddleware();
+ app.UseAuthorization();
+ app.UseRouting();
+ app.MapControllers();
+ if (server.Options.UseSwagger)
+ {
+ app.UseSwagger();
+ app.UseSwaggerUI();
+ }
+
+ app.MapHealthChecks("/healthcheck");
+ app.metadataMangerInit();
+ app.validateRepoConnections();
+
+ var useControlCenter = server.ServerLogic.getServerConfig().ServiceType != nameof(ServiceType.Dev);
+ if (useControlCenter)
+ {
+ app.UseNamedPipelineClientManager();
+ }
+
+ // 호스트 시작 종료 콜백 처리
+ var logger = Log.getLogger();
+ var serviceProvider = app.Services;
+ serviceProvider.GetRequiredService().ApplicationStarted.Register(() =>
+ {
+ logger.Info($"Broker Api Server Service Started");
+ });
+ serviceProvider.GetRequiredService().ApplicationStopped.Register(Log.shutdown);
+ }
+}
diff --git a/BrokerApiServer/Common/RequireAdminAuthAttribute.cs b/BrokerApiServer/Common/RequireAdminAuthAttribute.cs
index f0b84c1..a0e22b4 100644
--- a/BrokerApiServer/Common/RequireAdminAuthAttribute.cs
+++ b/BrokerApiServer/Common/RequireAdminAuthAttribute.cs
@@ -1,12 +1,8 @@
-using Microsoft.AspNetCore.Mvc.Filters;
-
-
-using System.IdentityModel.Tokens.Jwt;
+using System.IdentityModel.Tokens.Jwt;
using System.Security.Claims;
using System.Text;
-
+using Microsoft.AspNetCore.Mvc.Filters;
using Microsoft.IdentityModel.Tokens;
-
using ServerCore;
namespace BrokerApiServer;
diff --git a/BrokerApiServer/Common/RequirePlanetAuthAttribute.cs b/BrokerApiServer/Common/RequirePlanetAuthAttribute.cs
index fd61d87..6b3f73d 100644
--- a/BrokerApiServer/Common/RequirePlanetAuthAttribute.cs
+++ b/BrokerApiServer/Common/RequirePlanetAuthAttribute.cs
@@ -1,5 +1,5 @@
-using Microsoft.AspNetCore.Mvc.Filters;
-using BrokerApiCore;
+using BrokerApiCore;
+using Microsoft.AspNetCore.Mvc.Filters;
namespace BrokerApiServer;
diff --git a/BrokerApiServer/Common/RequireUserJwtAuthAttribute.cs b/BrokerApiServer/Common/RequireUserJwtAuthAttribute.cs
index 9432403..e036727 100644
--- a/BrokerApiServer/Common/RequireUserJwtAuthAttribute.cs
+++ b/BrokerApiServer/Common/RequireUserJwtAuthAttribute.cs
@@ -1,6 +1,5 @@
-using Microsoft.AspNetCore.Mvc.Filters;
-
-using BrokerApiCore;
+using BrokerApiCore;
+using Microsoft.AspNetCore.Mvc.Filters;
namespace BrokerApiServer;
diff --git a/BrokerApiServer/Common/ResultExceptionFilter.cs b/BrokerApiServer/Common/ResultExceptionFilter.cs
index 9fff12d..12baca4 100644
--- a/BrokerApiServer/Common/ResultExceptionFilter.cs
+++ b/BrokerApiServer/Common/ResultExceptionFilter.cs
@@ -1,8 +1,7 @@
-using Microsoft.AspNetCore.Mvc;
+using BrokerApiCore;
+using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Filters;
-
using ServerCore;
-using BrokerApiCore;
namespace BrokerApiServer;
diff --git a/BrokerApiServer/Controllers/AccountController.cs b/BrokerApiServer/Controllers/AccountController.cs
deleted file mode 100644
index df9469c..0000000
--- a/BrokerApiServer/Controllers/AccountController.cs
+++ /dev/null
@@ -1,51 +0,0 @@
-// using Microsoft.AspNetCore.Mvc;
-//
-// using Swashbuckle.AspNetCore.Annotations;
-//
-// using BrokerCore.ApiModels;
-// using BrokerCore.Common;
-//
-// namespace BrokerApiServer.Controllers;
-//
-// using BrokerCore.Services;
-//
-// using Common;
-//
-// [Route("api/v1/account")]
-// [ApiController, SwaggerTag("**PlanetUser 항목으로 이전 후 삭제 예정** (3월 말 예정)")]
-// // 플래닛에서 b2b 유저 로그인하는 컨트롤러
-// public class AccountController : PlanetAuthControllerBase
-// {
-// private readonly UserAuthService m_user_auth_service;
-//
-// public AccountController(UserAuthService userAuthService)
-// {
-// m_user_auth_service = userAuthService;
-// }
-//
-// [SwaggerIgnore]
-// [HttpPost, Route("login"), RequirePlanetAuth]
-// [Produces("application/json")]
-// [ProducesResponseType(typeof(LoginResponse), StatusCodes.Status200OK)]
-// [ProducesResponseType(typeof(ApiErrorResponse), StatusCodes.Status400BadRequest)]
-// [SwaggerOperation(Summary = "웹 포털 런처 토큰으로 칼리버스 유저 인증 처리 (삭제 예정 - 3월말 런칭에 불포함)",
-// Description = "플래닛의 클라이언트 구동 시 항상 유저 인증 후 실행해야 함")]
-// public async Task login([FromBody] LoginRequest request)
-// {
-// Guard.Against.isNull(request, ServerErrorCode.InvalidRequest, "Request is empty");
-// Guard.Against.isNullOrEmptyOrWhiteSpace(request.WebPortalToken, ServerErrorCode.InvalidRequest,
-// "WebPortalToken does not exist");
-//
-// var result = await m_user_auth_service.authByWebPortalToken(request.WebPortalToken, this.PlanetId);
-// Guard.Against.resultFail(result);
-// return Ok(new LoginResponse { UserGuid = m_user_auth_service.UserGuid, Nickname = m_user_auth_service.Nickname, });
-// }
-//
-// [SwaggerIgnore]
-// [HttpPost, Route("dummy")]
-// public async Task dummy([FromBody] DummyRequest request)
-// {
-// await Task.CompletedTask;
-// return Ok(new DummyResponse { Dummy = request.Dummy });
-// }
-// }
diff --git a/BrokerApiServer/Controllers/AdminController.cs b/BrokerApiServer/Controllers/AdminController.cs
index 0dc8b19..8f4d2a2 100644
--- a/BrokerApiServer/Controllers/AdminController.cs
+++ b/BrokerApiServer/Controllers/AdminController.cs
@@ -1,13 +1,10 @@
-using BrokerApiServer;
+using BrokerApiCore;
+
using Microsoft.AspNetCore.Mvc;
using ServerBase;
using ServerCommon;
using Swashbuckle.AspNetCore.Annotations;
-
-
-using BrokerApiCore;
namespace BrokerApiServer.Controllers;
-
[Route("api/v1/admin")]
[ApiController]
// 운영자만 접근 가능한 컨트롤러
@@ -118,4 +115,49 @@ public class AdminController : ControllerBase
});
return Ok(new PlanetItemExchangeOrderListResponse { Orders = order_dtos, TotalCount = total_count });
}
+
+
+ [HttpPost("planet_provider_create"), RequireAdminAuth]
+ [Produces("application/json")]
+ [ProducesResponseType(StatusCodes.Status200OK, Type = typeof(AdminPlanetProviderInfoCreateResponse))]
+ [ProducesResponseType(StatusCodes.Status400BadRequest, Type = typeof(ApiErrorResponse))]
+ [SwaggerOperation(Summary = "서비스 제공자 생성 [Bearer 인증 필요]")]
+ public async Task planetProviderCreate(AdminPlanetProviderInfoCreateRequest request)
+ {
+ await Task.CompletedTask;
+ return Ok(new { });
+ }
+
+ [HttpPost("planet_provider_delete"), RequireAdminAuth]
+ [Produces("application/json")]
+ [ProducesResponseType(StatusCodes.Status200OK, Type = typeof(AdminPlanetProviderInfoDeleteResponse))]
+ [ProducesResponseType(StatusCodes.Status400BadRequest, Type = typeof(ApiErrorResponse))]
+ [SwaggerOperation(Summary = "서비스 제공자 삭제 [Bearer 인증 필요]")]
+ public async Task planetProviderDelete(AdminPlanetProviderInfoDeleteRequest request)
+ {
+ await Task.CompletedTask;
+ return Ok(new { });
+ }
+
+ [HttpPost("planet_provider_get"), RequireAdminAuth]
+ [Produces("application/json")]
+ [ProducesResponseType(StatusCodes.Status200OK, Type = typeof(AdminPlanetProviderInfoGetResponse))]
+ [ProducesResponseType(StatusCodes.Status400BadRequest, Type = typeof(ApiErrorResponse))]
+ [SwaggerOperation(Summary = "서비스 제공자 정보 조회 [Bearer 인증 필요]")]
+ public async Task planetProviderRead(AdminPlanetProviderInfoGetRequest request)
+ {
+ await Task.CompletedTask;
+ return Ok(new { });
+ }
+
+ [HttpPost("planet_provider_update"), RequireAdminAuth]
+ [Produces("application/json")]
+ [ProducesResponseType(StatusCodes.Status200OK, Type = typeof(AdminPlanetProviderInfoUpdateResponse))]
+ [ProducesResponseType(StatusCodes.Status400BadRequest, Type = typeof(ApiErrorResponse))]
+ [SwaggerOperation(Summary = "서비스 제공자 정보 수정 [Bearer 인증 필요]")]
+ public async Task planetProviderUpdate(AdminPlanetProviderInfoUpdateRequest request)
+ {
+ await Task.CompletedTask;
+ return Ok(new { });
+ }
}
diff --git a/BrokerApiServer/Controllers/CurrencyController.cs b/BrokerApiServer/Controllers/CurrencyController.cs
deleted file mode 100644
index 78e6fb6..0000000
--- a/BrokerApiServer/Controllers/CurrencyController.cs
+++ /dev/null
@@ -1,166 +0,0 @@
-// using Asp.Versioning;
-//
-// using BrokerCore.ApiModels;
-// using BrokerCore.Common;
-// using BrokerCore.Services;
-// using BrokerCore.DbEntity;
-//
-// using Microsoft.AspNetCore.Mvc;
-//
-// using Swashbuckle.AspNetCore.Annotations;
-//
-// namespace BrokerApiServer.Controllers;
-//
-// using Common;
-//
-// [ApiVersion("1.0")]
-// [Route("api/v1")]
-// [ApiController, SwaggerTag("**PlanetUser 항목으로 이전 후 삭제 예정** (3월 말 예정)")]
-// // 플래닛에서 b2b로 통신하는 컨트롤러
-// public sealed class CurrencyController : PlanetAuthControllerBase
-// {
-// private readonly SapphireExchangeService m_exchange_service;
-//
-// public CurrencyController(
-// SapphireExchangeService exchangeService)
-// {
-// m_exchange_service = exchangeService;
-// }
-//
-// [SwaggerIgnore]
-// [HttpPost("balance/sapphire"), RequirePlanetAuth]
-// [Produces("application/json")]
-// [ProducesResponseType(StatusCodes.Status200OK, Type = typeof(SapphireResponse))]
-// [ProducesResponseType(StatusCodes.Status400BadRequest, Type = typeof(ApiErrorResponse))]
-// [SwaggerOperation(Summary = "사파이어 현재 수량 조회")]
-// public async Task getSapphireBalance(SapphireRequest request)
-// {
-// await m_exchange_service.authUser(request.UserGuid, this.PlanetId);
-//
-// var current_sapphire_amount = await m_exchange_service.getCurrentSapphire();
-// return Ok(new SapphireResponse { Amount = current_sapphire_amount });
-// }
-//
-// [SwaggerIgnore]
-// [HttpPost("exchange/order/list"), RequirePlanetAuth]
-// [Produces("application/json")]
-// [ProducesResponseType(StatusCodes.Status200OK, Type = typeof(ExchangeOrderListResponse))]
-// [ProducesResponseType(StatusCodes.Status400BadRequest, Type = typeof(ApiErrorResponse))]
-// [SwaggerOperation(Summary = "사파이어 교환 주문 목록 조회")]
-// public async Task getOrders(
-// [SwaggerRequestBody] ExchangeOrderListRequest request,
-// CancellationToken cancellationToken)
-// {
-// var planet_id = this.PlanetId;
-// var user_guid = request.UserGuid;
-// await m_exchange_service.authUser(user_guid, this.PlanetId);
-//
-// ExchangeOrderStatus? order_status = request switch
-// {
-// { Option: FindOption.Completed } => ExchangeOrderStatus.Completed,
-// { Option: FindOption.Pending } => ExchangeOrderStatus.Pending,
-// _ => null // 전체 조회
-// };
-// var orders =
-// await m_exchange_service.findOrderList(planet_id, user_guid, order_status, request.PageIndex,
-// request.PageSize, "desc", cancellationToken);
-// var mapped_orders = orders.Select(x => new ExchangeOrder
-// {
-// OrderId = x.OrderId,
-// SapphireAmount = x.SapphireReducedDelta,
-// SapphireReduceAmount = x.SapphireReducedDelta,
-// EmeraldAmount = x.PlanetMoneyIncDelta,
-// CreatedAt = x.CreatedAt,
-// CompletedAt = x.CompletedAt,
-// Status = x.OrderStatus
-// });
-// return Ok(new ExchangeOrderListResponse { Orders = mapped_orders });
-// }
-//
-// // [HttpPost("exchange/order/list_for_user"), RequireUserJwtAuth]
-// // [Produces("application/json")]
-// // [ProducesResponseType(StatusCodes.Status200OK, Type = typeof(ExchangeOrderListResponse))]
-// // [ProducesResponseType(StatusCodes.Status400BadRequest, Type = typeof(ApiErrorResponse))]
-// // [SwaggerOperation(Summary = "사파이어 교환 주문 목록 조회")]
-// // public async Task getOrdersForUser(
-// // [SwaggerRequestBody] ExchangeOrderListRequest request,
-// // CancellationToken cancellationToken)
-// // {
-// // var planet_id = this.PlanetId;
-// // var user_guid = request.UserGuid;
-// // await m_exchange_service.authUser(user_guid, planet_id);
-// //
-// // ExchangeOrderStatus? order_status = request switch
-// // {
-// // { Option: FindOption.Completed } => ExchangeOrderStatus.Completed,
-// // { Option: FindOption.Pending } => ExchangeOrderStatus.Pending,
-// // _ => null // 전체 조회
-// // };
-// // var orders =
-// // await m_exchange_service.findOrderList(planet_id, user_guid, order_status, request.PageIndex,
-// // request.PageSize, request.SortOrder, cancellationToken);
-// // var mapped_orders = orders.Select(x => new ExchangeOrder
-// // {
-// // OrderId = x.OrderId,
-// // SapphireAmount = x.SapphireReducedDelta,
-// // SapphireReduceAmount = x.SapphireReducedDelta,
-// // EmeraldAmount = x.PlanetMoneyIncDelta,
-// // CreatedAt = x.CreatedAt,
-// // CompletedAt = x.CompletedAt,
-// // Status = x.OrderStatus
-// // });
-// // return Ok(new ExchangeOrderListResponse { Orders = mapped_orders });
-// // }
-//
-// [SwaggerIgnore]
-// [HttpPost("exchange/order/create"), RequirePlanetAuth]
-// [ProducesResponseType(StatusCodes.Status200OK, Type = typeof(ExchangeOrderResponse))]
-// [ProducesResponseType(StatusCodes.Status400BadRequest, Type = typeof(ApiErrorResponse))]
-// [SwaggerOperation(Summary = "사파이어 교환 주문 체결 (사파이어 차감)")]
-// public async Task createOrder(
-// ExchangeOrderRequest request,
-// CancellationToken cancellationToken)
-// {
-// var user_guid = request.UserGuid;
-// await m_exchange_service.authUser(user_guid, this.PlanetId);
-// // 메타버스 클라이언트에서 정상적으로
-// Guard.Against.isTrue(m_exchange_service.isUserLoggedIn(),
-// ServerErrorCode.MetaverseClientOnConnected,
-// "메타버스에 접속 중인 상태. 메타버스에서 정상적으로 로그아웃 한 후에 다시 시도 바람.");
-//
-// var (order, current_sapphire_balance) =
-// await m_exchange_service.createOrder(this.PlanetId, this.PlanetServerType, request.Sapphire,
-// request.Emerald);
-//
-// var response = new ExchangeOrderResponse
-// {
-// OrderId = order.OrderId,
-// SapphireAmount = order.SapphireReducedDelta,
-// EmeraldAmount = order.PlanetMoneyIncDelta,
-// CurrentSapphireBalance = current_sapphire_balance,
-// };
-// return Ok(response);
-// }
-//
-// [SwaggerIgnore]
-// [HttpPost("exchange/order/complete"), RequirePlanetAuth]
-// [ProducesResponseType(StatusCodes.Status200OK, Type = typeof(ExchangeOrderCompleteResponse))]
-// [ProducesResponseType(StatusCodes.Status400BadRequest, Type = typeof(ApiErrorResponse))]
-// [SwaggerOperation(Summary = "사파이어 교환 완료 (완료된 이후에 에메랄드 지급")]
-// public async Task completeOrder(
-// ExchangeOrderCompleteRequest request,
-// CancellationToken cancellationToken)
-// {
-// await m_exchange_service.authUser(request.UserGuid, this.PlanetId);
-//
-// var order = await m_exchange_service.completeOrder(request.OrderId, cancellationToken);
-// var response = new ExchangeOrderCompleteResponse
-// {
-// OrderId = order.OrderId,
-// SapphireAmount = order.SapphireReducedDelta,
-// EmeraldAmount = order.PlanetMoneyIncDelta,
-// Status = order.OrderStatus,
-// };
-// return Ok(response);
-// }
-// }
diff --git a/BrokerApiServer/Controllers/PlanetController.cs b/BrokerApiServer/Controllers/PlanetController.cs
index 6f6a744..dca6d6b 100644
--- a/BrokerApiServer/Controllers/PlanetController.cs
+++ b/BrokerApiServer/Controllers/PlanetController.cs
@@ -1,6 +1,6 @@
-using Microsoft.AspNetCore.Mvc;
+using BrokerApiCore;
+using Microsoft.AspNetCore.Mvc;
using Swashbuckle.AspNetCore.Annotations;
-using BrokerApiCore;
namespace BrokerApiServer.Controllers;
diff --git a/BrokerApiServer/Controllers/PlanetUserController.cs b/BrokerApiServer/Controllers/PlanetUserController.cs
index f777463..7b3c361 100644
--- a/BrokerApiServer/Controllers/PlanetUserController.cs
+++ b/BrokerApiServer/Controllers/PlanetUserController.cs
@@ -1,9 +1,8 @@
using System.ComponentModel;
+using BrokerApiCore;
using Microsoft.AspNetCore.Mvc;
using Swashbuckle.AspNetCore.Annotations;
-using BrokerApiCore;
-
namespace BrokerApiServer;
[Route("api/v1/planet/user")]
@@ -34,6 +33,7 @@ public class PlanetUserController : PlanetAuthControllerBase
var result = await m_user_auth_service.authByWebPortalToken(request.WebPortalToken, this.PlanetId);
Guard.Against.resultFail(result);
+
return Ok(new LoginResponse
{
UserGuid = m_user_auth_service.UserGuid, Nickname = m_user_auth_service.Nickname,
@@ -54,21 +54,6 @@ public class PlanetUserController : PlanetAuthControllerBase
return Ok(new CurrencyBalanceResponse { CaliverseCurrencyType = request.CaliverseCurrencyType, Amount = current_sapphire_amount });
}
- // [SwaggerIgnore]
- // [HttpPost("sapphire"), RequirePlanetAuth]
- // [Produces("application/json")]
- // [ProducesResponseType(StatusCodes.Status200OK, Type = typeof(CurrencyBalanceResponse))]
- // [ProducesResponseType(StatusCodes.Status400BadRequest, Type = typeof(ApiErrorResponse))]
- // [SwaggerOperation(Summary = "!! 삭제 예정 => 칼리버스 측 재화 현재 수량 조회로 대체 [Bearer 인증 필요]")]
- // public async Task getSapphireBalance(CurrencyBalanceRequest request)
- // {
- // var sso_account_id = string.Empty;
- // await m_exchange_service.validateAndGetUser(sso_account_id, request.UserGuid, this.PlanetId);
- //
- // var current_sapphire_amount = await m_exchange_service.getCurrentSapphire();
- // return Ok(new CurrencyBalanceResponse { Amount = current_sapphire_amount });
- // }
-
[HttpPost("exchange/order/list"), RequirePlanetAuth]
[Produces("application/json")]
[ProducesResponseType(StatusCodes.Status200OK, Type = typeof(PlanetItemExchangeOrderListResponse))]
diff --git a/BrokerApiServer/Controllers/UserController.cs b/BrokerApiServer/Controllers/UserController.cs
deleted file mode 100644
index 843520d..0000000
--- a/BrokerApiServer/Controllers/UserController.cs
+++ /dev/null
@@ -1,93 +0,0 @@
-//
-// using Asp.Versioning;
-//
-// using BrokerCore.ApiModels;
-// using BrokerCore.Common;
-// using BrokerCore.DbEntity;
-// using BrokerCore.Services;
-//
-// using Microsoft.AspNetCore.Mvc;
-//
-// using ServerCommon;
-//
-// using Swashbuckle.AspNetCore.Annotations;
-//
-// namespace BrokerApiServer.Controllers;
-//
-// [ApiVersion("1.0")]
-// [Route("api/v1/user")]
-// [ApiController, SwaggerTag("**PlanetUser 항목으로 이전 후 삭제 예정** (3월 말 예정)")]
-// // 특별한 인증 없이 런처 토큰만으로도 사용 가능한 컨트롤러
-// public class UserController : ControllerBase
-// {
-// private readonly SapphireExchangeService m_exchange_service;
-// private readonly IServerLogic m_server_logic;
-//
-// public UserController(
-// IServerLogic serverLogic,
-// SapphireExchangeService exchangeService)
-// {
-// m_server_logic = serverLogic;
-// m_exchange_service = exchangeService;
-// }
-//
-// [SwaggerIgnore]
-// [HttpPost("balance/sapphire"), RequireUserJwtAuth]
-// [Produces("application/json")]
-// [ProducesResponseType(StatusCodes.Status200OK, Type = typeof(UserSapphireResponse))]
-// [ProducesResponseType(StatusCodes.Status400BadRequest, Type = typeof(ApiErrorResponse))]
-// [SwaggerOperation(Summary = "유저 사파이어 현재 수량 조회 (유저 sso jwt bearer header 필요)",
-// Description = "웹 런처에서 발급한 토큰을 header의 authorization에 bearer 형식으로 넣어주세요.")]
-// public async Task getSapphireBalance(UserSapphireRequest _)
-// {
-// var dynamo_db_client = m_server_logic.getDynamoDbClient();
-// var user_guid = this.HttpContext.Items["user_guid"] as string ?? string.Empty;
-// CurrencyControlHelper.setDbConnector(dynamo_db_client);
-// var (result, current_sapphire_amount_double) =
-// await CurrencyControlHelper.getMoneyByUserGuid(user_guid, CurrencyType.Sapphire);
-// Guard.Against.resultFail(result);
-//
-// var current_sapphire_amount = Convert.ToInt64(current_sapphire_amount_double);
-// return Ok(new UserSapphireResponse { SapphireAmount = current_sapphire_amount });
-// }
-//
-// [SwaggerIgnore]
-// [HttpPost("exchange/order/list"), RequireUserJwtAuth]
-// [Produces("application/json")]
-// [ProducesResponseType(StatusCodes.Status200OK, Type = typeof(UserExchangeOrderListResponse))]
-// [ProducesResponseType(StatusCodes.Status400BadRequest, Type = typeof(ApiErrorResponse))]
-// [SwaggerOperation(Summary = "유저 사파이어 교환 주문 목록 조회 (유저 sso jwt bearer header 필요)",
-// Description = "웹 런처에서 발급한 토큰을 header의 authorization에 bearer 형식으로 넣어주세요.\n 이기몹의 PlanetId는 igm26_iggymob 입니다.")]
-// public async Task getOrdersForUser(
-// [SwaggerRequestBody] UserExchangeOrderListRequest request,
-// CancellationToken cancellationToken)
-// {
-// var planet_id = request.PlanetId;
-// var user_guid = this.HttpContext.Items["user_guid"]?.ToString() ?? string.Empty;
-// Guard.Against.isNullOrEmptyOrWhiteSpace(user_guid,
-// ServerErrorCode.AccountNotFound, "해당 유저를 찾을 수 없음");
-// await m_exchange_service.authUser(user_guid, string.Empty);
-//
-// ExchangeOrderStatus? order_status = request switch
-// {
-// { Option: FindOption.Completed } => ExchangeOrderStatus.Completed,
-// { Option: FindOption.Pending } => ExchangeOrderStatus.Pending,
-// _ => null // 전체 조회
-// };
-// var orders =
-// await m_exchange_service.findOrderList(planet_id, user_guid, order_status,
-// request.PageIndex, request.PageSize, request.SortOrder,
-// cancellationToken);
-// var mapped_orders = orders.Select(x => new ExchangeOrder
-// {
-// OrderId = x.OrderId,
-// SapphireAmount = x.SapphireReducedDelta,
-// SapphireReduceAmount = x.SapphireReducedDelta,
-// EmeraldAmount = x.PlanetMoneyIncDelta,
-// CreatedAt = x.CreatedAt,
-// CompletedAt = x.CompletedAt,
-// Status = x.OrderStatus
-// });
-// return Ok(new UserExchangeOrderListResponse { Orders = mapped_orders });
-// }
-// }
diff --git a/BrokerApiServer/Directory.Build.props b/BrokerApiServer/Directory.Build.props
index 181094c..6e1e8e4 100644
--- a/BrokerApiServer/Directory.Build.props
+++ b/BrokerApiServer/Directory.Build.props
@@ -1,8 +1,8 @@
-
+
false
false
..\..\obj\AnyCPU\$(MSBuildProjectName)\
..\..\bin\
-
\ No newline at end of file
+
diff --git a/BrokerApiServer/Extensions/AppBuilderExtensions.cs b/BrokerApiServer/Extensions/AppBuilderExtensions.cs
index 267c5e4..5e7b897 100644
--- a/BrokerApiServer/Extensions/AppBuilderExtensions.cs
+++ b/BrokerApiServer/Extensions/AppBuilderExtensions.cs
@@ -1,11 +1,10 @@
using System.Text;
+using BrokerApiCore;
using Microsoft.AspNetCore.Authentication.JwtBearer;
using Microsoft.EntityFrameworkCore;
using Microsoft.IdentityModel.Tokens;
-
using ServerBase;
using ServerCore;
-using BrokerApiCore;
namespace BrokerApiServer;
@@ -13,19 +12,8 @@ public static class AppBuilderExtensions
{
public static void initGlobalNlog()
{
- // nlog 설정
- var nlog_config_path = "./Config/nlog.config";
- var full_path = Path.GetFullPath(nlog_config_path);
- if (!File.Exists(full_path))
- {
- full_path = Path.GetFullPath(nlog_config_path, AppContext.BaseDirectory);
- if (!File.Exists(full_path))
- {
- throw new ApplicationException($"nlog.config 파일을 찾을 수 없음 => {full_path}");
- }
- }
-
- Log.NLogFileName = full_path;
+ Log.initLog(nameof(ServerType.BrokerApi), "Developer"); // nlog 설정
+ Log.getLogger().info("NLog Init");
}
public static ServerConfigMetaverseBroker initBrokerServerConfig()
@@ -42,35 +30,18 @@ public static class AppBuilderExtensions
throw new ApplicationException("ServerConfig.json 파일을 찾을 수 없음");
}
}
+
server_config.setConfigFilePath(full_path);
var result = server_config.tryLoadConfig().GetAwaiter().GetResult();
Guard.Against.resultFail(result);
return server_config;
}
- public static void addBrokerServerLogic(this IServiceCollection services,
- ServerConfigMetaverseBroker serverConfig)
- {
- var broker_logic = new BrokerServerLogic(serverConfig);
- var result = broker_logic.onInit().GetAwaiter().GetResult();
- if (result.isFail())
- {
- Log.getLogger().error($"BrokerServerLogic Init Failed => {result}");
- throw new ApplicationException($"BrokerServerLogic Init Failed => {result}");
- }
- ServerLogicApp.setServerLogicApp(broker_logic);
- services.AddSingleton(broker_logic);
- }
-
public static void addCoreServices(this IServiceCollection services,
ServerConfigMetaverseBroker serverConfig)
{
services.AddSingleton(serverConfig);
- var broker_logic = new BrokerServerLogic(serverConfig);
- var result = broker_logic.onInit().GetAwaiter().GetResult();
- services.AddSingleton(broker_logic);
-
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
@@ -80,7 +51,9 @@ public static class AppBuilderExtensions
ValidateAudience = false,
ValidateLifetime = true,
ValidateIssuerSigningKey = true,
- IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(serverConfig.MetaverseBroker?.JwtSecretKey ?? String.Empty))
+ IssuerSigningKey =
+ new SymmetricSecurityKey(
+ Encoding.UTF8.GetBytes(serverConfig.MetaverseBroker?.JwtSecretKey ?? String.Empty))
};
});
@@ -90,7 +63,7 @@ public static class AppBuilderExtensions
// 메타데이터 관련 서비스 등록
services.AddSingleton();
- services.AddScoped( provider =>
+ services.AddScoped(provider =>
{
var meta_loader = provider.GetRequiredService();
return new BrokerMetaTableRef(meta_loader.getMetaTable());
@@ -104,14 +77,8 @@ public static class AppBuilderExtensions
};
services.AddSingleton(jwt_option);
- services.AddScoped(provider =>
- {
- return new JwtGenerator(jwt_option);
- });
- services.AddScoped(provider =>
- {
- return new JwtParser(jwt_option);
- });
+ services.AddScoped(provider => { return new JwtGenerator(jwt_option); });
+ services.AddScoped(provider => { return new JwtParser(jwt_option); });
services.AddScoped();
@@ -128,6 +95,8 @@ public static class AppBuilderExtensions
services.AddScoped();
services.AddScoped();
+ services.AddSingleton();
+
services.AddDbContext(options =>
{
var connection_string = serverConfig.SsoAccountDb;
@@ -148,29 +117,19 @@ public static class AppBuilderExtensions
{
var connection_string = serverConfig.MetaverseBroker?.MetaverseBrokerDb;
- options.UseMySql(connection_string, ServerVersion.AutoDetect(connection_string), my_sql_options =>
+ options.UseMySql(connection_string, ServerVersion.AutoDetect(connection_string), mySqlOptions =>
{
- my_sql_options.EnableRetryOnFailure(
+ mySqlOptions.EnableRetryOnFailure(
maxRetryCount: 10,
maxRetryDelay: TimeSpan.FromSeconds(30),
errorNumbersToAdd: null
);
- my_sql_options.CommandTimeout(60);
- my_sql_options.MaxBatchSize(20);
+ mySqlOptions.CommandTimeout(60);
+ mySqlOptions.MaxBatchSize(20);
});
});
}
- // todo: isLocal 삭제 예정
- public static void addAppServices(this WebApplicationBuilder builder)
- {
- initGlobalNlog();
- var server_config = initBrokerServerConfig();
- builder.Services.addBrokerServerLogic(server_config);
- builder.Services.addCoreServices(server_config);
- builder.Services.addInfraServices(server_config);
- }
-
public static void brokerServerLogicInit(this IApplicationBuilder app)
{
var server_logic = app.ApplicationServices.GetRequiredService() as BrokerServerLogic;
@@ -191,20 +150,29 @@ public static class AppBuilderExtensions
public static void validateRepoConnections(this IApplicationBuilder app)
{
- var env = app.ApplicationServices.GetRequiredService();
// db 접속 유무 검사
using var scope = app.ApplicationServices.CreateScope();
var services = scope.ServiceProvider;
- validateSsoAccountDb().Wait();
- validateMetaverseBrokerDb().Wait();
- migrateMetaverseBrokerDbForDevelopment().Wait();
+ try
+ {
+ validateSsoAccountDb().Wait();
+ validateMetaverseBrokerDb().Wait();
+ // 마이그레이션은 코드에서 호출하지 말고, 별도의 migration script를 통해서 수행한다.
+ migrateMetaverseBrokerDbForDevelopment().Wait();
+ }
+ catch (Exception ex)
+ {
+ Log.getLogger().error($"[Check Tunneling] Repo Connections Validation Failed => {ex.Message}");
+ throw new ApplicationException($"Repo Connections Validation Failed => {ex.Message}");
+ }
+
return;
async Task validateSsoAccountDb()
{
- var context = services.GetRequiredService();
try
{
+ var context = services.GetRequiredService();
if (await context.Database.CanConnectAsync())
{
Log.getLogger().info($"Sso Account DB Connection OK => {context.Database.GetConnectionString()}");
@@ -217,17 +185,17 @@ public static class AppBuilderExtensions
{
Log.getLogger()
.error(
- $"Sso Account DB Connection Failed => {ex.Message}, {context.Database.GetConnectionString()}");
+ $"Sso Account DB Connection Failed => {ex.Message}");
}
- throw new ApplicationException($"Failed to connect Sso Account Db !!!");
+ // throw new ApplicationException($"Failed to connect Sso Account Db !!!");
}
async Task validateMetaverseBrokerDb()
{
- var context = services.GetRequiredService();
try
{
+ var context = services.GetRequiredService();
if (await context.Database.CanConnectAsync())
{
Log.getLogger()
@@ -237,15 +205,16 @@ public static class AppBuilderExtensions
if (migrations.Any())
{
Log.getLogger().error($"{context.Database.ToString()} 마이그레션이 필요함 !!!");
- migrations.Select( x => x.ToString()).ToList().ForEach(x => Log.getLogger().warn(x));
+ migrations.Select(x => x.ToString()).ToList().ForEach(x => Log.getLogger().warn(x));
}
+
return;
}
}
catch (Exception ex)
{
Log.getLogger()
- .error($"Metaverse-Broker DB 접속 예외 발생 => {ex.Message}, {context.Database.GetConnectionString()}");
+ .error($"Metaverse-Broker DB 접속 예외 발생 => {ex.Message}");
}
throw new ApplicationException($"Failed to connect Broker Db !!!");
@@ -268,4 +237,80 @@ public static class AppBuilderExtensions
}
}
}
+
+ public static void addDynamoDb(this IServiceCollection services)
+ {
+ services.AddSingleton(x =>
+ {
+ var dynamo_db_client = new DynamoDbClient();
+ return dynamo_db_client;
+ // var result = new Result();
+ // var config = x.GetRequiredService();
+ //
+ // (var error_code, var table_names) =
+ // ServerConfigHelper.getDynamoDbTableNamesWithServiceType(config.ServiceType);
+ // if (error_code.isFail())
+ // {
+ // var err_msg =
+ // $"Failed to DynamoDbClient.getDynamoDbTableNameWithServiceType() !!! : {config.toBasicString()}";
+ // result.setFail(error_code, err_msg);
+ // Log.getLogger().error(err_msg);
+ // Guard.Against.resultFail(result);
+ // }
+ //
+ // var dynamo_db_client = new DynamoDbClient();
+ // var dynamodb_url = config.Dynamodb;
+ // var region = config.AWS.Region;
+ // var access_key = config.AWS.AccessKey;
+ // var secret_key = config.AWS.SecretKey;
+ // var use_local_db = config.AWS.LocalDynamoDB;
+ // if (result.isFail())
+ // {
+ // Log.getLogger().error($"Failed to connectToDb !!! ");
+ // Guard.Against.resultFail(result);
+ // }
+ //
+ // dynamo_db_client.connectToDb(table_names, use_local_db, dynamodb_url, access_key, secret_key, region);
+ // return dynamo_db_client;
+ });
+ }
+
+ public static void useDynamoDb(this IApplicationBuilder app)
+ {
+ var result = new Result();
+ var config = app.ApplicationServices.GetRequiredService();
+
+ (var error_code, var table_names) =
+ ServerConfigHelper.getDynamoDbTableNamesWithServiceType(config.ServiceType);
+ if (error_code.isFail())
+ {
+ var err_msg =
+ $"Failed to DynamoDbClient.getDynamoDbTableNameWithServiceType() !!! : {config.toBasicString()}";
+ result.setFail(error_code, err_msg);
+ Log.getLogger().error(err_msg);
+ Guard.Against.resultFail(result);
+ }
+
+ var dynamo_db_client = app.ApplicationServices.GetRequiredService();
+ var dynamodb_url = config.Dynamodb;
+ var region = config.AWS.Region;
+ var access_key = config.AWS.AccessKey;
+ var secret_key = config.AWS.SecretKey;
+ var use_local_db = config.AWS.LocalDynamoDB;
+ result = dynamo_db_client.connectToDb(table_names, use_local_db, dynamodb_url, access_key, secret_key, region);
+ if (result.isFail())
+ {
+ Log.getLogger().error($"Failed to connectToDb !!! ");
+ Guard.Against.resultFail(result);
+ }
+
+ var task = dynamo_db_client.createDBIfNotExists(false);
+ task.Wait();
+ if (false == task.Result)
+ {
+ var err_msg = $"Failed to create DB Table !!!";
+ result.setFail(ServerErrorCode.DynamoDbTableCreateFailed, err_msg);
+ Guard.Against.resultFail(result);
+ }
+ }
}
diff --git a/BrokerApiServer/NamedPipePacketHandler/ForceStopServerPacketHandler.cs b/BrokerApiServer/NamedPipePacketHandler/ForceStopServerPacketHandler.cs
index 9a2f16a..8f04839 100644
--- a/BrokerApiServer/NamedPipePacketHandler/ForceStopServerPacketHandler.cs
+++ b/BrokerApiServer/NamedPipePacketHandler/ForceStopServerPacketHandler.cs
@@ -1,31 +1,33 @@
using ControlCenter.NamedPipe;
using ControlCenter.NamedPipeHost.Manager;
+using ServerBase;
using ServerControlCenter;
using ServerCore;
-namespace BrokerApiServer;
+namespace MatchServer;
public class ForceStopServerMessageReceiver : NamedPipeReceiver
{
- private readonly ServerInfoManager m_info_manager;
+ // private readonly ServerInfoManager m_info_manager;
- public ForceStopServerMessageReceiver(ServerInfoManager infoManager)
- {
- m_info_manager = infoManager;
- }
+ public ForceStopServerMessageReceiver()
+ {
+ // m_info_manager = infoManager;
+ }
- public override async Task Handle(A2S_REQ_FORCE_STOP_SERVER message, string message_id)
- {
- Log.getLogger().debug($"{nameof(ForceStopServerMessageReceiver)}: Receive - message_id[{message_id}] / message[{message}]");
+ public override async Task Handle(A2S_REQ_FORCE_STOP_SERVER message, string message_id)
+ {
+ Log.getLogger().debug($"{nameof(ForceStopServerMessageReceiver)}: Receive - message_id[{message_id}] / message[{message}]");
- m_info_manager.setServerStatus(ServerStatus.Stop);
+ await NamedPipeMonitor.ChangeServerStatus(ServerStatus.Stop);
+ // m_info_manager.setServerStatus(ServerStatus.Stop);
- // 정보 전달 대기
- await Task.Delay(1_000);
+ // 정보 전달 대기
+ await Task.Delay(1_000);
- // process 종료
- Environment.Exit(0);
- }
+ // process 종료
+ Environment.Exit(0);
+ }
}
diff --git a/BrokerApiServer/NamedPipePacketHandler/StopServerPacketHandler.cs b/BrokerApiServer/NamedPipePacketHandler/StopServerPacketHandler.cs
index 919325f..77fbf6f 100644
--- a/BrokerApiServer/NamedPipePacketHandler/StopServerPacketHandler.cs
+++ b/BrokerApiServer/NamedPipePacketHandler/StopServerPacketHandler.cs
@@ -5,25 +5,26 @@ using ServerCore;
namespace BrokerApiServer;
+using ControlCenter.NamedPipe;
+
+using ServerBase;
+
public class StopServerMessageReceiver : NamedPipeReceiver
{
- private readonly ServerInfoManager m_info_manager;
+ public StopServerMessageReceiver()
+ {
+ }
- public StopServerMessageReceiver(ServerInfoManager infoManager)
- {
- m_info_manager = infoManager;
- }
+ public override async Task Handle(A2S_REQ_STOP_SERVER message, string message_id)
+ {
+ Log.getLogger().debug($"{nameof(StopServerMessageReceiver)}: Receive - message_id[{message_id}] / message[{message}]");
- public override async Task Handle(A2S_REQ_STOP_SERVER message, string message_id)
- {
- Log.getLogger().debug($"{nameof(StopServerMessageReceiver)}: Receive - message_id[{message_id}] / message[{message}]");
+ await NamedPipeMonitor.ChangeServerStatus(ServerStatus.Stop);
- m_info_manager.setServerStatus(ServerStatus.Stop);
+ // 정보 전달 대기
+ await Task.Delay(1_000);
- // 정보 전달 대기
- await Task.Delay(1_000);
-
- // process 종료
- Environment.Exit(0);
- }
+ // process 종료
+ Environment.Exit(0);
+ }
}
diff --git a/BrokerApiServer/Program.cs b/BrokerApiServer/Program.cs
index 5e1435d..88db0a0 100644
--- a/BrokerApiServer/Program.cs
+++ b/BrokerApiServer/Program.cs
@@ -1,63 +1,18 @@
-using System.Reflection;
using BrokerApiServer;
using CommandLine;
-using ControlCenter.NamedPipeHost.Extensions;
-using ServerCore;
-//=============================================================================
-// 인자 설정
-//=============================================================================
var port = 12000;
-var use_swagger = false;
-var parsed_arguments = Parser.Default.ParseArguments(args);
-if (parsed_arguments is Parsed parsed)
+
+var parsed_arguments = Parser.Default.ParseArguments(args);
+if (parsed_arguments is Parsed parsed)
{
port = parsed.Value.Port;
- use_swagger = parsed.Value.UseSwagger ? true : false;
}
var cmd_options = new string[] { "--urls", $"http://*:{port}" };
-
var builder = WebApplication.CreateBuilder(cmd_options);
-builder.addAppServices();
-builder.Services.AddHttpContextAccessor();
-builder.Services.AddEndpointsApiExplorer();
-builder.Services.AddControllers(options => { options.Filters.Add(new ResultExceptionFilter()); });
-builder.Services.AddHealthChecks();
-builder.Services.AddSwaggerGen(SwaggerSettingHelper.setSwaggerGen);
-
-var assemblies = new List(AppDomain.CurrentDomain.GetAssemblies());
-builder.Services.AddNamedPipelineClientManager(assemblies, ServerControlCenter.ServerType.BrokerApi,
- ServiceCategory.Caliverse.ToString(), NetworkHelper.getEthernetLocalIPv4(), port);
+builder.Services.AddBrokerServerService(args);
var app = builder.Build();
-app.UseCors("Everything");
-app.UseHttpsRedirection();
-app.UseMiddleware();
-app.UseAuthorization();
-app.UseRouting();
-app.MapControllers();
-if (use_swagger)
-{
- app.UseSwagger();
- app.UseSwaggerUI();
-}
-
-app.MapHealthChecks("/healthcheck");
-
-app.validateRepoConnections();
-app.brokerServerLogicInit();
-
-// todo: 스키마 변경 시 자동으로 앱에서 마이그레이션 하지 않고, dotnet ef 툴을 사용할 것
-// app.metadataMangerInit();
-
-app.Services.GetRequiredService().ApplicationStarted.Register(() =>
-{
- Log.getLogger().info($"Env : {app.Environment.EnvironmentName}");
- Log.getLogger().info($"BrokerApiServer started {app.Urls}");
-});
-app.Services.GetRequiredService().ApplicationStopped.Register(Log.shutdown);
-
-app.UseNamedPipelineClientManager();
-
+app.UseBrokerServerService();
app.Run();
diff --git a/BrokerApiServer/Properties/launchSettings.json b/BrokerApiServer/Properties/launchSettings.json
index d16a905..00aaabe 100644
--- a/BrokerApiServer/Properties/launchSettings.json
+++ b/BrokerApiServer/Properties/launchSettings.json
@@ -2,14 +2,15 @@
"profiles": {
"http": {
"commandName": "Project",
- "commandLineArgs": "-p 12000 -s --named-pipe true",
+ "commandLineArgs": "-p 12000 -s",
"launchBrowser": true,
"launchUrl": "swagger",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"dotnetRunMessages": true,
- "applicationUrl": "http://localhost:12000"
+ "applicationUrl": "http://localhost:12000",
+ "workingDirectory": "../../bin/$(Configuration)"
}
}
}
diff --git a/BrokerApiTest/BrokerApiTest.csproj b/BrokerApiTest/BrokerApiTest.csproj
index fd95c54..f4adcf8 100644
--- a/BrokerApiTest/BrokerApiTest.csproj
+++ b/BrokerApiTest/BrokerApiTest.csproj
@@ -1,54 +1,51 @@
-
-
-
- net8.0
- enable
- enable
+
+
+ net8.0
+ enable
+ enable
Debug;Release
- false
- true
+ false
+ true
false
- BrokerTest
+ BrokerTest
+ true
Library
+ false
-
1591
full
-
1591
full
-
-
-
-
-
-
-
- PreserveNewest
-
-
-
-
-
-
-
-
-
-
-
-
-
- all
- runtime; build; native; contentfiles; analyzers; buildtransitive
-
-
-
-
-
-
-
+
+
+
+
+
+ PreserveNewest
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ all
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+
+
+
+
+
diff --git a/BrokerApiTest/Config/ServerConfig-Dev.json b/BrokerApiTest/Config/ServerConfig-Dev.json
deleted file mode 100644
index a0ce71b..0000000
--- a/BrokerApiTest/Config/ServerConfig-Dev.json
+++ /dev/null
@@ -1,162 +0,0 @@
-{
- "LogDir": "./Logs",
- "DumpDir": "./",
- "LocalServer": true,
- "SingleThreaded": false,
- "ServiceType": "Dev",
- "StandaloneMode": true,
- "OfflineMode": false,
- "DefaultMaxUser": 500,
- "ClientListen": {
- "Ip": "",
- "Port": 0
- },
-
- "SessionKeepAliveTimeSec": 3600,
- "MinWorkerThreadCount": 100,
- "MinIoThreadCount": 0,
-
- "AccountLoginBlockEnable": false,
-
- "SsoAccountDb": "Server=localhost;Port=13306;User ID=external_ro;Password=bQNEXbRWQTtV6bwlqktGyBiuf2KqYF;Database=caliverse",
- "SsoAccountAuthJwtSecretKey": "zgoRtipbFcgQp0VGP8VZW8QhW4ll1swfvASqwr78",
-
- "AccountNftDb": "Server=localhost;Port=13306;User ID=external_ro;Password=bQNEXbRWQTtV6bwlqktGyBiuf2KqYF;Database=caliverse",
-
- "Redis": "127.0.0.1:6379,password=KT-i5#i%-%LxKfZ5YJj6,AsyncTimeout=30000,SyncTimeout=30000,ssl=false,abortConnect=false",
-
- "Dynamodb": "http://localhost:8000",
-
- "MongoDb": {
- "ConnectionString": "mongodb://devmetaversemongoconnect:dev#$943cali@localhost:27017",
- "DatabaseName": "Metaverse",
- "MinConnectionPoolSize": 0,
- "MaxConnectionPoolSize": 100,
- "WaitQueueTimeoutSecs": 120
- },
-
- "AWS": {
- "Enable": true,
- "LocalDynamoDB": false,
- "AccessKey": "AKIA4G3CB4Z5T6JUPHJN",
- "SecretKey": "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",
- "Region": "us-west-2",
- "MilestoneName": "MS5",
-
-
- "CloudWatchLog": {
- "Enable": false,
- "LogGroup": "MetaverseLog-Dev",
- "LogNamePattern": "Developer",
- "LogLevel": "Debug",
- "Layout": {
- "logTime": "${date:universalTime=true:format=yyyy-MM-ddTHH\\:mm\\:ss.fffZ}",
- "server": "${event-properties:server}",
- "ip/port": "${event-properties:ip/port}",
- "threadId": "${threadid}",
- "level": "${level:upperCase=true}",
- "message": "${message}",
- "function": "${event-properties:memberName}",
- "filePath": "${event-properties:filePath}",
- "lineNumber": "${event-properties:lineNumber}"
- }
- },
-
- "S3": {
- "ServiceFolderName": "Dev",
- "MyhomeUgcInfoBucketName": "metaverse-myhomeugc-test",
- "BeaconAppProfileBucketName": "metaverse-beacon-appprofile"
- }
- },
-
-
- "ClientProgramVersionCheck": false,
- "ClientMinimumRequiredLogicVersion": 0,
- "ProgramVersionPath": ".\\Version\\",
- "ProgramVersion": {
- "MetaSchemaVersion": "MetaSchemaVersion.json",
- "MetaDataVersion": "MetaDataVersion.json",
- "PacketVersion": "PacketVersion.json",
- "ResourceVersion": "ServerResourceVersion.json",
- "ConfigVersion": "ServerConfigVersion.json",
- "LogicVersion": "ServerBinaryVersion.json",
- "DbSchemaVersion": "DbSchemaVersion.json"
- },
- "CheatCommandAlwaysAllow": true,
-
-
- "AuthRule": {
- "ClientStandaloneAllow": true,
- "ClientBySsoAccountAuthWithLauncherAllow": false,
- "PlatformTypeAllows": ""
- },
-
- "LoadBalancingRule": {
- "AuthToGameRule": {
- "Rule": "WeightedRoundRobin",
- "MinRate": 0,
- "MaxRate": 100,
- "UserLanguageBased": true
- }
- },
-
- "ServerApiUrlCatalog": [
- { "BillingApiServerUrl": { "Ko": "https://caliverse.io/shop" } },
- { "ChatAiApiServerUrl": { "Ko": "https://ai-dev-api.caliverse.io" } },
- { "S3ResourceImageUrl": { "Ko": "https://d3s9natejb9ydz.cloudfront.net/Dev" } }
- ],
-
- "NftRule": {
- "NftDBAccess": false,
- "CPNftForOwnerAllGetUrl": "https://dev-api.caliverse.io/v1/nft/game"
- },
-
- "EchoSystem": {
- "BaseAddress": "https://eco-system-dev-rollup-admin-api.caliverse.io",
- "SlackAddress": "https://hooks.slack.com/services/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"
- },
-
- "AIChat": {
- "BaseAddress": "https://ai-dev-api.caliverse.io",
- "PrivateKey": "PPt+3OLhgLnXCGXrezRL4ZmtA3FmCZtjOgDPvx1MMAY/0VcXFDQQfBRnfR4c2FmzGILuPjue/xtNyLUFOe3EYg=="
- },
-
- "Billing": {
- "BaseAddress": "https://dev-api.caliverse.io"
- },
-
- "Ugq": {
- "ApiServerAddress": "https://dev-ugqapi.caliverse.io:11000",
- //"ApiServerAddress": "http://localhost:1000",
- "UrlInGamePrefix": "/api/v1/InGame"
- },
-
- "Rabbitmq": {
- "HostName": "localhost",
- "Port": 5672,
- "UserName": "admin",
- "Password": "admin",
- "SSL": false
- },
-
- "GameConfig": {
- "ReservationWaitTimeMSec": 1200000,
- "LoginCacheExpiryTimeMSec": 3600000,
- "ServerSwitchCacheExpiryTimeMSec": 3600000
- },
-
- "ControlAgentEnable": false,
-
- "PerformanceCheckEnable": false,
-
- "BattleSystemEnable": true,
-
- "MetaverseBroker": {
- "JwtSecretKey": "zgoRtipbFcgQp0VGP8VZW8QhW4ll1swfvASqwr78",
- "ExpireMinutes": 1440,
- "SsoAccountDb": "Server=dev-caliverse-db.cluster-ro-czac0we0qoyx.us-west-2.rds.amazonaws.com;Port=3306;User ID=external_ro;Password=bQNEXbRWQTtV6bwlqktGyBiuf2KqYF;Database=caliverse",
- "MetaverseBrokerDb": "Server=metaverse-broker-dev.cdn6gxjy33pu.us-west-2.rds.amazonaws.com;Port=3306;User ID=broker_user;Password=Apxkqjtmqmfhzj;Database=metaverse-broker",
- "MetaverseBrokerDbLocal": "Server=localhost;Port=3307;User ID=broker_user;Password=qmfhzjdbwj;Database=metaverse-broker"
- }
-}
-
diff --git a/BrokerApiTest/Config/ServerConfig-QA.json b/BrokerApiTest/Config/ServerConfig-QA.json
deleted file mode 100644
index 1d42fe9..0000000
--- a/BrokerApiTest/Config/ServerConfig-QA.json
+++ /dev/null
@@ -1,150 +0,0 @@
-{
- "LogDir": "./Logs",
- "DumpDir": "./",
- "LocalServer": false,
- "SingleThreaded": false,
- "ServiceType": "Qa",
- "OfflineMode": false,
- "DefaultMaxUser": 600,
- "ClientListen": {
- "Ip": "",
- "Port": 0
- },
-
-
- "SessionKeepAliveTimeSec": 3600,
- "MinWorkerThreadCount": 200,
- "MinIoThreadCount": 0,
-
- "AccountLoginBlockEnable": false,
-
- "SsoAccountDb": "Server=qa-caliverse-db.cluster-ro-czac0we0qoyx.us-west-2.rds.amazonaws.com;Port=3306;User ID=external_ro;Password=k0RantM9gOAg5ATecBTFXzbCYDnvXi;Database=caliverse",
- "SsoAccountAuthJwtSecretKey": "zgoRtipbFcgQp0VGP8VZW8QhW4ll1swfvASqwr78",
-
- "AccountNftDb": "Server=qa-caliverse-db.cluster-ro-czac0we0qoyx.us-west-2.rds.amazonaws.com;Port=3306;User ID=external_ro;Password=k0RantM9gOAg5ATecBTFXzbCYDnvXi;Database=caliverse",
-
- "Redis": "clustercfg.metaverse-qa-cluster.ocif0u.usw2.cache.amazonaws.com:6379,password=wiUaVvNwX4PhBj&8,ssl=true,abortConnect=false",
- "Dynamodb": "",
-
- "MongoDb": {
- "ConnectionString": "mongodb://qrwugqmongoconnect:qrw#$943cali@ip-172-40-141-201.us-west-2.compute.internal:27017/Metaverse",
- "DatabaseName": "Metaverse",
- "MinConnectionPoolSize": 0,
- "MaxConnectionPoolSize": 100,
- "WaitQueueTimeoutSecs": 120
- },
-
- "AWS": {
- "Enable": true,
- "LocalDynamoDB": false,
- "AccessKey": "AKIA4G3CB4Z5T6JUPHJN",
- "SecretKey": "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",
- "Region": "us-west-2",
- "MilestoneName": "MS5",
-
- "CloudWatchLog": {
- "Enable": true,
- "LogGroup": "MetaverseLog-QA",
- "LogNamePattern": "Developer",
- "LogLevel": "Debug",
- "Layout": {
- "logTime": "${date:universalTime=true:format=yyyy-MM-ddTHH\\:mm\\:ss.fffZ}",
- "server": "${event-properties:server}",
- "ip/port": "${event-properties:ip/port}",
- "threadId": "${threadid}",
- "level": "${level:upperCase=true}",
- "message": "${message}",
- "function": "${event-properties:memberName}",
- "filePath": "${event-properties:filePath}",
- "lineNumber": "${event-properties:lineNumber}"
- }
- },
-
- "S3": {
- "ServiceFolderName": "Qa",
- "MyhomeUgcInfoBucketName": "metaverse-myhomeugc-qa",
- "BeaconAppProfileBucketName": "metaverse-beacon-appprofile"
- }
- },
-
-
- "ClientProgramVersionCheck": false,
- "ClientMinimumRequiredLogicVersion": 0,
- "ProgramVersionPath": ".\\Version\\",
- "ProgramVersion": {
- "MetaSchemaVersion": "MetaSchemaVersion.json",
- "MetaDataVersion": "MetaDataVersion.json",
- "PacketVersion": "PacketVersion.json",
- "ResourceVersion": "ServerResourceVersion.json",
- "ConfigVersion": "ServerConfigVersion.json",
- "LogicVersion": "ServerBinaryVersion.json",
- "DbSchemaVersion": "DbSchemaVersion.json"
- },
- "CheatCommandAlwaysAllow": true,
-
-
- "AuthRule": {
- "ClientStandaloneAllow": true,
- "ClientBySsoAccountAuthWithLauncherAllow": true,
- "PlatformTypeAllows": "WindowsPc"
- },
-
- "ServerApiUrlCatalog": [
- { "BillingApiServerUrl": { "Ko": "https://qa.caliverse.io/shop" } },
- { "ChatAiApiServerUrl": { "Ko": "https://ai-qa-api.caliverse.io" } },
- { "S3ResourceImageUrl": { "Ko": "https://d3s9natejb9ydz.cloudfront.net/QA" } }
- ],
-
- "NftRule": {
- "NftDBAccess": true,
- "CPNftForOwnerAllGetUrl": "https://qa-api.caliverse.io/v1/nft/game"
- },
-
- "AIChat": {
- "BaseAddress": "https://ai-qa-api.caliverse.io",
- "PrivateKey": "PPt+3OLhgLnXCGXrezRL4ZmtA3FmCZtjOgDPvx1MMAY/0VcXFDQQfBRnfR4c2FmzGILuPjue/xtNyLUFOe3EYg=="
- },
-
- "EchoSystem": {
- "BaseAddress": "https://eco-system-qa-rollup-admin-api.caliverse.io",
- "SlackAddress": "https://hooks.slack.com/services/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"
- },
-
- "Billing": {
- "BaseAddress": "https://qa-api.caliverse.io"
- },
-
- "Ugq": {
- "ApiServerAddress": "http://internal-Metaverse-QA-UGQAPI-Game-1559632298.us-west-2.elb.amazonaws.com:11201",
- "UrlInGamePrefix": "/api/v1/InGame"
- },
-
- "Rabbitmq": {
- "HostName": "b-d7c76a76-156d-4d55-8614-d4ce122a47c3.mq.us-west-2.amazonaws.com",
- "Port": 5671,
- "UserName": "serveruser",
- "Password": "Zkfflqjtm!33&*(",
- "SSL": true
- },
-
- "GameConfig": {
- "ReservationWaitTimeMSec": 120000,
- "LoginCacheExpiryTimeMSec": 3600000,
- "ServerSwitchCacheExpiryTimeMSec": 300000
- },
-
- "ControlAgentEnable": true,
-
- "PerformanceCheckEnable": false,
-
- "BattleSystemEnable": true,
-
- "MetaverseBroker": {
- "JwtSecretKey": "zgoRtipbFcgQp0VGP8VZW8QhW4ll1swfvASqwr78",
- "ExpireMinutes": 1440,
- "SsoAccountDb": "Server=qa-caliverse-db.cluster-ro-czac0we0qoyx.us-west-2.rds.amazonaws.com;Port=3306;User ID=external_ro;Password=k0RantM9gOAg5ATecBTFXzbCYDnvXi;Database=caliverse",
- "MetaverseBrokerDb": "Server=metaverse-broker-qa.cdn6gxjy33pu.us-west-2.rds.amazonaws.com;Port=3306;User ID=broker_user;Password=06M67cKVhHDpVipisA2g;Database=metaverse-broker",
- "MetaverseBrokerDbLocal": "Server=localhost;Port=3307;User ID=root;Password=root;Database=metaverse-broker"
- }
-}
-
diff --git a/BrokerApiTest/Config/ServerConfig-Stage.json b/BrokerApiTest/Config/ServerConfig-Stage.json
deleted file mode 100644
index 643edda..0000000
--- a/BrokerApiTest/Config/ServerConfig-Stage.json
+++ /dev/null
@@ -1,151 +0,0 @@
-{
- "LogDir": "./Logs",
- "DumpDir": "./",
- "LocalServer": false,
- "SingleThreaded": false,
- "ServiceType": "Stage",
- "OfflineMode": false,
- "DefaultMaxUser": 600,
- "ClientListen": {
- "Ip": "",
- "Port": 0
- },
-
-
- "SessionKeepAliveTimeSec": 600,
- "MinWorkerThreadCount": 200,
- "MinIoThreadCount": 0,
-
- "AccountLoginBlockEnable": false,
-
- "SsoAccountDb": "Server=stage-caliverse-db.cluster-ro-czac0we0qoyx.us-west-2.rds.amazonaws.com;Port=3306;User ID=caliverse;Password=XjEDXb8fi9ZXP5PaxDCxPWeXK03mzk;Database=caliverse",
- "SsoAccountAuthJwtSecretKey": "zgoRtipbFcgQp0VGP8VZW8QhW4ll1swfvASqwr78",
-
- "AccountNftDb": "Server=stage-caliverse-db.cluster-ro-czac0we0qoyx.us-west-2.rds.amazonaws.com;Port=3306;User ID=caliverse;Password=XjEDXb8fi9ZXP5PaxDCxPWeXK03mzk;Database=caliverse",
-
- "Redis": "clustercfg.metaverse-stage-cluster.ocif0u.usw2.cache.amazonaws.com:6379,password=wiUaVvNwX4PhBj&8,ssl=true,abortConnect=false",
- "Dynamodb": "",
-
- "MongoDb": {
- "ConnectionString": "mongodb+srv://stageugqapirw:uY3xQzVURk59S7Vu@stage-ugqapi.7d0do.mongodb.net/?retryWrites=true&w=majority&appName=stage-ugqapi",
- "DatabaseName": "Metaverse",
- "MinConnectionPoolSize": 0,
- "MaxConnectionPoolSize": 100,
- "WaitQueueTimeoutSecs": 120
- },
-
- "AWS": {
- "Enable": true,
- "LocalDynamoDB": false,
- "AccessKey": "AKIA4G3CB4Z5T6JUPHJN",
- "SecretKey": "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",
- "Region": "us-west-2",
- "MilestoneName": "MS5",
-
- "CloudWatchLog": {
- "Enable": true,
- "LogGroup": "MetaverseLog-Stage",
- "LogNamePattern": "Developer",
- "LogLevel": "Debug",
- "Layout": {
- "logTime": "${date:universalTime=true:format=yyyy-MM-ddTHH\\:mm\\:ss.fffZ}",
- "server": "${event-properties:server}",
- "ip/port": "${event-properties:ip/port}",
- "threadId": "${threadid}",
- "level": "${level:upperCase=true}",
- "message": "${message}",
- "function": "${event-properties:memberName}",
- "filePath": "${event-properties:filePath}",
- "lineNumber": "${event-properties:lineNumber}"
- }
- },
-
- "S3": {
- "ServiceFolderName": "Stage",
- "MyhomeUgcInfoBucketName": "metaverse-myhomeugc-stage",
- "BeaconAppProfileBucketName": "metaverse-beacon-appprofile"
- }
- },
-
-
- "ClientProgramVersionCheck": false,
- "ClientMinimumRequiredLogicVersion": 0,
- "ProgramVersionPath": ".\\Version\\",
- "ProgramVersion": {
- "MetaSchemaVersion": "MetaSchemaVersion.json",
- "MetaDataVersion": "MetaDataVersion.json",
- "PacketVersion": "PacketVersion.json",
- "ResourceVersion": "ServerResourceVersion.json",
- "ConfigVersion": "ServerConfigVersion.json",
- "LogicVersion": "ServerBinaryVersion.json",
- "DbSchemaVersion": "DbSchemaVersion.json"
- },
- "CheatCommandAlwaysAllow": true,
-
-
- "AuthRule": {
- "ClientStandaloneAllow": true,
- "ClientBySsoAccountAuthWithLauncherAllow": true,
- "PlatformTypeAllows": "WindowsPc"
- },
-
- "ServerApiUrlCatalog": [
- { "BillingApiServerUrl": { "Ko": "https://stage.caliverse.io/shop" } },
- { "ChatAiApiServerUrl": { "Ko": "https://ai-stage-api.caliverse.io" } },
- { "S3ResourceImageUrl": { "Ko": "https://d3s9natejb9ydz.cloudfront.net/Stage" } }
- ],
-
-
- "NftRule": {
- "NftDBAccess": true,
- "CPNftForOwnerAllGetUrl": "https://stage-api.caliverse.io/v1/nft/game"
- },
-
- "AIChat": {
- "BaseAddress": "https://ai-stage-api.caliverse.io",
- "PrivateKey": "PPt+3OLhgLnXCGXrezRL4ZmtA3FmCZtjOgDPvx1MMAY/0VcXFDQQfBRnfR4c2FmzGILuPjue/xtNyLUFOe3EYg=="
- },
-
- "EchoSystem": {
- "BaseAddress": "https://eco-system-stage-rollup-admin-api.caliverse.io",
- "SlackAddress": "https://hooks.slack.com/services/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"
- },
-
- "Billing": {
- "BaseAddress": "https://stage-api.caliverse.io"
- },
-
- "Ugq": {
- "ApiServerAddress": "http://internal-Metaverse-Stage-UGQAPI-Game-88775700.us-west-2.elb.amazonaws.com:11201",
- "UrlInGamePrefix": "/api/v1/InGame"
- },
-
- "Rabbitmq": {
- "HostName": "b-d0e44de3-7fb3-4120-b851-4566002eaf8e.mq.us-west-2.amazonaws.com",
- "Port": 5671,
- "UserName": "serveruser",
- "Password": "Zkfflqjtm!33&*(",
- "SSL": true
- },
-
- "GameConfig": {
- "ReservationWaitTimeMSec": 120000,
- "LoginCacheExpiryTimeMSec": 3600000,
- "ServerSwitchCacheExpiryTimeMSec": 300000
- },
-
- "ControlAgentEnable": true,
-
- "PerformanceCheckEnable": false,
-
- "BattleSystemEnable": true,
-
- "MetaverseBroker": {
- "JwtSecretKey": "zgoRtipbFcgQp0VGP8VZW8QhW4ll1swfvASqwr78",
- "ExpireMinutes": 1440,
- "SsoAccountDb": "Server=stage-caliverse-db.cluster-ro-czac0we0qoyx.us-west-2.rds.amazonaws.com;Port=3306;User ID=caliverse;Password=XjEDXb8fi9ZXP5PaxDCxPWeXK03mzk;Database=caliverse",
- "MetaverseBrokerDb": "Server=metaverse-broker-stage.cdn6gxjy33pu.us-west-2.rds.amazonaws.com;Port=3306;User ID=broker_user;Password=WkH44p4KiUDVzk5aPfANGtpCu6;Database=metaverse-broker",
- "MetaverseBrokerDbLocal": "Server=localhost;Port=3307;User ID=root;Password=root;Database=metaverse-broker"
- }
-}
-
diff --git a/BrokerApiTest/Config/ServerConfig.json b/BrokerApiTest/Config/ServerConfig.json
deleted file mode 100644
index 860b760..0000000
--- a/BrokerApiTest/Config/ServerConfig.json
+++ /dev/null
@@ -1,216 +0,0 @@
-{
- "LogDir": "./Logs",
- "DumpDir": "./",
- "LocalServer": true,
- "SingleThreaded": false,
- "ServiceType": "Dev",
- "StandaloneMode": true,
- "OfflineMode": false,
- "DefaultMaxUser": 500,
- "ClientListen": {
- "Ip": "",
- "Port": 0
- },
-
- "SessionKeepAliveTimeSec": 3600,
- "MinWorkerThreadCount": 100,
- "MinIoThreadCount": 0,
-
- "AccountLoginBlockEnable": false,
-
- "SsoAccountDb": "Server=localhost;Port=13306;User ID=external_ro;Password=bQNEXbRWQTtV6bwlqktGyBiuf2KqYF;Database=caliverse",
- "SsoAccountAuthJwtSecretKey": "zgoRtipbFcgQp0VGP8VZW8QhW4ll1swfvASqwr78",
-
- "AccountNftDb": "Server=localhost;Port=13306;User ID=external_ro;Password=bQNEXbRWQTtV6bwlqktGyBiuf2KqYF;Database=caliverse",
-
- "Redis": "127.0.0.1:6379,password=KT-i5#i%-%LxKfZ5YJj6,AsyncTimeout=30000,SyncTimeout=30000,ssl=false,abortConnect=false",
-
- "Dynamodb": "http://localhost:8000",
-
- "AWS": {
- "Enable": false,
- "LocalDynamoDB": false,
- "AccessKey": "AKIA4G3CB4Z5T6JUPHJN",
- "SecretKey": "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",
- "Region": "us-west-2",
- "MilestoneName": "MS5",
-
- "CloudWatchLog": {
- "Enable": false,
- "LogGroup": "MetaverseLog-Dev",
- "LogNamePattern": "Developer",
- "LogLevel": "Debug",
- "Layout": {
- "logTime": "${date:universalTime=true:format=yyyy-MM-ddTHH\\:mm\\:ss.fffZ}",
- "level": "${level:upperCase=true}",
- "message": "${message}",
- "player": "${event-properties:player}",
- "properties": "{event-properties:properties}",
- "threadId": "${threadid}",
- "function": "${event-properties:memberName}",
- "filePath": "${event-properties:filePath}",
- "lineNumber": "${event-properties:lineNumber}",
- "server": "${event-properties:server}",
- "ipport": "${event-properties:ipport}"
- }
- },
-
- "S3": {
- "ServiceFolderName": "Dev",
- "MyhomeUgcInfoBucketName": "metaverse-myhomeugc-test",
- "BeaconAppProfileBucketName": "metaverse-beacon-appprofile"
- }
- },
-
-
- "ClientProgramVersionCheck": false,
- "ClientMinimumRequiredLogicVersion": 0,
- "ProgramVersionPath": ".\\Version\\",
- "ProgramVersion": {
- "MetaSchemaVersion": "MetaSchemaVersion.json",
- "MetaDataVersion": "MetaDataVersion.json",
- "PacketVersion": "PacketVersion.json",
- "ResourceVersion": "ServerResourceVersion.json",
- "ConfigVersion": "ServerConfigVersion.json",
- "LogicVersion": "ServerBinaryVersion.json",
- "DbSchemaVersion": "DbSchemaVersion.json"
- },
- "CheatCommandAlwaysAllow": true,
-
-
- "AuthRule": {
- "ClientStandaloneAllow": true,
- "ClientBySsoAccountAuthWithLauncherAllow": false,
- "PlatformTypeAllows": ""
- },
-
- "LoadBalancingRule": {
- "AuthToGameRule": {
- "Rule": "WeightedRoundRobin",
- "MinRate": 0,
- "MaxRate": 100,
- "UserLanguageBased": true
- }
- },
-
- "ServerApiUrlCatalog": [
- { "BillingApiServerUrl": "https://caliverse.io/shop" },
- { "ChatAiApiServerUrl": "https://ai-dev-api.caliverse.io" },
- { "S3ResourceImageUrl": "https://d3s9natejb9ydz.cloudfront.net/Dev" },
- {
- "RentalGuideURL": {
- "ko": "https://calidocu.gitbook.io/caliverse-metaverse/land/land-rental",
- "en": "https://calidocu.gitbook.io/caliverse-metaverse/en/land/land-rental",
- "jp": "https://calidocu.gitbook.io/caliverse-metaverse/jp/land/land-rental"
- }
- },
- {
- "LandAuctionWebGuide": {
- "ko": "https://calidocu.gitbook.io/caliverse-metaverse/land/land-rental",
- "en": "https://calidocu.gitbook.io/caliverse-metaverse/en/land/land-rental",
- "jp": "https://calidocu.gitbook.io/caliverse-metaverse/jp/land/land-rental"
- }
- },
- {
- "LandManageGuideURL": {
- "ko": "https://calidocu.gitbook.io/caliverse-metaverse/land/land-management",
- "en": "https://calidocu.gitbook.io/caliverse-metaverse/en/land/land-management",
- "jp": "https://calidocu.gitbook.io/caliverse-metaverse/jp/land/land-management"
- }
- },
- {
- "Calium_Exchange_Web1": {
- "ko": "https://calidocu.gitbook.io/calium-eco-system/calium-inflation-system-and-its-principles",
- "en": "https://calidocu.gitbook.io/calium-eco-system/en/calium-inflation-system-and-its-principles",
- "jp": "https://calidocu.gitbook.io/calium-eco-system/jp/calium-inflation-system-and-its-principles"
- }
- },
- {
- "Calium_Exchange_Web2": {
- "ko": "https://calium.caliverse.io/onchain",
- "en": "https://calium.caliverse.io/onchain",
- "jp": "https://calium.caliverse.io/onchain"
- }
- },
- {
- "MyhomeEditGuideUrl": {
- "ko": "https://calidocu.gitbook.io/caliverse-metaverse/caliverse-feature-guide/interior",
- "en": "https://calidocu.gitbook.io/caliverse-metaverse/en/caliverse-feature-guide/interior",
- "jp": "https://calidocu.gitbook.io/caliverse-metaverse/jp/caliverse-feature-guide/interior"
- }
- },
- {
- "WebLinkUrlSeasonPass": {
- "ko": "https://calidocu.gitbook.io/caliverse-metaverse/pass-and-claim/season-pass",
- "en": "https://calidocu.gitbook.io/caliverse-metaverse/en/pass-and-claim/season-pass",
- "jp": "https://calidocu.gitbook.io/caliverse-metaverse/jp/pass-and-claim/season-pass"
- }
- },
- {
- "WebLinkURLCurrency": {
- "ko": "https://caliverse.io/shop",
- "en": "https://caliverse.io/en/shop",
- "jp": "https://caliverse.io/en/shop"
- }
- },
- {
- "CaliumConverterWebGuide": {
- "ko": "https://calidocu.gitbook.io/caliverse-metaverse/calium/calium-converter",
- "en": "https://calidocu.gitbook.io/caliverse-metaverse/en/calium/calium-converter",
- "jp": "https://calidocu.gitbook.io/caliverse-metaverse/jp/calium/calium-converter"
- }
- }
- ],
-
- "NftRule": {
- "NftDBAccess": false,
- "CPNftForOwnerAllGetUrl": "https://dev-api.caliverse.io/v1/nft/game"
- },
-
- "EchoSystem": {
- "BaseAddress": "https://eco-system-dev-rollup-admin-api.caliverse.io"
- },
-
- "AIChat": {
- "BaseAddress": "https://ai-dev-api.caliverse.io",
- "PrivateKey": "PPt+3OLhgLnXCGXrezRL4ZmtA3FmCZtjOgDPvx1MMAY/0VcXFDQQfBRnfR4c2FmzGILuPjue/xtNyLUFOe3EYg=="
- },
-
- "Billing": {
- "BaseAddress": "https://dev-api.caliverse.io"
- },
-
- "Ugq": {
- "ApiServerAddress": "https://dev-ugqapi.caliverse.io:11000",
- //"ApiServerAddress": "http://localhost:1000",
- "UrlInGamePrefix": "/api/v1/InGame"
- },
-
- "Rabbitmq": {
- "HostName": "localhost",
- "Port": 5672,
- "UserName": "admin",
- "Password": "admin",
- "SSL": false
- },
-
- "GameConfig": {
- "ReservationWaitTimeMSec": 1200000,
- "LoginCacheExpiryTimeMSec": 3600000,
- "ServerSwitchCacheExpiryTimeMSec": 3600000
- },
-
- "ControlAgentEnable": false,
-
- "PerformanceCheckEnable": false,
-
- "BattleSystemEnable" : true,
-
- "MetaverseBroker": {
- "JwtSecretKey": "zgoRtipbFcgQp0VGP8VZW8QhW4ll1swfvASqwr78",
- "ExpireMinutes": 1440,
- "SsoAccountDb": "Server=dev-caliverse-db.cluster-ro-czac0we0qoyx.us-west-2.rds.amazonaws.com;Port=3306;User ID=external_ro;Password=bQNEXbRWQTtV6bwlqktGyBiuf2KqYF;Database=caliverse",
- "MetaverseBrokerDb": "Server=metaverse-broker-dev.cdn6gxjy33pu.us-west-2.rds.amazonaws.com;Port=3306;User ID=caliverse;Password=Apxkqjtmqmfhzj;Database=metaverse-broker",
- "MetaverseBrokerDbLocal": "Server=localhost;Port=3307;User ID=broker;Password=broker;Database=metaverse-broker"
- }
-}
diff --git a/BrokerApiTest/Config/nlog.config b/BrokerApiTest/Config/nlog.config
deleted file mode 100644
index 2e42d41..0000000
--- a/BrokerApiTest/Config/nlog.config
+++ /dev/null
@@ -1,95 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- logger name="*" minlevel="Error" writeTo="logfile"/-->
-
-
-
diff --git a/BrokerApiTest/ControllerTests/CurrencyControllerTests.cs b/BrokerApiTest/ControllerTests/CurrencyControllerTests.cs
deleted file mode 100644
index 91ebeeb..0000000
--- a/BrokerApiTest/ControllerTests/CurrencyControllerTests.cs
+++ /dev/null
@@ -1,90 +0,0 @@
-using System.Net.Http.Json;
-using BrokerApiCore;
-using BrokerTest.Helper;
-
-namespace BrokerTest.Controllers;
-public class CurrencyControllerTests
-{
- private readonly BrokerTestServer m_server = new BrokerTestServer();
-
- [Fact]
- public async Task initializeAsync()
- {
- await Task.CompletedTask;
- }
-
- private HttpClient getTestClient()
- {
- return m_server.getTestClient();
- }
-
- [Fact]
- public async Task Auth_ValidRequest_ReturnsOkWithAccessToken()
- {
- // Arrange
- const string planet_id = "new_earth";
- const string planet_secret_key = "A8h$KmP3sWxZqL5vYnR7uTgBdEjHkMlQoT1wXzCv";
- var planet_token = string.Empty;
- var order_id = string.Empty;
- {
- var client = getTestClient();
- var request = new PlanetAuthRequest { PlanetId = planet_id, PlanetSecretKey = planet_secret_key };
-
- // Act
- var response = await client.PostAsJsonAsync("/api/v1/planet/auth", request);
-
- // Assert
- response.EnsureSuccessStatusCode();
- var response_body = await response.Content.ReadFromJsonAsync();
- Assert.NotNull(response_body);
- planet_token = response_body.AccessToken;
- }
- {
- var client = getTestClient();
- var request = new ExchangeOrderRequest
- {
- UserGuid = "1052b08b52ef4d69a27ee1f40911a72f", Sapphire = 10, Emerald = 10
- };
- client.DefaultRequestHeaders.Add("Authorization", $"Bearer {planet_token}");
- var response = await client.PostAsJsonAsync("/api/v1/exchange/order/create", request);
- response.EnsureSuccessStatusCode();
- var response_body = await response.Content.ReadFromJsonAsync();
- Assert.NotNull(response_body);
- Assert.NotNull(response_body.OrderId);
- order_id = response_body.OrderId;
- // Assert
- }
-
- //UserGuid:1052b08b52ef4d69a27ee1f40911a72f
- {
- var client = getTestClient();
- var request = new ExchangeOrderListRequest
- {
- UserGuid = "1052b08b52ef4d69a27ee1f40911a72f", Option = FindOption.All
- };
- client.DefaultRequestHeaders.Add("Authorization", $"Bearer {planet_token}");
- var response = await client.PostAsJsonAsync("/api/v1/exchange/order/list", request);
- response.EnsureSuccessStatusCode();
- var response_body = await response.Content.ReadFromJsonAsync();
- Assert.NotNull(response_body);
- Assert.NotNull(response_body.Orders);
- // Assert
- }
-
- {
- var client = getTestClient();
- var request =
- new ExchangeOrderCompleteRequest { UserGuid = "1052b08b52ef4d69a27ee1f40911a72f", OrderId = order_id };
- client.DefaultRequestHeaders.Add("Authorization", $"Bearer {planet_token}");
- var response = await client.PostAsJsonAsync("/api/v1/exchange/order/complete", request);
- response.EnsureSuccessStatusCode();
- var response_body = await response.Content.ReadFromJsonAsync();
- Assert.NotNull(response_body);
- Assert.NotNull(response_body.OrderId);
- Assert.Equal(order_id, response_body.OrderId);
- Assert.Equal(ExchangeOrderStatus.Completed, response_body.Status);
- // Assert
- }
- }
-
-}
diff --git a/BrokerApiTest/ControllerTests/DevCurrencyControllerTests.cs b/BrokerApiTest/ControllerTests/DevCurrencyControllerTests.cs
index 3cd1431..40c49ab 100644
--- a/BrokerApiTest/ControllerTests/DevCurrencyControllerTests.cs
+++ b/BrokerApiTest/ControllerTests/DevCurrencyControllerTests.cs
@@ -2,8 +2,6 @@
using BrokerApiCore;
-using BrokerApiServer;
-
namespace BrokerTest;
public class DevCurrencyControllerTests
diff --git a/BrokerApiTest/ControllerTests/DevPlanetUserControllerTests.cs b/BrokerApiTest/ControllerTests/DevPlanetUserControllerTests.cs
new file mode 100644
index 0000000..6a076d1
--- /dev/null
+++ b/BrokerApiTest/ControllerTests/DevPlanetUserControllerTests.cs
@@ -0,0 +1,279 @@
+using System.Net;
+using System.Net.Http.Json;
+
+using BrokerApiCore;
+
+using ServerCommon;
+
+using Xunit.Abstractions;
+
+namespace BrokerTest;
+public class DevPlanetUserControllerTests : IAsyncLifetime
+{
+ private readonly ITestOutputHelper m_test_output_helper;
+ // const string m_planet_id = "new_earth";
+ const string m_planet_id = "igm26_iggymob";
+ const string m_planet_secret_key = "A8h$KmP3sWxZqL5vYnR7uTgBdEjHkMlQoT1wXzCv";
+ const string m_user_guid = "1052b08b52ef4d69a27ee1f40911a72f"; //park chan heon
+ const string m_account_id = "20462";
+
+ //40dbf485dc5b41508b7d53aa77819201
+ // const string m_account_id = "20437";
+ // const string m_user_guid = "40dbf485dc5b41508b7d53aa77819201";
+
+ private string m_planet_token = string.Empty;
+ private readonly MetaTableTestHelper m_meta_table_test_helper = new();
+
+ // private readonly IBrokerTestServer m_server = new BrokerTestServer();
+ private readonly IBrokerTestServer m_server = new BrokerTestRemoteServer("https://dev.planethub.caliverse.io:12000");
+
+ public DevPlanetUserControllerTests(ITestOutputHelper testOutputHelper)
+ {
+ m_test_output_helper = testOutputHelper;
+ }
+
+ private HttpClient getTestClient()
+ {
+ var client = m_server.getTestClient();
+ if (m_planet_token != string.Empty)
+ {
+ client.DefaultRequestHeaders.Add("Authorization", $"Bearer {m_planet_token}");
+ }
+
+ return client;
+ }
+
+ private HttpClient getTestClientWithBearer()
+ {
+ var client = m_server.getTestClient();
+ if (m_planet_token != string.Empty)
+ {
+ client.DefaultRequestHeaders.Add("Authorization", $"Bearer {m_planet_token}");
+ }
+
+ return client;
+ }
+
+ public async Task InitializeAsync()
+ {
+ m_meta_table_test_helper.load();
+
+ // Arrange
+ var client = getTestClient();
+ var request = new PlanetAuthRequest { PlanetId = m_planet_id, PlanetSecretKey = m_planet_secret_key };
+
+ // Act
+ var response = await client.PostAsJsonAsync("/api/v1/planet/auth", request);
+
+ // Assert
+ response.EnsureSuccessStatusCode();
+ var response_body = await response.Content.ReadFromJsonAsync();
+ Assert.NotNull(response_body);
+ Assert.NotEmpty(response_body.AccessToken);
+ m_planet_token = response_body.AccessToken;
+ }
+
+ public async Task DisposeAsync()
+ {
+ await Task.CompletedTask;
+ }
+
+ private bool checkError(HttpResponseMessage responseMessage)
+ {
+ if (responseMessage.StatusCode != HttpStatusCode.OK)
+ {
+ var error_body = responseMessage.Content.ReadFromJsonAsync().Result;
+ Assert.NotNull(error_body);
+ m_test_output_helper.WriteLine(error_body.ErrorMessage ?? string.Empty);
+ Assert.True(false);
+ }
+
+ return true;
+ }
+
+ [Fact(DisplayName = "아이템 교환 주문 컨트롤러 테스트 모든 Meta")]
+ public async Task allMetaTests()
+ {
+ MetaTableTestHelper meta_table_test_helper = new();
+ meta_table_test_helper.load();
+ var meta = meta_table_test_helper.getMetaTableRef();
+ Assert.NotNull(meta);
+ var meta_tuples = meta.MetaTable.PlanetItemExchangePolicyMetaTable.PlanetItemExchangePolicyDataList
+ .Select(x =>
+ string.Equals(x.CaliverseItemType, CaliverseItemType.Currency.ToString(),
+ StringComparison.CurrentCultureIgnoreCase)
+ ? (x.ID, Random.Shared.Next(10, 201))
+ : (x.ID, 5));
+ // 테스트 이력용
+ foreach (var i in Enumerable.Range(0, 1))
+ {
+ foreach (var meta_tuple in meta_tuples)
+ {
+ await orderTest(meta_tuple.Item1, meta_tuple.Item2);
+ }
+ }
+ }
+
+ private async Task dailyAmountExceedError(string metaId, int metaAmount, int totalDailyAmount)
+ {
+ const string TEST_SEASON_ID = "TEST_SEASON_ID";
+ string order_id;
+ {
+ // Arrange
+ var request_uri = "/api/v1/planet/user/exchange/order/create";
+ var client = getTestClientWithBearer();
+ var exchange_request = new PlanetItemExchangeRequest
+ {
+ SeasonId = TEST_SEASON_ID,
+ UserGuid = m_user_guid, ExchangeMetaId = metaId, ExchangeMetaAmount = metaAmount,
+ };
+
+ // Act
+ var exchange_response = await client.PostAsJsonAsync(request_uri, exchange_request);
+ if (exchange_response.StatusCode == HttpStatusCode.BadRequest)
+ {
+
+ }
+ // Assert
+ checkError(exchange_response);
+ var exchange_response_body =
+ await exchange_response.Content.ReadFromJsonAsync();
+ Assert.NotNull(exchange_response_body);
+ Assert.NotNull(exchange_response_body.ExchangeOrder.OrderId);
+ order_id = exchange_response_body.ExchangeOrder.OrderId;
+ }
+ }
+
+
+ private async Task orderTest(string metaId, int metaAmount)
+ {
+ const string TEST_SEASON_ID = "TEST_SEASON_ID";
+ string order_id;
+ {
+ // Arrange
+ var request_uri = "/api/v1/planet/user/exchange/order/create";
+ var client = getTestClientWithBearer();
+ var exchange_request = new PlanetItemExchangeRequest
+ {
+ SeasonId = TEST_SEASON_ID,
+ UserGuid = m_user_guid, ExchangeMetaId = metaId, ExchangeMetaAmount = metaAmount,
+ };
+
+ // Act
+ var exchange_response = await client.PostAsJsonAsync(request_uri, exchange_request);
+
+ // Assert
+ checkError(exchange_response);
+ var exchange_response_body =
+ await exchange_response.Content.ReadFromJsonAsync();
+ Assert.NotNull(exchange_response_body);
+ Assert.NotNull(exchange_response_body.ExchangeOrder.OrderId);
+ order_id = exchange_response_body.ExchangeOrder.OrderId;
+ }
+ {
+ // Arrange
+ var request_uri = "/api/v1/planet/user/exchange/order/list";
+ var client = getTestClientWithBearer();
+ var list_request = new PlanetItemExchangeOrderListRequest
+ {
+ PlanetId = m_planet_id,
+ SeasonId = TEST_SEASON_ID,
+ UserGuid = m_user_guid, Option = FindOption.All, ExchangeMetaId = metaId,
+ };
+
+ // Act
+ var list_response = await client.PostAsJsonAsync(request_uri, list_request);
+ checkError(list_response);
+
+ // Assert
+ list_response.EnsureSuccessStatusCode();
+ var list_response_body =
+ await list_response.Content.ReadFromJsonAsync();
+ Assert.NotNull(list_response_body);
+ Assert.NotNull(list_response_body.Orders);
+
+ var order = list_response_body.Orders.FirstOrDefault(x => x.OrderId == order_id);
+ Assert.NotNull(order);
+ Assert.Equal(ExchangeOrderStatus.Pending, order.OrderStatus);
+ }
+ {
+ // Arrange
+ var request_uri = "/api/v1/planet/user/exchange/order/list";
+ var client = getTestClientWithBearer();
+ var list_request = new PlanetItemExchangeOrderListRequest
+ {
+ PlanetId = m_planet_id,
+ ExchangeMetaId = metaId,
+ SeasonId = TEST_SEASON_ID,
+ SsoAccountId = m_account_id, Option = FindOption.All,
+ };
+
+ // Act
+ var list_response = await client.PostAsJsonAsync(request_uri, list_request);
+ checkError(list_response);
+
+ // Assert
+ list_response.EnsureSuccessStatusCode();
+ var list_response_body =
+ await list_response.Content.ReadFromJsonAsync();
+ Assert.NotNull(list_response_body);
+ Assert.NotNull(list_response_body.Orders);
+
+ var order = list_response_body.Orders.FirstOrDefault(x => x.OrderId == order_id);
+ Assert.NotNull(order);
+ Assert.Equal(ExchangeOrderStatus.Pending, order.OrderStatus);
+ }
+ {
+ // Arrange
+ var request_uri = "/api/v1/planet/user/exchange/order/list";
+ var client = getTestClientWithBearer();
+ var list_request = new PlanetItemExchangeOrderListRequest
+ {
+ PlanetId = m_planet_id,
+ ExchangeMetaId = "",
+ SeasonId = TEST_SEASON_ID,
+ SsoAccountId = m_account_id, Option = FindOption.All,
+ };
+
+ // Act
+ var list_response = await client.PostAsJsonAsync(request_uri, list_request);
+ checkError(list_response);
+
+ // Assert
+ list_response.EnsureSuccessStatusCode();
+ var list_response_body =
+ await list_response.Content.ReadFromJsonAsync();
+ Assert.NotNull(list_response_body);
+ Assert.NotNull(list_response_body.Orders);
+
+ var order = list_response_body.Orders.FirstOrDefault(x => x.OrderId == order_id);
+ Assert.NotNull(order);
+ Assert.Equal(ExchangeOrderStatus.Pending, order.OrderStatus);
+
+ Assert.True(list_response_body.TotalCount > 0);
+ }
+ {
+ // Arrange
+ var request_uri = "/api/v1/planet/user/exchange/order/complete";
+ var client = getTestClientWithBearer();
+
+ // Act
+ var complete_request = new PlanetItemExchangeCompleteRequest
+ {
+ UserGuid = m_user_guid, ExchangeOrderId = order_id
+ };
+ var complete_response =
+ await client.PostAsJsonAsync(request_uri, complete_request);
+ checkError(complete_response);
+
+ // Assert
+ complete_response.EnsureSuccessStatusCode();
+ var complete_response_body =
+ await complete_response.Content.ReadFromJsonAsync();
+ Assert.NotNull(complete_response_body);
+ Assert.NotNull(complete_response_body.ExchangeOrder);
+ Assert.Equal(order_id, complete_response_body.ExchangeOrder.OrderId);
+ Assert.Equal(ExchangeOrderStatus.Completed, complete_response_body.ExchangeOrder.OrderStatus);
+ }
+ }
+}
diff --git a/BrokerApiTest/ControllerTests/PlanetControllerTests.cs b/BrokerApiTest/ControllerTests/PlanetControllerTests.cs
index df3f1e4..1e3c5fc 100644
--- a/BrokerApiTest/ControllerTests/PlanetControllerTests.cs
+++ b/BrokerApiTest/ControllerTests/PlanetControllerTests.cs
@@ -5,19 +5,29 @@ using System.Text.Json;
using BrokerApiCore;
-using BrokerApiServer;
-using BrokerTest.Helper;
-
namespace BrokerTest;
public class PlanetControllerTests
{
- private readonly BrokerTestServer m_server = new();
+ private readonly BrokerTestServer m_test_server;
private readonly JsonSerializerOptions m_json_options = new()
{
PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
PropertyNameCaseInsensitive = true
};
+ public PlanetControllerTests()
+ {
+ try
+ {
+ m_test_server = new BrokerTestServer();
+ }
+ catch (Exception e)
+ {
+ Assert.Fail(e.Message);
+ throw;
+ }
+ }
+
[Fact]
public async Task Auth_ValidRequest_ReturnsOkWithAccessToken()
{
@@ -25,7 +35,7 @@ public class PlanetControllerTests
const string planet_id = "new_earth";
const string planet_secret_key = "A8h$KmP3sWxZqL5vYnR7uTgBdEjHkMlQoT1wXzCv";
- var client = m_server.getTestClient();
+ var client = m_test_server.getTestClient();
var request = new PlanetAuthRequest { PlanetId = planet_id, PlanetSecretKey = planet_secret_key };
// Act
@@ -36,7 +46,7 @@ public class PlanetControllerTests
var auth_response = await response.Content.ReadFromJsonAsync(m_json_options);
Assert.NotNull(auth_response);
- var jwt_option = m_server.getRequiredService();
+ var jwt_option = m_test_server.getRequiredService();
Assert.NotNull(jwt_option);
var jwt_service = new JwtParser(jwt_option);
var claims = jwt_service.parseToken(auth_response.AccessToken);
diff --git a/BrokerApiTest/ControllerTests/PlanetUserControllerTests.cs b/BrokerApiTest/ControllerTests/PlanetUserControllerTests.cs
index fa9c23e..171c10b 100644
--- a/BrokerApiTest/ControllerTests/PlanetUserControllerTests.cs
+++ b/BrokerApiTest/ControllerTests/PlanetUserControllerTests.cs
@@ -3,10 +3,6 @@ using System.Net.Http.Json;
using BrokerApiCore;
-using BrokerApiServer;
-
-using BrokerTest.Helper;
-
using ServerCommon;
using Xunit.Abstractions;
@@ -18,8 +14,8 @@ public class PlanetUserControllerTests : IAsyncLifetime
// const string m_planet_id = "new_earth";
const string m_planet_id = "igm26_iggymob";
const string m_planet_secret_key = "A8h$KmP3sWxZqL5vYnR7uTgBdEjHkMlQoT1wXzCv";
- const string m_user_guid = "1052b08b52ef4d69a27ee1f40911a72f"; //park chan heon
- const string m_account_id = "20462";
+ const string m_user_guid = "e1e353296146435888eced246da0b42a"; //park chan heon
+ const string m_account_id = "heon";
//40dbf485dc5b41508b7d53aa77819201
// const string m_account_id = "20437";
@@ -28,8 +24,8 @@ public class PlanetUserControllerTests : IAsyncLifetime
private string m_planet_token = string.Empty;
private readonly MetaTableTestHelper m_meta_table_test_helper = new();
- // private readonly IBrokerTestServer m_server = new BrokerTestServer();
- private readonly IBrokerTestServer m_server = new BrokerTestRemoteServer("https://dev.planethub.caliverse.io:12000");
+ private readonly IBrokerTestServer m_server = new BrokerTestServer();
+ // private readonly IBrokerTestServer m_server = new BrokerTestRemoteServer("https://dev.planethub.caliverse.io:12000");
public PlanetUserControllerTests(ITestOutputHelper testOutputHelper)
{
@@ -89,7 +85,7 @@ public class PlanetUserControllerTests : IAsyncLifetime
var error_body = responseMessage.Content.ReadFromJsonAsync().Result;
Assert.NotNull(error_body);
m_test_output_helper.WriteLine(error_body.ErrorMessage ?? string.Empty);
- Assert.True(false);
+ Assert.Fail();
}
return true;
@@ -118,25 +114,6 @@ public class PlanetUserControllerTests : IAsyncLifetime
}
}
- // [Fact(DisplayName = "아이템 교환 주문 예외테스트")]
- // public async Task exceptionTests()
- // {
- // MetaTableTestHelper meta_table_test_helper = new();
- // meta_table_test_helper.load();
- // var meta = meta_table_test_helper.getMetaTableRef();
- // Assert.NotNull(meta);
- // var meta_tuples = meta.MetaTable.PlanetItemExchangePolicyMetaTable.PlanetItemExchangePolicyDataList
- // .Select(x =>
- // string.Equals(x.CaliverseItemType, CaliverseItemType.Currency.ToString(),
- // StringComparison.CurrentCultureIgnoreCase)
- // ? (x.ID, Random.Shared.Next(10, 201))
- // : (x.ID, 1));
- // foreach (var meta_tuple in meta_tuples)
- // {
- // await orderTest(meta_tuple.Item1, meta_tuple.Item2);
- // }
- // }
-
private async Task dailyAmountExceedError(string metaId, int metaAmount, int totalDailyAmount)
{
const string TEST_SEASON_ID = "TEST_SEASON_ID";
diff --git a/BrokerApiTest/ControllerTests/QAPlanetUserControllerTests.cs b/BrokerApiTest/ControllerTests/QAPlanetUserControllerTests.cs
index 0fdafe5..b9dd3e3 100644
--- a/BrokerApiTest/ControllerTests/QAPlanetUserControllerTests.cs
+++ b/BrokerApiTest/ControllerTests/QAPlanetUserControllerTests.cs
@@ -8,8 +8,6 @@ using Xunit.Abstractions;
using ServerCommon;
using ServerCore;
-using BrokerApiServer;
-using BrokerTest.Helper;
namespace BrokerTest;
public class QaPlanetUserControllerTests : IAsyncLifetime
{
diff --git a/BrokerApiTest/ControllerTests/StagePlanetUserControllerTests.cs b/BrokerApiTest/ControllerTests/StagePlanetUserControllerTests.cs
index 6cb9783..27cc9c8 100644
--- a/BrokerApiTest/ControllerTests/StagePlanetUserControllerTests.cs
+++ b/BrokerApiTest/ControllerTests/StagePlanetUserControllerTests.cs
@@ -8,9 +8,6 @@ using Xunit.Abstractions;
using ServerCommon;
using ServerCore;
-using BrokerApiServer;
-using BrokerTest.Helper;
-
namespace BrokerTest;
public class StagePlanetUserControllerTests : IAsyncLifetime
{
diff --git a/BrokerApiTest/Directory.Build.props b/BrokerApiTest/Directory.Build.props
new file mode 100644
index 0000000..181094c
--- /dev/null
+++ b/BrokerApiTest/Directory.Build.props
@@ -0,0 +1,8 @@
+
+
+ false
+ false
+ ..\..\obj\AnyCPU\$(MSBuildProjectName)\
+ ..\..\bin\
+
+
\ No newline at end of file
diff --git a/BrokerApiTest/DocQuery/DynamoDbClientTests.cs b/BrokerApiTest/DocQuery/DynamoDbClientTests.cs
index db20e2f..68a3983 100644
--- a/BrokerApiTest/DocQuery/DynamoDbClientTests.cs
+++ b/BrokerApiTest/DocQuery/DynamoDbClientTests.cs
@@ -1,15 +1,5 @@
-
-using System.Threading.Tasks;
-
-
-using Xunit;
-using Amazon.DynamoDBv2;
-using Amazon.DynamoDBv2.Model;
-
-
using ServerCore;
using ServerBase;
-using ServerCommon;
namespace BrokerTest;
diff --git a/BrokerApiTest/DocQuery/UserTestAttrib.cs b/BrokerApiTest/DocQuery/UserTestAttrib.cs
index 5e62470..1b82ef9 100644
--- a/BrokerApiTest/DocQuery/UserTestAttrib.cs
+++ b/BrokerApiTest/DocQuery/UserTestAttrib.cs
@@ -1,7 +1,6 @@
using Newtonsoft.Json;
using ServerBase;
-using ServerCommon;
namespace BrokerTest;
public class UserTestAttrib : AttribBase
diff --git a/BrokerApiTest/DocQuery/UserTestDeleteOneAction.cs b/BrokerApiTest/DocQuery/UserTestDeleteOneAction.cs
index 2844063..4deda98 100644
--- a/BrokerApiTest/DocQuery/UserTestDeleteOneAction.cs
+++ b/BrokerApiTest/DocQuery/UserTestDeleteOneAction.cs
@@ -1,9 +1,4 @@
-
-using Microsoft.AspNetCore.Identity;
-
-using ServerCommon;
-
-using ServerCore; using ServerBase;
+using ServerBase;
namespace BrokerTest;
public class UserTestDeleteOneAction : EntityActionBase
{
diff --git a/BrokerApiTest/DocQuery/UserTestDoc.cs b/BrokerApiTest/DocQuery/UserTestDoc.cs
index fcfad34..35f6833 100644
--- a/BrokerApiTest/DocQuery/UserTestDoc.cs
+++ b/BrokerApiTest/DocQuery/UserTestDoc.cs
@@ -1,6 +1,4 @@
-using ServerCommon;
-
-using ServerCore; using ServerBase;
+using ServerCore; using ServerBase;
namespace BrokerTest;
public sealed class UserTestDoc : DynamoDbDocBase
{
diff --git a/BrokerApiTest/DocQuery/UserTestEntityAttribute.cs b/BrokerApiTest/DocQuery/UserTestEntityAttribute.cs
index 84e633f..9a529d2 100644
--- a/BrokerApiTest/DocQuery/UserTestEntityAttribute.cs
+++ b/BrokerApiTest/DocQuery/UserTestEntityAttribute.cs
@@ -1,6 +1,4 @@
-using ServerCommon;
-
-using ServerCore; using ServerBase;
+using ServerCore; using ServerBase;
using ThirdParty.Json.LitJson;
diff --git a/BrokerApiTest/DocQuery/UserTestFindOneAction.cs b/BrokerApiTest/DocQuery/UserTestFindOneAction.cs
index cc3782c..2021fe4 100644
--- a/BrokerApiTest/DocQuery/UserTestFindOneAction.cs
+++ b/BrokerApiTest/DocQuery/UserTestFindOneAction.cs
@@ -1,8 +1,4 @@
-using BrokerTest;
-
-using ServerCommon;
-
-using ServerCore; using ServerBase;
+using ServerCore; using ServerBase;
namespace BrokerTest;
public class UserTestFindOneAction : EntityActionBase
diff --git a/BrokerApiTest/DocQuery/UserTestInsertAction.cs b/BrokerApiTest/DocQuery/UserTestInsertAction.cs
index 01c7364..ded3e6d 100644
--- a/BrokerApiTest/DocQuery/UserTestInsertAction.cs
+++ b/BrokerApiTest/DocQuery/UserTestInsertAction.cs
@@ -1,6 +1,4 @@
-using ServerCommon;
-
-using ServerCore; using ServerBase;
+using ServerCore; using ServerBase;
namespace BrokerTest;
public class UserTestInsertAction : EntityActionBase
diff --git a/BrokerApiTest/DocQuery/UserTestUpdateOneAction.cs b/BrokerApiTest/DocQuery/UserTestUpdateOneAction.cs
index 4cc19e4..e50fcce 100644
--- a/BrokerApiTest/DocQuery/UserTestUpdateOneAction.cs
+++ b/BrokerApiTest/DocQuery/UserTestUpdateOneAction.cs
@@ -1,8 +1,6 @@
using BrokerTest;
-using ServerCommon;
-
-using ServerCore; using ServerBase;
+using ServerBase;
public class UserTestUpdateOneAction : EntityActionBase
{
diff --git a/BrokerApiTest/EntityTests/EntityMailTests.cs b/BrokerApiTest/EntityTests/EntityMailTests.cs
index 50a3d85..0f8d459 100644
--- a/BrokerApiTest/EntityTests/EntityMailTests.cs
+++ b/BrokerApiTest/EntityTests/EntityMailTests.cs
@@ -3,12 +3,9 @@ using BrokerApiCore;
using Microsoft.Extensions.DependencyInjection;
-using ServerCore;
using ServerBase;
using ServerCommon;
-using BrokerApiServer;
-using BrokerTest.Helper;
namespace BrokerTest;
public class EntityMailTests : IAsyncLifetime
{
@@ -16,12 +13,13 @@ public class EntityMailTests : IAsyncLifetime
public EntityMailTests()
{
- AppBuilderExtensions.initGlobalNlog();
- var config = AppBuilderExtensions.initBrokerServerConfig();
+
+ // AppBuilderExtensions.initGlobalNlog();
+ // var config = AppBuilderExtensions.initBrokerServerConfig();
m_services = new ServiceCollection();
- m_services.AddSingleton(config);
- m_services.addBrokerServerLogic(config);
- m_services.AddScoped();
+ // m_services.AddSingleton(config);
+ // // m_services.addBrokerServerLogic(config);
+ // m_services.AddScoped();
}
public Task InitializeAsync()
@@ -36,6 +34,63 @@ public class EntityMailTests : IAsyncLifetime
return Task.CompletedTask;
}
+ [Fact]
+ async Task mailItemsTest()
+ {
+ await using var scope = m_services.BuildServiceProvider();
+ var planet_user = scope.GetRequiredService();
+ await planet_user.onInit();
+ planet_user.setPlanetId("new_earth");
+
+ var auth_action = planet_user.getEntityAction();
+ Assert.NotNull(auth_action);
+ var result = await auth_action.findAndSetAllAttributeByAccountId("20462");
+ Assert.NotNull(result);
+ Assert.True(result.isSuccess());
+ Assert.Equal("20462", planet_user.getEntityAttributeNotNull().AccountId);
+
+ var server_logic = scope.GetRequiredService();
+
+
+ MetaTableTestHelper meta_table_test_helper = new();
+ meta_table_test_helper.load();
+ var meta_table_ref = meta_table_test_helper.getMetaTableRef();
+ var product_policy_mata =
+ meta_table_ref.MetaTable.PlanetItemExchangePolicyMetaTable.PlanetItemExchangePolicyDataList.FirstOrDefault(x =>
+ x.CaliverseItemType == CaliverseItemType.CaliverseProduct.ToString());
+ Assert.NotNull(product_policy_mata);
+
+ var mail_send_by_product_id = async (int productId) =>
+ {
+ var broker_mail = new BrokerMailEntity(planet_user, server_logic);
+ var result = await broker_mail.onInit();
+ Assert.NotNull(result);
+ Assert.True(result.isSuccess());
+
+ meta_table_ref.MetaTable.ProductMetaTable.ProductMetaDataListbyId.TryGetValue(
+ productId, out var product_meta);
+ Assert.NotNull(product_meta);
+
+ meta_table_ref.MetaTable.SystemMailMetaTable.SystemMailMetaDataListbyKey.TryGetValue(
+ product_meta.SystemMail_First, out var mail_meta);
+ Assert.NotNull(mail_meta);
+
+ var mail_send_action = broker_mail.getEntityActionNotNull();
+ // var mail_option = mail_send_action.createSystemSendMailOptionByMeta(product_meta, mail_meta, planet_user.UserGuid,
+ // planet_user.Nickname, 100);
+ var mail_items = MailHelper.getMailItems(meta_table_ref, product_meta, 100);
+ var mail_count = Convert.ToInt32(mail_items.Sum(x => x.Count));
+ Assert.Equal(100, mail_count);
+ };
+
+ IEnumerable product_ids = [3001, 3002, 3003, 3004];
+ foreach (var product_id in product_ids)
+ {
+ await mail_send_by_product_id(product_id);
+ await Task.Delay(10);
+ }
+ }
+
[Fact]
public async Task testMethod1()
{
@@ -80,11 +135,15 @@ public class EntityMailTests : IAsyncLifetime
Assert.NotNull(mail_meta);
var mail_send_action = broker_mail.getEntityActionNotNull();
- var mail_option = mail_send_action.createSystemSendMailOptionByMeta(product_meta, mail_meta, planet_user.UserGuid,
- planet_user.Nickname, 100);
+ // var mail_option = mail_send_action.createSystemSendMailOptionByMeta(product_meta, mail_meta, planet_user.UserGuid,
+ // planet_user.Nickname, 100);
+ var mail_option = mail_send_action.createSystemSendMailOptionByMeta(product_meta, mail_meta,
+ MailHelper.getMailItems(meta_table_ref, product_meta, 100),
+ planet_user.UserGuid,
+ planet_user.Nickname);
// var mail_option2 =
// Helpers.createMailOptionByProductMeta(product_meta, mail_meta, planet_user.UserGuid,
- // planet_user.Nickname);
+ // planet_user.Nickname);+
result = await mail_send_action.sendMail(mail_option, () => Task.CompletedTask, () => Task.CompletedTask);
Assert.NotNull(result);
Assert.True(result.isSuccess());
diff --git a/BrokerApiTest/EntityTests/EntityTests.cs b/BrokerApiTest/EntityTests/EntityTests.cs
index d917a78..8e3b25a 100644
--- a/BrokerApiTest/EntityTests/EntityTests.cs
+++ b/BrokerApiTest/EntityTests/EntityTests.cs
@@ -3,8 +3,6 @@
using ServerBase;
using ServerCommon;
-using BrokerApiServer;
-
namespace BrokerTest;
public class EntityTests
{
diff --git a/BrokerApiTest/Etc/EnumHelperTest.cs b/BrokerApiTest/Etc/EnumHelperTest.cs
index c5a8527..64a3de8 100644
--- a/BrokerApiTest/Etc/EnumHelperTest.cs
+++ b/BrokerApiTest/Etc/EnumHelperTest.cs
@@ -2,7 +2,7 @@
using MetaAssets;
-using ServerCore; using ServerBase;
+using ServerCore;
public class EnumHelperTest
{
diff --git a/BrokerApiTest/Helper/BrokerTestServer.cs b/BrokerApiTest/Helper/BrokerTestServer.cs
index cd1d2d5..eb50a3a 100644
--- a/BrokerApiTest/Helper/BrokerTestServer.cs
+++ b/BrokerApiTest/Helper/BrokerTestServer.cs
@@ -1,15 +1,10 @@
using Microsoft.Extensions.Logging;
-
-using NLog.Extensions.Logging;
-
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection;
-using Microsoft.Extensions.Hosting;
-
using System.Reflection;
-
using BrokerApiServer;
-using BrokerApiServer.Controllers;
+
+using NLog.Extensions.Logging;
namespace BrokerTest;
public interface IBrokerTestServer
@@ -70,41 +65,21 @@ public class BrokerTestServer: IBrokerTestServerLocal
{
var port = 12000;
var cmd_options = new string[] { "--urls", $"http://localhost:{port}" };
- // Arrange
var builder = WebApplication.CreateBuilder(cmd_options);
+ builder.Services.AddBrokerServerService(cmd_options);
+
+ // 테스트 전용 옵션 - 로깅
builder.Logging.AddNLog(new NLogProviderOptions{ ReplaceLoggerFactory = true });
builder.Logging.AddConsole();
- builder.addAppServices();
- builder.Services.AddHttpContextAccessor();
- // builder.Services.AddControllers(options => { options.Filters.Add(new ResultExceptionFilter()); });
+
+ // 테스트 전용 옵션
var assembly = Assembly.GetAssembly(typeof(PlanetUserController));
Assert.NotNull(assembly);
builder.Services.AddControllers(options => { options.Filters.Add(new ResultExceptionFilter()); })
.AddApplicationPart(assembly); // 이게 없으면 테스트에서 404 에러 발생 - 컨트롤러가 없음
- builder.Services.AddHealthChecks();
- builder.Services.AddEndpointsApiExplorer();
var app = builder.Build();
- app.UseHttpsRedirection();
- app.UseRouting();
- app.UseCors("Everything");
- app.UseMiddleware();
- app.UseAuthorization();
- app.MapControllers();
- app.MapHealthChecks("/healthcheck");
-
- app.validateRepoConnections();
- app.brokerServerLogicInit();
- app.metadataMangerInit(TestDefines.MetaDataPath);
-
- app.Services.GetRequiredService().ApplicationStarted.Register(() =>
- {
- // Log.getLogger().info($"Env : {app.Environment.EnvironmentName}");
- // Log.getLogger().info($"BrokerApiServer started {port}");
- // todo 왜 enpoints가 1개 뿐이지?
- Console.WriteLine($"Env : {app.Environment.EnvironmentName}");
- });
- // app.Services.GetRequiredService().ApplicationStopped.Register(Log.shutdown);
+ app.UseBrokerServerService();
app.RunAsync().ConfigureAwait(false);
return app;
}
diff --git a/BrokerApiTest/Helper/Helpers.cs b/BrokerApiTest/Helper/Helpers.cs
index 4c0683a..70995cb 100644
--- a/BrokerApiTest/Helper/Helpers.cs
+++ b/BrokerApiTest/Helper/Helpers.cs
@@ -1,4 +1,4 @@
public static class TestDefines
{
- public static string MetaDataPath => Path.GetFullPath("../../../../../bin/Debug/resource/meta", Directory.GetCurrentDirectory());
+ public static string MetaDataPath => Path.GetFullPath("./resource/meta", Directory.GetCurrentDirectory());
}
diff --git a/BrokerApiTest/Helper/TestUserHelper.cs b/BrokerApiTest/Helper/TestUserHelper.cs
index 7c3f528..64f83cb 100644
--- a/BrokerApiTest/Helper/TestUserHelper.cs
+++ b/BrokerApiTest/Helper/TestUserHelper.cs
@@ -4,7 +4,6 @@ using BrokerApiServer;
using ServerCore;
using ServerBase;
-using ServerCommon;
namespace BrokerTest;
public class TestUserHelper
diff --git a/BrokerApiTest/Jwt/JwtBasicTests.cs b/BrokerApiTest/Jwt/JwtBasicTests.cs
index 440dd6c..459046d 100644
--- a/BrokerApiTest/Jwt/JwtBasicTests.cs
+++ b/BrokerApiTest/Jwt/JwtBasicTests.cs
@@ -1,45 +1,64 @@
-
-using System.IdentityModel.Tokens.Jwt;
-using System.Security.Claims;
-
-using BrokerApiCore;
-
-using Xunit.Abstractions;
-
-using BrokerApiServer;
-
-namespace BrokerTest.Jwt;
-//=============================================================================================
-// Jwt 토큰 생성 및 파싱 기본 라이브러리 사용 테스트
-//=============================================================================================
-public class JwtBasicTests
-{
- private readonly ITestOutputHelper m_test_output_helper;
-
- public JwtBasicTests(ITestOutputHelper testOutputHelper)
- {
- m_test_output_helper = testOutputHelper;
- }
-
- [Fact]
- public void jwtServiceTest()
- {
- var jwt_option = new JwtOption
- {
- Secret = "zgoRtipbFcgQp0VGP8VZW8QhW4ll1swfvASqwr78",
- TokenValidityInMinutes = 1,
- };
- var jwt_service = new JwtGenerator(jwt_option);
- var token = jwt_service.generateAccessToken("new_earth", "caliverse");
- m_test_output_helper.WriteLine(token);
- Assert.NotNull(token);
-
- var jwt_parser = new JwtParser(jwt_option);
- var token_parsed = jwt_parser.parseToken(token);
- Assert.NotNull(token_parsed);
- var sid = token_parsed.FindFirstValue(JwtRegisteredClaimNames.Sid);
- Assert.NotNull(sid);
- var typ = token_parsed.FindFirstValue(JwtRegisteredClaimNames.Typ);
- Assert.NotNull(typ);
- }
-}
+// using System.IdentityModel.Tokens.Jwt;
+// using System.Security.Claims;
+//
+// using BrokerApiCore;
+//
+// using Xunit.Abstractions;
+//
+// using BrokerApiServer;
+//
+// namespace BrokerTest.Jwt;
+//
+// //=============================================================================================
+// // Jwt 토큰 생성 및 파싱 기본 라이브러리 사용 테스트
+// //=============================================================================================
+// public class JwtBasicTests
+// {
+// private readonly ITestOutputHelper m_test_output_helper;
+//
+// public JwtBasicTests(ITestOutputHelper testOutputHelper)
+// {
+// m_test_output_helper = testOutputHelper;
+// }
+//
+// [Fact]
+// public void jwtServiceTest()
+// {
+// var jwt_option = new JwtOption
+// {
+// Secret = "zgoRtipbFcgQp0VGP8VZW8QhW4ll1swfvASqwr78", TokenValidityInMinutes = 1,
+// };
+// {
+// var jwt_service = new JwtGenerator(jwt_option);
+// var token = jwt_service.generateAccessToken("new_earth", "caliverse",
+// new DateTime(2025, 3, 1, 0, 0, 0, DateTimeKind.Utc));
+// m_test_output_helper.WriteLine(token);
+// Assert.NotNull(token);
+// var jwt_parser = new JwtParser(jwt_option);
+// var token_parsed = jwt_parser.parseToken(token);
+// Assert.NotNull(token_parsed);
+// var sid = token_parsed.FindFirstValue(JwtRegisteredClaimNames.Sid);
+// Assert.NotNull(sid);
+// var typ = token_parsed.FindFirstValue(JwtRegisteredClaimNames.Typ);
+// Assert.NotNull(typ);
+// var validated = new PlanetTokenValidator().validate(token_parsed);
+// Assert.True(true);
+// }
+// {
+// var jwt_service = new JwtGenerator(jwt_option);
+// var token = jwt_service.generateAccessToken("new_earth", "caliverse",
+// new DateTime(2025, 2, 1, 0, 0, 0, DateTimeKind.Utc));
+// m_test_output_helper.WriteLine(token);
+// Assert.NotNull(token);
+// var jwt_parser = new JwtParser(jwt_option);
+// var token_parsed = jwt_parser.parseToken(token);
+// Assert.NotNull(token_parsed);
+// var sid = token_parsed.FindFirstValue(JwtRegisteredClaimNames.Sid);
+// Assert.NotNull(sid);
+// var typ = token_parsed.FindFirstValue(JwtRegisteredClaimNames.Typ);
+// Assert.NotNull(typ);
+// var validated = new PlanetTokenValidator().validate(token_parsed);
+// Assert.True(true);
+// }
+// }
+// }
diff --git a/BrokerApiTest/obj/BrokerApiTest.csproj.nuget.dgspec.json b/BrokerApiTest/obj/BrokerApiTest.csproj.nuget.dgspec.json
index 7ab429c..1fee3b7 100644
--- a/BrokerApiTest/obj/BrokerApiTest.csproj.nuget.dgspec.json
+++ b/BrokerApiTest/obj/BrokerApiTest.csproj.nuget.dgspec.json
@@ -88,6 +88,7 @@
"centralPackageVersions": {
"Asp.Versioning.Mvc": "8.1.0",
"Asp.Versioning.Mvc.ApiExplorer": "8.1.0",
+ "Aspire.Hosting.AppHost": "9.1.0",
"AspNetCore.Swagger.Fluent.Annotations": "1.0.4",
"AsyncStateMachine": "1.3.2",
"AutoMapper": "14.0.0",
@@ -114,6 +115,7 @@
"CommunityToolkit.Diagnostics": "8.2.2",
"CommunityToolkit.Mvvm": "8.2.2",
"Costura.Fody": "5.7.0",
+ "coverlet.collector": "6.0.4",
"Csv": "2.0.93",
"DocumentFormat.OpenXml": "2.20.0",
"DotNet.MultiMap": "2.2.1",
@@ -121,6 +123,7 @@
"ExcelDataReader": "3.6.0",
"ExcelDataReader.DataSet": "3.6.0",
"ExcelNumberFormat": "1.1.0",
+ "FluentAssertions": "8.3.0",
"Google.Protobuf": "3.27.1",
"Grpc.AspNetCore": "2.63.0",
"Grpc.AspNetCore.Server.Reflection": "2.63.0",
@@ -159,18 +162,34 @@
"MongoDB.Driver": "3.3.0",
"MongoDB.Driver.Core": "2.30.0",
"Moq": "4.20.72",
+ "MSTest.TestAdapter": "3.8.3",
+ "MSTest.TestFramework": "3.8.3",
"MySqlConnector": "2.4.0",
"NeoSmart.AsyncLock": "3.2.1",
"Newtonsoft.Json": "13.0.3",
"Nito.AsyncEx": "5.1.2",
"NJsonSchema.CodeGeneration.CSharp": "10.9.0",
"NLog": "5.4.0",
+ "NLog.Extensions.Logging": "5.3.11",
"NLog.Web.AspNetCore": "5.3.11",
+ "NSubstituteAutoSubstitute": "1.1.0",
+ "OneOf": "3.0.271",
+ "OpenTelemetry.AutoInstrumentation": "1.11.0",
+ "OpenTelemetry.Exporter.Console": "1.12.0",
+ "OpenTelemetry.Exporter.OpenTelemetryProtocol": "1.12.0",
+ "OpenTelemetry.Extensions.Hosting": "1.12.0",
+ "OpenTelemetry.Instrumentation.AspNetCore": "1.12.0",
+ "OpenTelemetry.Instrumentation.Http": "1.12.0",
+ "OpenTelemetry.PersistentStorage.FileSystem": "1.0.1",
"Otp.NET": "1.4.0",
"p4api.net": "2023.1.248.4623",
"Polly": "8.5.1",
"Pomelo.EntityFrameworkCore.MySql": "8.0.2",
"RabbitMQ.Client": "6.8.1",
+ "RedLock.net": "2.3.2",
+ "Sentry.AspNetCore": "5.10.0",
+ "Sentry.Extensions.Logging": "5.10.0",
+ "Sentry.NLog": "5.10.0",
"SharpSvn": "1.14003.272",
"sqlite-net-pcl": "1.9.172",
"SSH.NET": "2025.0.0",
@@ -183,8 +202,11 @@
"Swashbuckle.AspNetCore.Filters": "8.0.2",
"Swashbuckle.AspNetCore.SwaggerUI": "7.2.0",
"System.IdentityModel.Tokens.Jwt": "8.9.0",
+ "System.IO.Hashing": "9.0.1",
+ "Ulid": "1.3.4",
"xunit": "2.9.3",
- "xunit.assert": "2.9.2",
+ "xunit.assert": "2.9.3",
+ "xunit.extensibility.core": "2.9.3",
"xunit.runner.visualstudio": "3.0.1",
"YamlDotNet": "16.3.0"
},
@@ -297,6 +319,7 @@
"centralPackageVersions": {
"Asp.Versioning.Mvc": "8.1.0",
"Asp.Versioning.Mvc.ApiExplorer": "8.1.0",
+ "Aspire.Hosting.AppHost": "9.1.0",
"AspNetCore.Swagger.Fluent.Annotations": "1.0.4",
"AsyncStateMachine": "1.3.2",
"AutoMapper": "14.0.0",
@@ -323,6 +346,7 @@
"CommunityToolkit.Diagnostics": "8.2.2",
"CommunityToolkit.Mvvm": "8.2.2",
"Costura.Fody": "5.7.0",
+ "coverlet.collector": "6.0.4",
"Csv": "2.0.93",
"DocumentFormat.OpenXml": "2.20.0",
"DotNet.MultiMap": "2.2.1",
@@ -330,6 +354,7 @@
"ExcelDataReader": "3.6.0",
"ExcelDataReader.DataSet": "3.6.0",
"ExcelNumberFormat": "1.1.0",
+ "FluentAssertions": "8.3.0",
"Google.Protobuf": "3.27.1",
"Grpc.AspNetCore": "2.63.0",
"Grpc.AspNetCore.Server.Reflection": "2.63.0",
@@ -368,18 +393,34 @@
"MongoDB.Driver": "3.3.0",
"MongoDB.Driver.Core": "2.30.0",
"Moq": "4.20.72",
+ "MSTest.TestAdapter": "3.8.3",
+ "MSTest.TestFramework": "3.8.3",
"MySqlConnector": "2.4.0",
"NeoSmart.AsyncLock": "3.2.1",
"Newtonsoft.Json": "13.0.3",
"Nito.AsyncEx": "5.1.2",
"NJsonSchema.CodeGeneration.CSharp": "10.9.0",
"NLog": "5.4.0",
+ "NLog.Extensions.Logging": "5.3.11",
"NLog.Web.AspNetCore": "5.3.11",
+ "NSubstituteAutoSubstitute": "1.1.0",
+ "OneOf": "3.0.271",
+ "OpenTelemetry.AutoInstrumentation": "1.11.0",
+ "OpenTelemetry.Exporter.Console": "1.12.0",
+ "OpenTelemetry.Exporter.OpenTelemetryProtocol": "1.12.0",
+ "OpenTelemetry.Extensions.Hosting": "1.12.0",
+ "OpenTelemetry.Instrumentation.AspNetCore": "1.12.0",
+ "OpenTelemetry.Instrumentation.Http": "1.12.0",
+ "OpenTelemetry.PersistentStorage.FileSystem": "1.0.1",
"Otp.NET": "1.4.0",
"p4api.net": "2023.1.248.4623",
"Polly": "8.5.1",
"Pomelo.EntityFrameworkCore.MySql": "8.0.2",
"RabbitMQ.Client": "6.8.1",
+ "RedLock.net": "2.3.2",
+ "Sentry.AspNetCore": "5.10.0",
+ "Sentry.Extensions.Logging": "5.10.0",
+ "Sentry.NLog": "5.10.0",
"SharpSvn": "1.14003.272",
"sqlite-net-pcl": "1.9.172",
"SSH.NET": "2025.0.0",
@@ -392,8 +433,11 @@
"Swashbuckle.AspNetCore.Filters": "8.0.2",
"Swashbuckle.AspNetCore.SwaggerUI": "7.2.0",
"System.IdentityModel.Tokens.Jwt": "8.9.0",
+ "System.IO.Hashing": "9.0.1",
+ "Ulid": "1.3.4",
"xunit": "2.9.3",
- "xunit.assert": "2.9.2",
+ "xunit.assert": "2.9.3",
+ "xunit.extensibility.core": "2.9.3",
"xunit.runner.visualstudio": "3.0.1",
"YamlDotNet": "16.3.0"
},
@@ -497,6 +541,7 @@
"centralPackageVersions": {
"Asp.Versioning.Mvc": "8.1.0",
"Asp.Versioning.Mvc.ApiExplorer": "8.1.0",
+ "Aspire.Hosting.AppHost": "9.1.0",
"AspNetCore.Swagger.Fluent.Annotations": "1.0.4",
"AsyncStateMachine": "1.3.2",
"AutoMapper": "14.0.0",
@@ -523,6 +568,7 @@
"CommunityToolkit.Diagnostics": "8.2.2",
"CommunityToolkit.Mvvm": "8.2.2",
"Costura.Fody": "5.7.0",
+ "coverlet.collector": "6.0.4",
"Csv": "2.0.93",
"DocumentFormat.OpenXml": "2.20.0",
"DotNet.MultiMap": "2.2.1",
@@ -530,6 +576,7 @@
"ExcelDataReader": "3.6.0",
"ExcelDataReader.DataSet": "3.6.0",
"ExcelNumberFormat": "1.1.0",
+ "FluentAssertions": "8.3.0",
"Google.Protobuf": "3.27.1",
"Grpc.AspNetCore": "2.63.0",
"Grpc.AspNetCore.Server.Reflection": "2.63.0",
@@ -568,18 +615,34 @@
"MongoDB.Driver": "3.3.0",
"MongoDB.Driver.Core": "2.30.0",
"Moq": "4.20.72",
+ "MSTest.TestAdapter": "3.8.3",
+ "MSTest.TestFramework": "3.8.3",
"MySqlConnector": "2.4.0",
"NeoSmart.AsyncLock": "3.2.1",
"Newtonsoft.Json": "13.0.3",
"Nito.AsyncEx": "5.1.2",
"NJsonSchema.CodeGeneration.CSharp": "10.9.0",
"NLog": "5.4.0",
+ "NLog.Extensions.Logging": "5.3.11",
"NLog.Web.AspNetCore": "5.3.11",
+ "NSubstituteAutoSubstitute": "1.1.0",
+ "OneOf": "3.0.271",
+ "OpenTelemetry.AutoInstrumentation": "1.11.0",
+ "OpenTelemetry.Exporter.Console": "1.12.0",
+ "OpenTelemetry.Exporter.OpenTelemetryProtocol": "1.12.0",
+ "OpenTelemetry.Extensions.Hosting": "1.12.0",
+ "OpenTelemetry.Instrumentation.AspNetCore": "1.12.0",
+ "OpenTelemetry.Instrumentation.Http": "1.12.0",
+ "OpenTelemetry.PersistentStorage.FileSystem": "1.0.1",
"Otp.NET": "1.4.0",
"p4api.net": "2023.1.248.4623",
"Polly": "8.5.1",
"Pomelo.EntityFrameworkCore.MySql": "8.0.2",
"RabbitMQ.Client": "6.8.1",
+ "RedLock.net": "2.3.2",
+ "Sentry.AspNetCore": "5.10.0",
+ "Sentry.Extensions.Logging": "5.10.0",
+ "Sentry.NLog": "5.10.0",
"SharpSvn": "1.14003.272",
"sqlite-net-pcl": "1.9.172",
"SSH.NET": "2025.0.0",
@@ -592,8 +655,11 @@
"Swashbuckle.AspNetCore.Filters": "8.0.2",
"Swashbuckle.AspNetCore.SwaggerUI": "7.2.0",
"System.IdentityModel.Tokens.Jwt": "8.9.0",
+ "System.IO.Hashing": "9.0.1",
+ "Ulid": "1.3.4",
"xunit": "2.9.3",
- "xunit.assert": "2.9.2",
+ "xunit.assert": "2.9.3",
+ "xunit.extensibility.core": "2.9.3",
"xunit.runner.visualstudio": "3.0.1",
"YamlDotNet": "16.3.0"
},
@@ -679,6 +745,7 @@
"centralPackageVersions": {
"Asp.Versioning.Mvc": "8.1.0",
"Asp.Versioning.Mvc.ApiExplorer": "8.1.0",
+ "Aspire.Hosting.AppHost": "9.1.0",
"AspNetCore.Swagger.Fluent.Annotations": "1.0.4",
"AsyncStateMachine": "1.3.2",
"AutoMapper": "14.0.0",
@@ -705,6 +772,7 @@
"CommunityToolkit.Diagnostics": "8.2.2",
"CommunityToolkit.Mvvm": "8.2.2",
"Costura.Fody": "5.7.0",
+ "coverlet.collector": "6.0.4",
"Csv": "2.0.93",
"DocumentFormat.OpenXml": "2.20.0",
"DotNet.MultiMap": "2.2.1",
@@ -712,6 +780,7 @@
"ExcelDataReader": "3.6.0",
"ExcelDataReader.DataSet": "3.6.0",
"ExcelNumberFormat": "1.1.0",
+ "FluentAssertions": "8.3.0",
"Google.Protobuf": "3.27.1",
"Grpc.AspNetCore": "2.63.0",
"Grpc.AspNetCore.Server.Reflection": "2.63.0",
@@ -750,18 +819,34 @@
"MongoDB.Driver": "3.3.0",
"MongoDB.Driver.Core": "2.30.0",
"Moq": "4.20.72",
+ "MSTest.TestAdapter": "3.8.3",
+ "MSTest.TestFramework": "3.8.3",
"MySqlConnector": "2.4.0",
"NeoSmart.AsyncLock": "3.2.1",
"Newtonsoft.Json": "13.0.3",
"Nito.AsyncEx": "5.1.2",
"NJsonSchema.CodeGeneration.CSharp": "10.9.0",
"NLog": "5.4.0",
+ "NLog.Extensions.Logging": "5.3.11",
"NLog.Web.AspNetCore": "5.3.11",
+ "NSubstituteAutoSubstitute": "1.1.0",
+ "OneOf": "3.0.271",
+ "OpenTelemetry.AutoInstrumentation": "1.11.0",
+ "OpenTelemetry.Exporter.Console": "1.12.0",
+ "OpenTelemetry.Exporter.OpenTelemetryProtocol": "1.12.0",
+ "OpenTelemetry.Extensions.Hosting": "1.12.0",
+ "OpenTelemetry.Instrumentation.AspNetCore": "1.12.0",
+ "OpenTelemetry.Instrumentation.Http": "1.12.0",
+ "OpenTelemetry.PersistentStorage.FileSystem": "1.0.1",
"Otp.NET": "1.4.0",
"p4api.net": "2023.1.248.4623",
"Polly": "8.5.1",
"Pomelo.EntityFrameworkCore.MySql": "8.0.2",
"RabbitMQ.Client": "6.8.1",
+ "RedLock.net": "2.3.2",
+ "Sentry.AspNetCore": "5.10.0",
+ "Sentry.Extensions.Logging": "5.10.0",
+ "Sentry.NLog": "5.10.0",
"SharpSvn": "1.14003.272",
"sqlite-net-pcl": "1.9.172",
"SSH.NET": "2025.0.0",
@@ -774,8 +859,11 @@
"Swashbuckle.AspNetCore.Filters": "8.0.2",
"Swashbuckle.AspNetCore.SwaggerUI": "7.2.0",
"System.IdentityModel.Tokens.Jwt": "8.9.0",
+ "System.IO.Hashing": "9.0.1",
+ "Ulid": "1.3.4",
"xunit": "2.9.3",
- "xunit.assert": "2.9.2",
+ "xunit.assert": "2.9.3",
+ "xunit.extensibility.core": "2.9.3",
"xunit.runner.visualstudio": "3.0.1",
"YamlDotNet": "16.3.0"
},
@@ -854,6 +942,7 @@
"centralPackageVersions": {
"Asp.Versioning.Mvc": "8.1.0",
"Asp.Versioning.Mvc.ApiExplorer": "8.1.0",
+ "Aspire.Hosting.AppHost": "9.1.0",
"AspNetCore.Swagger.Fluent.Annotations": "1.0.4",
"AsyncStateMachine": "1.3.2",
"AutoMapper": "14.0.0",
@@ -880,6 +969,7 @@
"CommunityToolkit.Diagnostics": "8.2.2",
"CommunityToolkit.Mvvm": "8.2.2",
"Costura.Fody": "5.7.0",
+ "coverlet.collector": "6.0.4",
"Csv": "2.0.93",
"DocumentFormat.OpenXml": "2.20.0",
"DotNet.MultiMap": "2.2.1",
@@ -887,6 +977,7 @@
"ExcelDataReader": "3.6.0",
"ExcelDataReader.DataSet": "3.6.0",
"ExcelNumberFormat": "1.1.0",
+ "FluentAssertions": "8.3.0",
"Google.Protobuf": "3.27.1",
"Grpc.AspNetCore": "2.63.0",
"Grpc.AspNetCore.Server.Reflection": "2.63.0",
@@ -925,18 +1016,34 @@
"MongoDB.Driver": "3.3.0",
"MongoDB.Driver.Core": "2.30.0",
"Moq": "4.20.72",
+ "MSTest.TestAdapter": "3.8.3",
+ "MSTest.TestFramework": "3.8.3",
"MySqlConnector": "2.4.0",
"NeoSmart.AsyncLock": "3.2.1",
"Newtonsoft.Json": "13.0.3",
"Nito.AsyncEx": "5.1.2",
"NJsonSchema.CodeGeneration.CSharp": "10.9.0",
"NLog": "5.4.0",
+ "NLog.Extensions.Logging": "5.3.11",
"NLog.Web.AspNetCore": "5.3.11",
+ "NSubstituteAutoSubstitute": "1.1.0",
+ "OneOf": "3.0.271",
+ "OpenTelemetry.AutoInstrumentation": "1.11.0",
+ "OpenTelemetry.Exporter.Console": "1.12.0",
+ "OpenTelemetry.Exporter.OpenTelemetryProtocol": "1.12.0",
+ "OpenTelemetry.Extensions.Hosting": "1.12.0",
+ "OpenTelemetry.Instrumentation.AspNetCore": "1.12.0",
+ "OpenTelemetry.Instrumentation.Http": "1.12.0",
+ "OpenTelemetry.PersistentStorage.FileSystem": "1.0.1",
"Otp.NET": "1.4.0",
"p4api.net": "2023.1.248.4623",
"Polly": "8.5.1",
"Pomelo.EntityFrameworkCore.MySql": "8.0.2",
"RabbitMQ.Client": "6.8.1",
+ "RedLock.net": "2.3.2",
+ "Sentry.AspNetCore": "5.10.0",
+ "Sentry.Extensions.Logging": "5.10.0",
+ "Sentry.NLog": "5.10.0",
"SharpSvn": "1.14003.272",
"sqlite-net-pcl": "1.9.172",
"SSH.NET": "2025.0.0",
@@ -949,8 +1056,11 @@
"Swashbuckle.AspNetCore.Filters": "8.0.2",
"Swashbuckle.AspNetCore.SwaggerUI": "7.2.0",
"System.IdentityModel.Tokens.Jwt": "8.9.0",
+ "System.IO.Hashing": "9.0.1",
+ "Ulid": "1.3.4",
"xunit": "2.9.3",
- "xunit.assert": "2.9.2",
+ "xunit.assert": "2.9.3",
+ "xunit.extensibility.core": "2.9.3",
"xunit.runner.visualstudio": "3.0.1",
"YamlDotNet": "16.3.0"
},
@@ -1032,9 +1142,17 @@
"frameworks": {
"net8.0": {
"targetAlias": "net8.0",
+ "dependencies": {
+ "Ulid": {
+ "target": "Package",
+ "version": "[1.3.4, )",
+ "versionCentrallyManaged": true
+ }
+ },
"centralPackageVersions": {
"Asp.Versioning.Mvc": "8.1.0",
"Asp.Versioning.Mvc.ApiExplorer": "8.1.0",
+ "Aspire.Hosting.AppHost": "9.1.0",
"AspNetCore.Swagger.Fluent.Annotations": "1.0.4",
"AsyncStateMachine": "1.3.2",
"AutoMapper": "14.0.0",
@@ -1061,6 +1179,7 @@
"CommunityToolkit.Diagnostics": "8.2.2",
"CommunityToolkit.Mvvm": "8.2.2",
"Costura.Fody": "5.7.0",
+ "coverlet.collector": "6.0.4",
"Csv": "2.0.93",
"DocumentFormat.OpenXml": "2.20.0",
"DotNet.MultiMap": "2.2.1",
@@ -1068,6 +1187,7 @@
"ExcelDataReader": "3.6.0",
"ExcelDataReader.DataSet": "3.6.0",
"ExcelNumberFormat": "1.1.0",
+ "FluentAssertions": "8.3.0",
"Google.Protobuf": "3.27.1",
"Grpc.AspNetCore": "2.63.0",
"Grpc.AspNetCore.Server.Reflection": "2.63.0",
@@ -1106,18 +1226,34 @@
"MongoDB.Driver": "3.3.0",
"MongoDB.Driver.Core": "2.30.0",
"Moq": "4.20.72",
+ "MSTest.TestAdapter": "3.8.3",
+ "MSTest.TestFramework": "3.8.3",
"MySqlConnector": "2.4.0",
"NeoSmart.AsyncLock": "3.2.1",
"Newtonsoft.Json": "13.0.3",
"Nito.AsyncEx": "5.1.2",
"NJsonSchema.CodeGeneration.CSharp": "10.9.0",
"NLog": "5.4.0",
+ "NLog.Extensions.Logging": "5.3.11",
"NLog.Web.AspNetCore": "5.3.11",
+ "NSubstituteAutoSubstitute": "1.1.0",
+ "OneOf": "3.0.271",
+ "OpenTelemetry.AutoInstrumentation": "1.11.0",
+ "OpenTelemetry.Exporter.Console": "1.12.0",
+ "OpenTelemetry.Exporter.OpenTelemetryProtocol": "1.12.0",
+ "OpenTelemetry.Extensions.Hosting": "1.12.0",
+ "OpenTelemetry.Instrumentation.AspNetCore": "1.12.0",
+ "OpenTelemetry.Instrumentation.Http": "1.12.0",
+ "OpenTelemetry.PersistentStorage.FileSystem": "1.0.1",
"Otp.NET": "1.4.0",
"p4api.net": "2023.1.248.4623",
"Polly": "8.5.1",
"Pomelo.EntityFrameworkCore.MySql": "8.0.2",
"RabbitMQ.Client": "6.8.1",
+ "RedLock.net": "2.3.2",
+ "Sentry.AspNetCore": "5.10.0",
+ "Sentry.Extensions.Logging": "5.10.0",
+ "Sentry.NLog": "5.10.0",
"SharpSvn": "1.14003.272",
"sqlite-net-pcl": "1.9.172",
"SSH.NET": "2025.0.0",
@@ -1130,8 +1266,11 @@
"Swashbuckle.AspNetCore.Filters": "8.0.2",
"Swashbuckle.AspNetCore.SwaggerUI": "7.2.0",
"System.IdentityModel.Tokens.Jwt": "8.9.0",
+ "System.IO.Hashing": "9.0.1",
+ "Ulid": "1.3.4",
"xunit": "2.9.3",
- "xunit.assert": "2.9.2",
+ "xunit.assert": "2.9.3",
+ "xunit.extensibility.core": "2.9.3",
"xunit.runner.visualstudio": "3.0.1",
"YamlDotNet": "16.3.0"
},
@@ -1422,6 +1561,7 @@
"centralPackageVersions": {
"Asp.Versioning.Mvc": "8.1.0",
"Asp.Versioning.Mvc.ApiExplorer": "8.1.0",
+ "Aspire.Hosting.AppHost": "9.1.0",
"AspNetCore.Swagger.Fluent.Annotations": "1.0.4",
"AsyncStateMachine": "1.3.2",
"AutoMapper": "14.0.0",
@@ -1448,6 +1588,7 @@
"CommunityToolkit.Diagnostics": "8.2.2",
"CommunityToolkit.Mvvm": "8.2.2",
"Costura.Fody": "5.7.0",
+ "coverlet.collector": "6.0.4",
"Csv": "2.0.93",
"DocumentFormat.OpenXml": "2.20.0",
"DotNet.MultiMap": "2.2.1",
@@ -1455,6 +1596,7 @@
"ExcelDataReader": "3.6.0",
"ExcelDataReader.DataSet": "3.6.0",
"ExcelNumberFormat": "1.1.0",
+ "FluentAssertions": "8.3.0",
"Google.Protobuf": "3.27.1",
"Grpc.AspNetCore": "2.63.0",
"Grpc.AspNetCore.Server.Reflection": "2.63.0",
@@ -1493,18 +1635,34 @@
"MongoDB.Driver": "3.3.0",
"MongoDB.Driver.Core": "2.30.0",
"Moq": "4.20.72",
+ "MSTest.TestAdapter": "3.8.3",
+ "MSTest.TestFramework": "3.8.3",
"MySqlConnector": "2.4.0",
"NeoSmart.AsyncLock": "3.2.1",
"Newtonsoft.Json": "13.0.3",
"Nito.AsyncEx": "5.1.2",
"NJsonSchema.CodeGeneration.CSharp": "10.9.0",
"NLog": "5.4.0",
+ "NLog.Extensions.Logging": "5.3.11",
"NLog.Web.AspNetCore": "5.3.11",
+ "NSubstituteAutoSubstitute": "1.1.0",
+ "OneOf": "3.0.271",
+ "OpenTelemetry.AutoInstrumentation": "1.11.0",
+ "OpenTelemetry.Exporter.Console": "1.12.0",
+ "OpenTelemetry.Exporter.OpenTelemetryProtocol": "1.12.0",
+ "OpenTelemetry.Extensions.Hosting": "1.12.0",
+ "OpenTelemetry.Instrumentation.AspNetCore": "1.12.0",
+ "OpenTelemetry.Instrumentation.Http": "1.12.0",
+ "OpenTelemetry.PersistentStorage.FileSystem": "1.0.1",
"Otp.NET": "1.4.0",
"p4api.net": "2023.1.248.4623",
"Polly": "8.5.1",
"Pomelo.EntityFrameworkCore.MySql": "8.0.2",
"RabbitMQ.Client": "6.8.1",
+ "RedLock.net": "2.3.2",
+ "Sentry.AspNetCore": "5.10.0",
+ "Sentry.Extensions.Logging": "5.10.0",
+ "Sentry.NLog": "5.10.0",
"SharpSvn": "1.14003.272",
"sqlite-net-pcl": "1.9.172",
"SSH.NET": "2025.0.0",
@@ -1517,8 +1675,11 @@
"Swashbuckle.AspNetCore.Filters": "8.0.2",
"Swashbuckle.AspNetCore.SwaggerUI": "7.2.0",
"System.IdentityModel.Tokens.Jwt": "8.9.0",
+ "System.IO.Hashing": "9.0.1",
+ "Ulid": "1.3.4",
"xunit": "2.9.3",
- "xunit.assert": "2.9.2",
+ "xunit.assert": "2.9.3",
+ "xunit.extensibility.core": "2.9.3",
"xunit.runner.visualstudio": "3.0.1",
"YamlDotNet": "16.3.0"
},
@@ -1597,6 +1758,7 @@
"centralPackageVersions": {
"Asp.Versioning.Mvc": "8.1.0",
"Asp.Versioning.Mvc.ApiExplorer": "8.1.0",
+ "Aspire.Hosting.AppHost": "9.1.0",
"AspNetCore.Swagger.Fluent.Annotations": "1.0.4",
"AsyncStateMachine": "1.3.2",
"AutoMapper": "14.0.0",
@@ -1623,6 +1785,7 @@
"CommunityToolkit.Diagnostics": "8.2.2",
"CommunityToolkit.Mvvm": "8.2.2",
"Costura.Fody": "5.7.0",
+ "coverlet.collector": "6.0.4",
"Csv": "2.0.93",
"DocumentFormat.OpenXml": "2.20.0",
"DotNet.MultiMap": "2.2.1",
@@ -1630,6 +1793,7 @@
"ExcelDataReader": "3.6.0",
"ExcelDataReader.DataSet": "3.6.0",
"ExcelNumberFormat": "1.1.0",
+ "FluentAssertions": "8.3.0",
"Google.Protobuf": "3.27.1",
"Grpc.AspNetCore": "2.63.0",
"Grpc.AspNetCore.Server.Reflection": "2.63.0",
@@ -1668,18 +1832,34 @@
"MongoDB.Driver": "3.3.0",
"MongoDB.Driver.Core": "2.30.0",
"Moq": "4.20.72",
+ "MSTest.TestAdapter": "3.8.3",
+ "MSTest.TestFramework": "3.8.3",
"MySqlConnector": "2.4.0",
"NeoSmart.AsyncLock": "3.2.1",
"Newtonsoft.Json": "13.0.3",
"Nito.AsyncEx": "5.1.2",
"NJsonSchema.CodeGeneration.CSharp": "10.9.0",
"NLog": "5.4.0",
+ "NLog.Extensions.Logging": "5.3.11",
"NLog.Web.AspNetCore": "5.3.11",
+ "NSubstituteAutoSubstitute": "1.1.0",
+ "OneOf": "3.0.271",
+ "OpenTelemetry.AutoInstrumentation": "1.11.0",
+ "OpenTelemetry.Exporter.Console": "1.12.0",
+ "OpenTelemetry.Exporter.OpenTelemetryProtocol": "1.12.0",
+ "OpenTelemetry.Extensions.Hosting": "1.12.0",
+ "OpenTelemetry.Instrumentation.AspNetCore": "1.12.0",
+ "OpenTelemetry.Instrumentation.Http": "1.12.0",
+ "OpenTelemetry.PersistentStorage.FileSystem": "1.0.1",
"Otp.NET": "1.4.0",
"p4api.net": "2023.1.248.4623",
"Polly": "8.5.1",
"Pomelo.EntityFrameworkCore.MySql": "8.0.2",
"RabbitMQ.Client": "6.8.1",
+ "RedLock.net": "2.3.2",
+ "Sentry.AspNetCore": "5.10.0",
+ "Sentry.Extensions.Logging": "5.10.0",
+ "Sentry.NLog": "5.10.0",
"SharpSvn": "1.14003.272",
"sqlite-net-pcl": "1.9.172",
"SSH.NET": "2025.0.0",
@@ -1692,8 +1872,11 @@
"Swashbuckle.AspNetCore.Filters": "8.0.2",
"Swashbuckle.AspNetCore.SwaggerUI": "7.2.0",
"System.IdentityModel.Tokens.Jwt": "8.9.0",
+ "System.IO.Hashing": "9.0.1",
+ "Ulid": "1.3.4",
"xunit": "2.9.3",
- "xunit.assert": "2.9.2",
+ "xunit.assert": "2.9.3",
+ "xunit.extensibility.core": "2.9.3",
"xunit.runner.visualstudio": "3.0.1",
"YamlDotNet": "16.3.0"
},
@@ -1786,6 +1969,7 @@
"centralPackageVersions": {
"Asp.Versioning.Mvc": "8.1.0",
"Asp.Versioning.Mvc.ApiExplorer": "8.1.0",
+ "Aspire.Hosting.AppHost": "9.1.0",
"AspNetCore.Swagger.Fluent.Annotations": "1.0.4",
"AsyncStateMachine": "1.3.2",
"AutoMapper": "14.0.0",
@@ -1812,6 +1996,7 @@
"CommunityToolkit.Diagnostics": "8.2.2",
"CommunityToolkit.Mvvm": "8.2.2",
"Costura.Fody": "5.7.0",
+ "coverlet.collector": "6.0.4",
"Csv": "2.0.93",
"DocumentFormat.OpenXml": "2.20.0",
"DotNet.MultiMap": "2.2.1",
@@ -1819,6 +2004,7 @@
"ExcelDataReader": "3.6.0",
"ExcelDataReader.DataSet": "3.6.0",
"ExcelNumberFormat": "1.1.0",
+ "FluentAssertions": "8.3.0",
"Google.Protobuf": "3.27.1",
"Grpc.AspNetCore": "2.63.0",
"Grpc.AspNetCore.Server.Reflection": "2.63.0",
@@ -1857,18 +2043,34 @@
"MongoDB.Driver": "3.3.0",
"MongoDB.Driver.Core": "2.30.0",
"Moq": "4.20.72",
+ "MSTest.TestAdapter": "3.8.3",
+ "MSTest.TestFramework": "3.8.3",
"MySqlConnector": "2.4.0",
"NeoSmart.AsyncLock": "3.2.1",
"Newtonsoft.Json": "13.0.3",
"Nito.AsyncEx": "5.1.2",
"NJsonSchema.CodeGeneration.CSharp": "10.9.0",
"NLog": "5.4.0",
+ "NLog.Extensions.Logging": "5.3.11",
"NLog.Web.AspNetCore": "5.3.11",
+ "NSubstituteAutoSubstitute": "1.1.0",
+ "OneOf": "3.0.271",
+ "OpenTelemetry.AutoInstrumentation": "1.11.0",
+ "OpenTelemetry.Exporter.Console": "1.12.0",
+ "OpenTelemetry.Exporter.OpenTelemetryProtocol": "1.12.0",
+ "OpenTelemetry.Extensions.Hosting": "1.12.0",
+ "OpenTelemetry.Instrumentation.AspNetCore": "1.12.0",
+ "OpenTelemetry.Instrumentation.Http": "1.12.0",
+ "OpenTelemetry.PersistentStorage.FileSystem": "1.0.1",
"Otp.NET": "1.4.0",
"p4api.net": "2023.1.248.4623",
"Polly": "8.5.1",
"Pomelo.EntityFrameworkCore.MySql": "8.0.2",
"RabbitMQ.Client": "6.8.1",
+ "RedLock.net": "2.3.2",
+ "Sentry.AspNetCore": "5.10.0",
+ "Sentry.Extensions.Logging": "5.10.0",
+ "Sentry.NLog": "5.10.0",
"SharpSvn": "1.14003.272",
"sqlite-net-pcl": "1.9.172",
"SSH.NET": "2025.0.0",
@@ -1881,8 +2083,11 @@
"Swashbuckle.AspNetCore.Filters": "8.0.2",
"Swashbuckle.AspNetCore.SwaggerUI": "7.2.0",
"System.IdentityModel.Tokens.Jwt": "8.9.0",
+ "System.IO.Hashing": "9.0.1",
+ "Ulid": "1.3.4",
"xunit": "2.9.3",
- "xunit.assert": "2.9.2",
+ "xunit.assert": "2.9.3",
+ "xunit.extensibility.core": "2.9.3",
"xunit.runner.visualstudio": "3.0.1",
"YamlDotNet": "16.3.0"
},
@@ -1968,6 +2173,7 @@
"centralPackageVersions": {
"Asp.Versioning.Mvc": "8.1.0",
"Asp.Versioning.Mvc.ApiExplorer": "8.1.0",
+ "Aspire.Hosting.AppHost": "9.1.0",
"AspNetCore.Swagger.Fluent.Annotations": "1.0.4",
"AsyncStateMachine": "1.3.2",
"AutoMapper": "14.0.0",
@@ -1994,6 +2200,7 @@
"CommunityToolkit.Diagnostics": "8.2.2",
"CommunityToolkit.Mvvm": "8.2.2",
"Costura.Fody": "5.7.0",
+ "coverlet.collector": "6.0.4",
"Csv": "2.0.93",
"DocumentFormat.OpenXml": "2.20.0",
"DotNet.MultiMap": "2.2.1",
@@ -2001,6 +2208,7 @@
"ExcelDataReader": "3.6.0",
"ExcelDataReader.DataSet": "3.6.0",
"ExcelNumberFormat": "1.1.0",
+ "FluentAssertions": "8.3.0",
"Google.Protobuf": "3.27.1",
"Grpc.AspNetCore": "2.63.0",
"Grpc.AspNetCore.Server.Reflection": "2.63.0",
@@ -2039,18 +2247,34 @@
"MongoDB.Driver": "3.3.0",
"MongoDB.Driver.Core": "2.30.0",
"Moq": "4.20.72",
+ "MSTest.TestAdapter": "3.8.3",
+ "MSTest.TestFramework": "3.8.3",
"MySqlConnector": "2.4.0",
"NeoSmart.AsyncLock": "3.2.1",
"Newtonsoft.Json": "13.0.3",
"Nito.AsyncEx": "5.1.2",
"NJsonSchema.CodeGeneration.CSharp": "10.9.0",
"NLog": "5.4.0",
+ "NLog.Extensions.Logging": "5.3.11",
"NLog.Web.AspNetCore": "5.3.11",
+ "NSubstituteAutoSubstitute": "1.1.0",
+ "OneOf": "3.0.271",
+ "OpenTelemetry.AutoInstrumentation": "1.11.0",
+ "OpenTelemetry.Exporter.Console": "1.12.0",
+ "OpenTelemetry.Exporter.OpenTelemetryProtocol": "1.12.0",
+ "OpenTelemetry.Extensions.Hosting": "1.12.0",
+ "OpenTelemetry.Instrumentation.AspNetCore": "1.12.0",
+ "OpenTelemetry.Instrumentation.Http": "1.12.0",
+ "OpenTelemetry.PersistentStorage.FileSystem": "1.0.1",
"Otp.NET": "1.4.0",
"p4api.net": "2023.1.248.4623",
"Polly": "8.5.1",
"Pomelo.EntityFrameworkCore.MySql": "8.0.2",
"RabbitMQ.Client": "6.8.1",
+ "RedLock.net": "2.3.2",
+ "Sentry.AspNetCore": "5.10.0",
+ "Sentry.Extensions.Logging": "5.10.0",
+ "Sentry.NLog": "5.10.0",
"SharpSvn": "1.14003.272",
"sqlite-net-pcl": "1.9.172",
"SSH.NET": "2025.0.0",
@@ -2063,8 +2287,11 @@
"Swashbuckle.AspNetCore.Filters": "8.0.2",
"Swashbuckle.AspNetCore.SwaggerUI": "7.2.0",
"System.IdentityModel.Tokens.Jwt": "8.9.0",
+ "System.IO.Hashing": "9.0.1",
+ "Ulid": "1.3.4",
"xunit": "2.9.3",
- "xunit.assert": "2.9.2",
+ "xunit.assert": "2.9.3",
+ "xunit.extensibility.core": "2.9.3",
"xunit.runner.visualstudio": "3.0.1",
"YamlDotNet": "16.3.0"
},
@@ -2147,6 +2374,7 @@
"centralPackageVersions": {
"Asp.Versioning.Mvc": "8.1.0",
"Asp.Versioning.Mvc.ApiExplorer": "8.1.0",
+ "Aspire.Hosting.AppHost": "9.1.0",
"AspNetCore.Swagger.Fluent.Annotations": "1.0.4",
"AsyncStateMachine": "1.3.2",
"AutoMapper": "14.0.0",
@@ -2173,6 +2401,7 @@
"CommunityToolkit.Diagnostics": "8.2.2",
"CommunityToolkit.Mvvm": "8.2.2",
"Costura.Fody": "5.7.0",
+ "coverlet.collector": "6.0.4",
"Csv": "2.0.93",
"DocumentFormat.OpenXml": "2.20.0",
"DotNet.MultiMap": "2.2.1",
@@ -2180,6 +2409,7 @@
"ExcelDataReader": "3.6.0",
"ExcelDataReader.DataSet": "3.6.0",
"ExcelNumberFormat": "1.1.0",
+ "FluentAssertions": "8.3.0",
"Google.Protobuf": "3.27.1",
"Grpc.AspNetCore": "2.63.0",
"Grpc.AspNetCore.Server.Reflection": "2.63.0",
@@ -2218,18 +2448,34 @@
"MongoDB.Driver": "3.3.0",
"MongoDB.Driver.Core": "2.30.0",
"Moq": "4.20.72",
+ "MSTest.TestAdapter": "3.8.3",
+ "MSTest.TestFramework": "3.8.3",
"MySqlConnector": "2.4.0",
"NeoSmart.AsyncLock": "3.2.1",
"Newtonsoft.Json": "13.0.3",
"Nito.AsyncEx": "5.1.2",
"NJsonSchema.CodeGeneration.CSharp": "10.9.0",
"NLog": "5.4.0",
+ "NLog.Extensions.Logging": "5.3.11",
"NLog.Web.AspNetCore": "5.3.11",
+ "NSubstituteAutoSubstitute": "1.1.0",
+ "OneOf": "3.0.271",
+ "OpenTelemetry.AutoInstrumentation": "1.11.0",
+ "OpenTelemetry.Exporter.Console": "1.12.0",
+ "OpenTelemetry.Exporter.OpenTelemetryProtocol": "1.12.0",
+ "OpenTelemetry.Extensions.Hosting": "1.12.0",
+ "OpenTelemetry.Instrumentation.AspNetCore": "1.12.0",
+ "OpenTelemetry.Instrumentation.Http": "1.12.0",
+ "OpenTelemetry.PersistentStorage.FileSystem": "1.0.1",
"Otp.NET": "1.4.0",
"p4api.net": "2023.1.248.4623",
"Polly": "8.5.1",
"Pomelo.EntityFrameworkCore.MySql": "8.0.2",
"RabbitMQ.Client": "6.8.1",
+ "RedLock.net": "2.3.2",
+ "Sentry.AspNetCore": "5.10.0",
+ "Sentry.Extensions.Logging": "5.10.0",
+ "Sentry.NLog": "5.10.0",
"SharpSvn": "1.14003.272",
"sqlite-net-pcl": "1.9.172",
"SSH.NET": "2025.0.0",
@@ -2242,8 +2488,11 @@
"Swashbuckle.AspNetCore.Filters": "8.0.2",
"Swashbuckle.AspNetCore.SwaggerUI": "7.2.0",
"System.IdentityModel.Tokens.Jwt": "8.9.0",
+ "System.IO.Hashing": "9.0.1",
+ "Ulid": "1.3.4",
"xunit": "2.9.3",
- "xunit.assert": "2.9.2",
+ "xunit.assert": "2.9.3",
+ "xunit.extensibility.core": "2.9.3",
"xunit.runner.visualstudio": "3.0.1",
"YamlDotNet": "16.3.0"
},
@@ -2348,6 +2597,7 @@
"centralPackageVersions": {
"Asp.Versioning.Mvc": "8.1.0",
"Asp.Versioning.Mvc.ApiExplorer": "8.1.0",
+ "Aspire.Hosting.AppHost": "9.1.0",
"AspNetCore.Swagger.Fluent.Annotations": "1.0.4",
"AsyncStateMachine": "1.3.2",
"AutoMapper": "14.0.0",
@@ -2374,6 +2624,7 @@
"CommunityToolkit.Diagnostics": "8.2.2",
"CommunityToolkit.Mvvm": "8.2.2",
"Costura.Fody": "5.7.0",
+ "coverlet.collector": "6.0.4",
"Csv": "2.0.93",
"DocumentFormat.OpenXml": "2.20.0",
"DotNet.MultiMap": "2.2.1",
@@ -2381,6 +2632,7 @@
"ExcelDataReader": "3.6.0",
"ExcelDataReader.DataSet": "3.6.0",
"ExcelNumberFormat": "1.1.0",
+ "FluentAssertions": "8.3.0",
"Google.Protobuf": "3.27.1",
"Grpc.AspNetCore": "2.63.0",
"Grpc.AspNetCore.Server.Reflection": "2.63.0",
@@ -2419,18 +2671,34 @@
"MongoDB.Driver": "3.3.0",
"MongoDB.Driver.Core": "2.30.0",
"Moq": "4.20.72",
+ "MSTest.TestAdapter": "3.8.3",
+ "MSTest.TestFramework": "3.8.3",
"MySqlConnector": "2.4.0",
"NeoSmart.AsyncLock": "3.2.1",
"Newtonsoft.Json": "13.0.3",
"Nito.AsyncEx": "5.1.2",
"NJsonSchema.CodeGeneration.CSharp": "10.9.0",
"NLog": "5.4.0",
+ "NLog.Extensions.Logging": "5.3.11",
"NLog.Web.AspNetCore": "5.3.11",
+ "NSubstituteAutoSubstitute": "1.1.0",
+ "OneOf": "3.0.271",
+ "OpenTelemetry.AutoInstrumentation": "1.11.0",
+ "OpenTelemetry.Exporter.Console": "1.12.0",
+ "OpenTelemetry.Exporter.OpenTelemetryProtocol": "1.12.0",
+ "OpenTelemetry.Extensions.Hosting": "1.12.0",
+ "OpenTelemetry.Instrumentation.AspNetCore": "1.12.0",
+ "OpenTelemetry.Instrumentation.Http": "1.12.0",
+ "OpenTelemetry.PersistentStorage.FileSystem": "1.0.1",
"Otp.NET": "1.4.0",
"p4api.net": "2023.1.248.4623",
"Polly": "8.5.1",
"Pomelo.EntityFrameworkCore.MySql": "8.0.2",
"RabbitMQ.Client": "6.8.1",
+ "RedLock.net": "2.3.2",
+ "Sentry.AspNetCore": "5.10.0",
+ "Sentry.Extensions.Logging": "5.10.0",
+ "Sentry.NLog": "5.10.0",
"SharpSvn": "1.14003.272",
"sqlite-net-pcl": "1.9.172",
"SSH.NET": "2025.0.0",
@@ -2443,8 +2711,11 @@
"Swashbuckle.AspNetCore.Filters": "8.0.2",
"Swashbuckle.AspNetCore.SwaggerUI": "7.2.0",
"System.IdentityModel.Tokens.Jwt": "8.9.0",
+ "System.IO.Hashing": "9.0.1",
+ "Ulid": "1.3.4",
"xunit": "2.9.3",
- "xunit.assert": "2.9.2",
+ "xunit.assert": "2.9.3",
+ "xunit.extensibility.core": "2.9.3",
"xunit.runner.visualstudio": "3.0.1",
"YamlDotNet": "16.3.0"
},
@@ -2540,6 +2811,7 @@
"centralPackageVersions": {
"Asp.Versioning.Mvc": "8.1.0",
"Asp.Versioning.Mvc.ApiExplorer": "8.1.0",
+ "Aspire.Hosting.AppHost": "9.1.0",
"AspNetCore.Swagger.Fluent.Annotations": "1.0.4",
"AsyncStateMachine": "1.3.2",
"AutoMapper": "14.0.0",
@@ -2566,6 +2838,7 @@
"CommunityToolkit.Diagnostics": "8.2.2",
"CommunityToolkit.Mvvm": "8.2.2",
"Costura.Fody": "5.7.0",
+ "coverlet.collector": "6.0.4",
"Csv": "2.0.93",
"DocumentFormat.OpenXml": "2.20.0",
"DotNet.MultiMap": "2.2.1",
@@ -2573,6 +2846,7 @@
"ExcelDataReader": "3.6.0",
"ExcelDataReader.DataSet": "3.6.0",
"ExcelNumberFormat": "1.1.0",
+ "FluentAssertions": "8.3.0",
"Google.Protobuf": "3.27.1",
"Grpc.AspNetCore": "2.63.0",
"Grpc.AspNetCore.Server.Reflection": "2.63.0",
@@ -2611,18 +2885,34 @@
"MongoDB.Driver": "3.3.0",
"MongoDB.Driver.Core": "2.30.0",
"Moq": "4.20.72",
+ "MSTest.TestAdapter": "3.8.3",
+ "MSTest.TestFramework": "3.8.3",
"MySqlConnector": "2.4.0",
"NeoSmart.AsyncLock": "3.2.1",
"Newtonsoft.Json": "13.0.3",
"Nito.AsyncEx": "5.1.2",
"NJsonSchema.CodeGeneration.CSharp": "10.9.0",
"NLog": "5.4.0",
+ "NLog.Extensions.Logging": "5.3.11",
"NLog.Web.AspNetCore": "5.3.11",
+ "NSubstituteAutoSubstitute": "1.1.0",
+ "OneOf": "3.0.271",
+ "OpenTelemetry.AutoInstrumentation": "1.11.0",
+ "OpenTelemetry.Exporter.Console": "1.12.0",
+ "OpenTelemetry.Exporter.OpenTelemetryProtocol": "1.12.0",
+ "OpenTelemetry.Extensions.Hosting": "1.12.0",
+ "OpenTelemetry.Instrumentation.AspNetCore": "1.12.0",
+ "OpenTelemetry.Instrumentation.Http": "1.12.0",
+ "OpenTelemetry.PersistentStorage.FileSystem": "1.0.1",
"Otp.NET": "1.4.0",
"p4api.net": "2023.1.248.4623",
"Polly": "8.5.1",
"Pomelo.EntityFrameworkCore.MySql": "8.0.2",
"RabbitMQ.Client": "6.8.1",
+ "RedLock.net": "2.3.2",
+ "Sentry.AspNetCore": "5.10.0",
+ "Sentry.Extensions.Logging": "5.10.0",
+ "Sentry.NLog": "5.10.0",
"SharpSvn": "1.14003.272",
"sqlite-net-pcl": "1.9.172",
"SSH.NET": "2025.0.0",
@@ -2635,8 +2925,11 @@
"Swashbuckle.AspNetCore.Filters": "8.0.2",
"Swashbuckle.AspNetCore.SwaggerUI": "7.2.0",
"System.IdentityModel.Tokens.Jwt": "8.9.0",
+ "System.IO.Hashing": "9.0.1",
+ "Ulid": "1.3.4",
"xunit": "2.9.3",
- "xunit.assert": "2.9.2",
+ "xunit.assert": "2.9.3",
+ "xunit.extensibility.core": "2.9.3",
"xunit.runner.visualstudio": "3.0.1",
"YamlDotNet": "16.3.0"
},
diff --git a/BrokerApiTest/obj/Debug/net8.0/BrokerApiTest.assets.cache b/BrokerApiTest/obj/Debug/net8.0/BrokerApiTest.assets.cache
index 4d3a90e..d0d7619 100644
Binary files a/BrokerApiTest/obj/Debug/net8.0/BrokerApiTest.assets.cache and b/BrokerApiTest/obj/Debug/net8.0/BrokerApiTest.assets.cache differ
diff --git a/BrokerApiTest/obj/Debug/net8.0/BrokerApiTest.csproj.AssemblyReference.cache b/BrokerApiTest/obj/Debug/net8.0/BrokerApiTest.csproj.AssemblyReference.cache
index b01eccf..0840375 100644
Binary files a/BrokerApiTest/obj/Debug/net8.0/BrokerApiTest.csproj.AssemblyReference.cache and b/BrokerApiTest/obj/Debug/net8.0/BrokerApiTest.csproj.AssemblyReference.cache differ
diff --git a/BrokerApiTest/obj/project.assets.json b/BrokerApiTest/obj/project.assets.json
index 4e53e0c..6e0ce24 100644
--- a/BrokerApiTest/obj/project.assets.json
+++ b/BrokerApiTest/obj/project.assets.json
@@ -3132,6 +3132,19 @@
}
}
},
+ "Ulid/1.3.4": {
+ "type": "package",
+ "compile": {
+ "lib/net8.0/Ulid.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtime": {
+ "lib/net8.0/Ulid.dll": {
+ "related": ".xml"
+ }
+ }
+ },
"xunit/2.9.3": {
"type": "package",
"dependencies": {
@@ -3409,7 +3422,8 @@
"Protocol": "1.0.0",
"ServerBase": "1.0.0",
"ServerCore": "1.0.0",
- "UGQDatabase": "1.0.0"
+ "UGQDatabase": "1.0.0",
+ "Ulid": "1.3.4"
},
"compile": {
"bin/placeholder/ServerCommon.dll": {}
@@ -8046,6 +8060,28 @@
"useSharedDesignerContext.txt"
]
},
+ "Ulid/1.3.4": {
+ "sha512": "6IaGquwjjfW+BoHSV844y12Uy2kxbboYNmsibxr2lotcSPAA3LKy1CKcAQ8JOdAdL4xMoDNXA1oxG41w7fbr6Q==",
+ "type": "package",
+ "path": "ulid/1.3.4",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "Icon.png",
+ "lib/net6.0/Ulid.dll",
+ "lib/net6.0/Ulid.xml",
+ "lib/net7.0/Ulid.dll",
+ "lib/net7.0/Ulid.xml",
+ "lib/net8.0/Ulid.dll",
+ "lib/net8.0/Ulid.xml",
+ "lib/netstandard2.0/Ulid.dll",
+ "lib/netstandard2.0/Ulid.xml",
+ "lib/netstandard2.1/Ulid.dll",
+ "lib/netstandard2.1/Ulid.xml",
+ "ulid.1.3.4.nupkg.sha512",
+ "ulid.nuspec"
+ ]
+ },
"xunit/2.9.3": {
"sha512": "TlXQBinK35LpOPKHAqbLY4xlEen9TBafjs0V5KnA4wZsoQLQJiirCR4CbIXvOH8NzkW4YeJKP5P/Bnrodm0h9Q==",
"type": "package",
@@ -8378,6 +8414,7 @@
"centralPackageVersions": {
"Asp.Versioning.Mvc": "8.1.0",
"Asp.Versioning.Mvc.ApiExplorer": "8.1.0",
+ "Aspire.Hosting.AppHost": "9.1.0",
"AspNetCore.Swagger.Fluent.Annotations": "1.0.4",
"AsyncStateMachine": "1.3.2",
"AutoMapper": "14.0.0",
@@ -8404,6 +8441,7 @@
"CommunityToolkit.Diagnostics": "8.2.2",
"CommunityToolkit.Mvvm": "8.2.2",
"Costura.Fody": "5.7.0",
+ "coverlet.collector": "6.0.4",
"Csv": "2.0.93",
"DocumentFormat.OpenXml": "2.20.0",
"DotNet.MultiMap": "2.2.1",
@@ -8411,6 +8449,7 @@
"ExcelDataReader": "3.6.0",
"ExcelDataReader.DataSet": "3.6.0",
"ExcelNumberFormat": "1.1.0",
+ "FluentAssertions": "8.3.0",
"Google.Protobuf": "3.27.1",
"Grpc.AspNetCore": "2.63.0",
"Grpc.AspNetCore.Server.Reflection": "2.63.0",
@@ -8449,18 +8488,34 @@
"MongoDB.Driver": "3.3.0",
"MongoDB.Driver.Core": "2.30.0",
"Moq": "4.20.72",
+ "MSTest.TestAdapter": "3.8.3",
+ "MSTest.TestFramework": "3.8.3",
"MySqlConnector": "2.4.0",
"NeoSmart.AsyncLock": "3.2.1",
"Newtonsoft.Json": "13.0.3",
"Nito.AsyncEx": "5.1.2",
"NJsonSchema.CodeGeneration.CSharp": "10.9.0",
"NLog": "5.4.0",
+ "NLog.Extensions.Logging": "5.3.11",
"NLog.Web.AspNetCore": "5.3.11",
+ "NSubstituteAutoSubstitute": "1.1.0",
+ "OneOf": "3.0.271",
+ "OpenTelemetry.AutoInstrumentation": "1.11.0",
+ "OpenTelemetry.Exporter.Console": "1.12.0",
+ "OpenTelemetry.Exporter.OpenTelemetryProtocol": "1.12.0",
+ "OpenTelemetry.Extensions.Hosting": "1.12.0",
+ "OpenTelemetry.Instrumentation.AspNetCore": "1.12.0",
+ "OpenTelemetry.Instrumentation.Http": "1.12.0",
+ "OpenTelemetry.PersistentStorage.FileSystem": "1.0.1",
"Otp.NET": "1.4.0",
"p4api.net": "2023.1.248.4623",
"Polly": "8.5.1",
"Pomelo.EntityFrameworkCore.MySql": "8.0.2",
"RabbitMQ.Client": "6.8.1",
+ "RedLock.net": "2.3.2",
+ "Sentry.AspNetCore": "5.10.0",
+ "Sentry.Extensions.Logging": "5.10.0",
+ "Sentry.NLog": "5.10.0",
"SharpSvn": "1.14003.272",
"sqlite-net-pcl": "1.9.172",
"SSH.NET": "2025.0.0",
@@ -8473,8 +8528,11 @@
"Swashbuckle.AspNetCore.Filters": "8.0.2",
"Swashbuckle.AspNetCore.SwaggerUI": "7.2.0",
"System.IdentityModel.Tokens.Jwt": "8.9.0",
+ "System.IO.Hashing": "9.0.1",
+ "Ulid": "1.3.4",
"xunit": "2.9.3",
- "xunit.assert": "2.9.2",
+ "xunit.assert": "2.9.3",
+ "xunit.extensibility.core": "2.9.3",
"xunit.runner.visualstudio": "3.0.1",
"YamlDotNet": "16.3.0"
},
diff --git a/BrokerApiTest/obj/project.nuget.cache b/BrokerApiTest/obj/project.nuget.cache
index 222f2f7..483a3b7 100644
--- a/BrokerApiTest/obj/project.nuget.cache
+++ b/BrokerApiTest/obj/project.nuget.cache
@@ -1,6 +1,6 @@
{
"version": 2,
- "dgSpecHash": "Q+hbkpSpm30=",
+ "dgSpecHash": "1TAk64zf+QU=",
"success": true,
"projectFilePath": "D:\\03.SVN\\03.caliverse\\Server\\CaliServer\\BrokerApiTest\\BrokerApiTest.csproj",
"expectedPackageFiles": [
@@ -178,6 +178,7 @@
"C:\\Users\\user\\.nuget\\packages\\system.text.json\\8.0.0\\system.text.json.8.0.0.nupkg.sha512",
"C:\\Users\\user\\.nuget\\packages\\system.threading.channels\\7.0.0\\system.threading.channels.7.0.0.nupkg.sha512",
"C:\\Users\\user\\.nuget\\packages\\system.windows.extensions\\6.0.0\\system.windows.extensions.6.0.0.nupkg.sha512",
+ "C:\\Users\\user\\.nuget\\packages\\ulid\\1.3.4\\ulid.1.3.4.nupkg.sha512",
"C:\\Users\\user\\.nuget\\packages\\xunit\\2.9.3\\xunit.2.9.3.nupkg.sha512",
"C:\\Users\\user\\.nuget\\packages\\xunit.abstractions\\2.0.3\\xunit.abstractions.2.0.3.nupkg.sha512",
"C:\\Users\\user\\.nuget\\packages\\xunit.analyzers\\1.18.0\\xunit.analyzers.1.18.0.nupkg.sha512",
diff --git a/BrokerApiTest/obj/project.packagespec.json b/BrokerApiTest/obj/project.packagespec.json
index ce77971..de31d54 100644
--- a/BrokerApiTest/obj/project.packagespec.json
+++ b/BrokerApiTest/obj/project.packagespec.json
@@ -1 +1 @@
-"restore":{"projectUniqueName":"D:\\03.SVN\\03.caliverse\\Server\\CaliServer\\BrokerApiTest\\BrokerApiTest.csproj","projectName":"BrokerApiTest","projectPath":"D:\\03.SVN\\03.caliverse\\Server\\CaliServer\\BrokerApiTest\\BrokerApiTest.csproj","outputPath":"D:\\03.SVN\\03.caliverse\\Server\\CaliServer\\BrokerApiTest\\obj\\","projectStyle":"PackageReference","centralPackageVersionsManagementEnabled":true,"originalTargetFrameworks":["net8.0"],"sources":{"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\":{},"https://api.nuget.org/v3/index.json":{}},"frameworks":{"net8.0":{"targetAlias":"net8.0","projectReferences":{"D:\\03.SVN\\03.caliverse\\Server\\CaliServer\\BrokerApiServer\\BrokerApiServer.csproj":{"projectPath":"D:\\03.SVN\\03.caliverse\\Server\\CaliServer\\BrokerApiServer\\BrokerApiServer.csproj"}}}},"warningProperties":{"warnAsError":["NU1605"]},"restoreAuditProperties":{"enableAudit":"true","auditLevel":"low","auditMode":"direct"}}"frameworks":{"net8.0":{"targetAlias":"net8.0","dependencies":{"Microsoft.AspNetCore.Mvc.Testing":{"target":"Package","version":"[8.0.2, )","versionCentrallyManaged":true},"Microsoft.NET.Test.Sdk":{"target":"Package","version":"[17.12.0, )","versionCentrallyManaged":true},"Moq":{"target":"Package","version":"[4.20.72, )","versionCentrallyManaged":true},"xunit":{"target":"Package","version":"[2.9.3, )","versionCentrallyManaged":true},"xunit.runner.visualstudio":{"include":"Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive","suppressParent":"All","target":"Package","version":"[3.0.1, )","versionCentrallyManaged":true}},"centralPackageVersions":{"Asp.Versioning.Mvc":"8.1.0","Asp.Versioning.Mvc.ApiExplorer":"8.1.0","AspNetCore.Swagger.Fluent.Annotations":"1.0.4","AsyncStateMachine":"1.3.2","AutoMapper":"14.0.0","AutoMapper.AspNetCore.OData.EFCore":"7.0.1","AutoMapper.Collection":"11.0.0","AutoMapper.Collection.EntityFrameworkCore":"11.0.0","AutoMapper.Contrib.Autofac.DependencyInjection":"9.0.0","AutoMapper.Data":"9.0.0","AutoMapper.EF6":"3.0.1","AutoMapper.Extensions.EnumMapping":"4.1.0","AutoMapper.Extensions.ExpressionMapping":"8.0.0","AWS.Logger.NLog":"3.3.4","AWSSDK.Core":"3.7.402.46","AWSSDK.DynamoDBv2":"3.7.407","AWSSDK.EC2":"3.7.330.4","AWSSDK.ElasticLoadBalancingV2":"3.7.303.15","AWSSDK.OpenSearchService":"3.7.404.81","AWSSDK.S3":"3.7.416.15","AWSSDK.SecurityToken":"3.7.401.89","Axion.ConcurrentHashSet":"1.0.0","BCrypt.Net-Next":"4.0.3","BouncyCastle.Cryptography":"2.5.1","CommandLineParser":"2.9.1","CommunityToolkit.Diagnostics":"8.2.2","CommunityToolkit.Mvvm":"8.2.2","Costura.Fody":"5.7.0","Csv":"2.0.93","DocumentFormat.OpenXml":"2.20.0","DotNet.MultiMap":"2.2.1","DumpExtensions":"2.0.0","ExcelDataReader":"3.6.0","ExcelDataReader.DataSet":"3.6.0","ExcelNumberFormat":"1.1.0","Google.Protobuf":"3.27.1","Grpc.AspNetCore":"2.63.0","Grpc.AspNetCore.Server.Reflection":"2.63.0","Grpc.Tools":"2.64.0","JWT":"11.0.0","MaterialDesignColors":"3.1.1-ci850","MaterialDesignThemes":"5.1.1-ci850","MaxMind.Db":"4.1.0","MaxMind.GeoIP2":"5.2.0","MediatR":"12.3.0","Microsoft.AspNetCore.Authentication.JwtBearer":"8.0.2","Microsoft.AspNetCore.Mvc.Testing":"8.0.2","Microsoft.AspNetCore.OpenApi":"8.0.6","Microsoft.Data.Sqlite":"8.0.6","Microsoft.Diagnostics.NETCore.Client":"0.2.621003","Microsoft.EntityFrameworkCore.Design":"8.0.2","Microsoft.EntityFrameworkCore.Tools":"8.0.2","Microsoft.Extensions.Caching.StackExchangeRedis":"8.0.6","Microsoft.Extensions.Configuration":"9.0.4","Microsoft.Extensions.Configuration.Abstractions":"8.0.0","Microsoft.Extensions.Configuration.UserSecrets":"8.0.0","Microsoft.Extensions.DependencyInjection":"8.0.0","Microsoft.Extensions.DependencyInjection.Abstractions":"8.0.1","Microsoft.Extensions.Hosting":"8.0.0","Microsoft.Extensions.Hosting.Abstractions":"8.0.0","Microsoft.Extensions.Http":"8.0.0","Microsoft.Extensions.Logging":"8.0.0","Microsoft.Extensions.Logging.Abstractions":"9.0.4","Microsoft.Extensions.Options":"9.0.4","Microsoft.Extensions.Options.ConfigurationExtensions":"8.0.0","Microsoft.NET.Test.Sdk":"17.12.0","Microsoft.OpenApi":"1.6.22","Microsoft.Xaml.Behaviors.Wpf":"1.1.122","MongoDB.Analyzer":"1.5.0","MongoDB.Bson":"3.3.0","MongoDB.Driver":"3.3.0","MongoDB.Driver.Core":"2.30.0","Moq":"4.20.72","MySqlConnector":"2.4.0","NeoSmart.AsyncLock":"3.2.1","Newtonsoft.Json":"13.0.3","Nito.AsyncEx":"5.1.2","NJsonSchema.CodeGeneration.CSharp":"10.9.0","NLog":"5.4.0","NLog.Web.AspNetCore":"5.3.11","Otp.NET":"1.4.0","p4api.net":"2023.1.248.4623","Polly":"8.5.1","Pomelo.EntityFrameworkCore.MySql":"8.0.2","RabbitMQ.Client":"6.8.1","SharpSvn":"1.14003.272","sqlite-net-pcl":"1.9.172","SSH.NET":"2025.0.0","StackExchange.Redis":"2.8.31","StackExchange.Redis.Extensions.Core":"11.0.0","StackExchange.Redis.Extensions.Newtonsoft":"11.0.0","StackExchange.Redis.MultiplexerPool":"2.2.0","Swashbuckle.AspNetCore":"7.2.0","Swashbuckle.AspNetCore.Annotations":"7.2.0","Swashbuckle.AspNetCore.Filters":"8.0.2","Swashbuckle.AspNetCore.SwaggerUI":"7.2.0","System.IdentityModel.Tokens.Jwt":"8.9.0","xunit":"2.9.3","xunit.assert":"2.9.2","xunit.runner.visualstudio":"3.0.1","YamlDotNet":"16.3.0"},"imports":["net461","net462","net47","net471","net472","net48","net481"],"assetTargetFallback":true,"warn":true,"frameworkReferences":{"Microsoft.NETCore.App":{"privateAssets":"all"}},"runtimeIdentifierGraphPath":"C:\\Program Files\\dotnet\\sdk\\8.0.303/PortableRuntimeIdentifierGraph.json"}}
\ No newline at end of file
+"restore":{"projectUniqueName":"D:\\03.SVN\\03.caliverse\\Server\\CaliServer\\BrokerApiTest\\BrokerApiTest.csproj","projectName":"BrokerApiTest","projectPath":"D:\\03.SVN\\03.caliverse\\Server\\CaliServer\\BrokerApiTest\\BrokerApiTest.csproj","outputPath":"D:\\03.SVN\\03.caliverse\\Server\\CaliServer\\BrokerApiTest\\obj\\","projectStyle":"PackageReference","centralPackageVersionsManagementEnabled":true,"originalTargetFrameworks":["net8.0"],"sources":{"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\":{},"https://api.nuget.org/v3/index.json":{}},"frameworks":{"net8.0":{"targetAlias":"net8.0","projectReferences":{"D:\\03.SVN\\03.caliverse\\Server\\CaliServer\\BrokerApiServer\\BrokerApiServer.csproj":{"projectPath":"D:\\03.SVN\\03.caliverse\\Server\\CaliServer\\BrokerApiServer\\BrokerApiServer.csproj"}}}},"warningProperties":{"warnAsError":["NU1605"]},"restoreAuditProperties":{"enableAudit":"true","auditLevel":"low","auditMode":"direct"}}"frameworks":{"net8.0":{"targetAlias":"net8.0","dependencies":{"Microsoft.AspNetCore.Mvc.Testing":{"target":"Package","version":"[8.0.2, )","versionCentrallyManaged":true},"Microsoft.NET.Test.Sdk":{"target":"Package","version":"[17.12.0, )","versionCentrallyManaged":true},"Moq":{"target":"Package","version":"[4.20.72, )","versionCentrallyManaged":true},"xunit":{"target":"Package","version":"[2.9.3, )","versionCentrallyManaged":true},"xunit.runner.visualstudio":{"include":"Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive","suppressParent":"All","target":"Package","version":"[3.0.1, )","versionCentrallyManaged":true}},"centralPackageVersions":{"Asp.Versioning.Mvc":"8.1.0","Asp.Versioning.Mvc.ApiExplorer":"8.1.0","Aspire.Hosting.AppHost":"9.1.0","AspNetCore.Swagger.Fluent.Annotations":"1.0.4","AsyncStateMachine":"1.3.2","AutoMapper":"14.0.0","AutoMapper.AspNetCore.OData.EFCore":"7.0.1","AutoMapper.Collection":"11.0.0","AutoMapper.Collection.EntityFrameworkCore":"11.0.0","AutoMapper.Contrib.Autofac.DependencyInjection":"9.0.0","AutoMapper.Data":"9.0.0","AutoMapper.EF6":"3.0.1","AutoMapper.Extensions.EnumMapping":"4.1.0","AutoMapper.Extensions.ExpressionMapping":"8.0.0","AWS.Logger.NLog":"3.3.4","AWSSDK.Core":"3.7.402.46","AWSSDK.DynamoDBv2":"3.7.407","AWSSDK.EC2":"3.7.330.4","AWSSDK.ElasticLoadBalancingV2":"3.7.303.15","AWSSDK.OpenSearchService":"3.7.404.81","AWSSDK.S3":"3.7.416.15","AWSSDK.SecurityToken":"3.7.401.89","Axion.ConcurrentHashSet":"1.0.0","BCrypt.Net-Next":"4.0.3","BouncyCastle.Cryptography":"2.5.1","CommandLineParser":"2.9.1","CommunityToolkit.Diagnostics":"8.2.2","CommunityToolkit.Mvvm":"8.2.2","Costura.Fody":"5.7.0","coverlet.collector":"6.0.4","Csv":"2.0.93","DocumentFormat.OpenXml":"2.20.0","DotNet.MultiMap":"2.2.1","DumpExtensions":"2.0.0","ExcelDataReader":"3.6.0","ExcelDataReader.DataSet":"3.6.0","ExcelNumberFormat":"1.1.0","FluentAssertions":"8.3.0","Google.Protobuf":"3.27.1","Grpc.AspNetCore":"2.63.0","Grpc.AspNetCore.Server.Reflection":"2.63.0","Grpc.Tools":"2.64.0","JWT":"11.0.0","MaterialDesignColors":"3.1.1-ci850","MaterialDesignThemes":"5.1.1-ci850","MaxMind.Db":"4.1.0","MaxMind.GeoIP2":"5.2.0","MediatR":"12.3.0","Microsoft.AspNetCore.Authentication.JwtBearer":"8.0.2","Microsoft.AspNetCore.Mvc.Testing":"8.0.2","Microsoft.AspNetCore.OpenApi":"8.0.6","Microsoft.Data.Sqlite":"8.0.6","Microsoft.Diagnostics.NETCore.Client":"0.2.621003","Microsoft.EntityFrameworkCore.Design":"8.0.2","Microsoft.EntityFrameworkCore.Tools":"8.0.2","Microsoft.Extensions.Caching.StackExchangeRedis":"8.0.6","Microsoft.Extensions.Configuration":"9.0.4","Microsoft.Extensions.Configuration.Abstractions":"8.0.0","Microsoft.Extensions.Configuration.UserSecrets":"8.0.0","Microsoft.Extensions.DependencyInjection":"8.0.0","Microsoft.Extensions.DependencyInjection.Abstractions":"8.0.1","Microsoft.Extensions.Hosting":"8.0.0","Microsoft.Extensions.Hosting.Abstractions":"8.0.0","Microsoft.Extensions.Http":"8.0.0","Microsoft.Extensions.Logging":"8.0.0","Microsoft.Extensions.Logging.Abstractions":"9.0.4","Microsoft.Extensions.Options":"9.0.4","Microsoft.Extensions.Options.ConfigurationExtensions":"8.0.0","Microsoft.NET.Test.Sdk":"17.12.0","Microsoft.OpenApi":"1.6.22","Microsoft.Xaml.Behaviors.Wpf":"1.1.122","MongoDB.Analyzer":"1.5.0","MongoDB.Bson":"3.3.0","MongoDB.Driver":"3.3.0","MongoDB.Driver.Core":"2.30.0","Moq":"4.20.72","MSTest.TestAdapter":"3.8.3","MSTest.TestFramework":"3.8.3","MySqlConnector":"2.4.0","NeoSmart.AsyncLock":"3.2.1","Newtonsoft.Json":"13.0.3","Nito.AsyncEx":"5.1.2","NJsonSchema.CodeGeneration.CSharp":"10.9.0","NLog":"5.4.0","NLog.Extensions.Logging":"5.3.11","NLog.Web.AspNetCore":"5.3.11","NSubstituteAutoSubstitute":"1.1.0","OneOf":"3.0.271","OpenTelemetry.AutoInstrumentation":"1.11.0","OpenTelemetry.Exporter.Console":"1.12.0","OpenTelemetry.Exporter.OpenTelemetryProtocol":"1.12.0","OpenTelemetry.Extensions.Hosting":"1.12.0","OpenTelemetry.Instrumentation.AspNetCore":"1.12.0","OpenTelemetry.Instrumentation.Http":"1.12.0","OpenTelemetry.PersistentStorage.FileSystem":"1.0.1","Otp.NET":"1.4.0","p4api.net":"2023.1.248.4623","Polly":"8.5.1","Pomelo.EntityFrameworkCore.MySql":"8.0.2","RabbitMQ.Client":"6.8.1","RedLock.net":"2.3.2","Sentry.AspNetCore":"5.10.0","Sentry.Extensions.Logging":"5.10.0","Sentry.NLog":"5.10.0","SharpSvn":"1.14003.272","sqlite-net-pcl":"1.9.172","SSH.NET":"2025.0.0","StackExchange.Redis":"2.8.31","StackExchange.Redis.Extensions.Core":"11.0.0","StackExchange.Redis.Extensions.Newtonsoft":"11.0.0","StackExchange.Redis.MultiplexerPool":"2.2.0","Swashbuckle.AspNetCore":"7.2.0","Swashbuckle.AspNetCore.Annotations":"7.2.0","Swashbuckle.AspNetCore.Filters":"8.0.2","Swashbuckle.AspNetCore.SwaggerUI":"7.2.0","System.IdentityModel.Tokens.Jwt":"8.9.0","System.IO.Hashing":"9.0.1","Ulid":"1.3.4","xunit":"2.9.3","xunit.assert":"2.9.3","xunit.extensibility.core":"2.9.3","xunit.runner.visualstudio":"3.0.1","YamlDotNet":"16.3.0"},"imports":["net461","net462","net47","net471","net472","net48","net481"],"assetTargetFallback":true,"warn":true,"frameworkReferences":{"Microsoft.NETCore.App":{"privateAssets":"all"}},"runtimeIdentifierGraphPath":"C:\\Program Files\\dotnet\\sdk\\8.0.303/PortableRuntimeIdentifierGraph.json"}}
\ No newline at end of file
diff --git a/BrokerApiTest/obj/rider.project.model.nuget.info b/BrokerApiTest/obj/rider.project.model.nuget.info
index cc82d41..4f89c45 100644
--- a/BrokerApiTest/obj/rider.project.model.nuget.info
+++ b/BrokerApiTest/obj/rider.project.model.nuget.info
@@ -1 +1 @@
-17447875961287532
\ No newline at end of file
+17507459769450548
\ No newline at end of file
diff --git a/BrokerApiTest/obj/rider.project.restore.info b/BrokerApiTest/obj/rider.project.restore.info
index 43b5b0b..1d2e414 100644
--- a/BrokerApiTest/obj/rider.project.restore.info
+++ b/BrokerApiTest/obj/rider.project.restore.info
@@ -1 +1 @@
-17460517968346217
\ No newline at end of file
+17527175926882760
\ No newline at end of file
diff --git a/GameServer/0. Base/BaseGetSet.cs b/GameServer/0. Base/BaseGetSet.cs
index 91e0599..893aa21 100644
--- a/GameServer/0. Base/BaseGetSet.cs
+++ b/GameServer/0. Base/BaseGetSet.cs
@@ -1,4 +1,5 @@
-using Google.Protobuf;
+using GameServer.Contents.WorldEvent;
+using Google.Protobuf;
using Google.Protobuf.WellKnownTypes;
@@ -24,6 +25,9 @@ public partial class GameServerLogic : ServerLogicBase, IWithPacketNamespaceVeri
public SeasonPassManager getSeasonPassManager() => m_season_pass_manager;
public LandManager getLandManager() => m_land_manager;
public BuildingManager getBuildingManager() => m_building_manager;
+ public BannerManager getBannerManager() => m_banner_manager;
+ public RankingScheduleManager getRankingScheduleManager() => m_ranking_schedule_manager;
+ public RankingManager getRankingManager() => m_ranking_manager;
public ReservationManager getReservationManager()
{
@@ -41,6 +45,8 @@ public partial class GameServerLogic : ServerLogicBase, IWithPacketNamespaceVeri
{
return ServerBase.ServerMetricsHelper.getServerMetricsCacheRequest(this);
}
+
+ public WorldEventScheduleManager getWorldEventScheduleManager() => _worldEventScheduleManager;
}
@@ -52,4 +58,4 @@ public partial class GameLoginListener : ProudNetListener
NullReferenceCheckHelper.throwIfNull(game_server_logic, () => $"game_server_logic is null !!!");
return game_server_logic;
}
-}
\ No newline at end of file
+}
diff --git a/GameServer/Contents/AppearanceCustomize/AppearanceCustomizeCheat.cs b/GameServer/Contents/AppearanceCustomize/AppearanceCustomizeCheat.cs
index dc20652..f678924 100644
--- a/GameServer/Contents/AppearanceCustomize/AppearanceCustomizeCheat.cs
+++ b/GameServer/Contents/AppearanceCustomize/AppearanceCustomizeCheat.cs
@@ -186,4 +186,4 @@ public class BeaconCharacterCustomize : ChatCommandBase
return;
}
}
-}
\ No newline at end of file
+}
diff --git a/GameServer/Contents/BeaconShop/Action/BeaconShopAction.cs b/GameServer/Contents/BeaconShop/Action/BeaconShopAction.cs
index 548fac6..1933849 100644
--- a/GameServer/Contents/BeaconShop/Action/BeaconShopAction.cs
+++ b/GameServer/Contents/BeaconShop/Action/BeaconShopAction.cs
@@ -264,6 +264,7 @@ public class BeaconShopAction : EntityActionBase
OwnerNickName = player.getUserNickname(),
BeaconMyHomeGuid = beacon_attribute.LocatedInstanceGuid,
SellingFinishTime = selling_finish_time,
+ CreatedAt = DateTime.UtcNow,
};
// 6. BeaconShopSoldPriceDoc이 존재하는 지 체크하고, 없으면 생성 한다 !!!
@@ -648,7 +649,7 @@ public class BeaconShopAction : EntityActionBase
// 3. 비용 차감
var money_action = player.getEntityAction();
- result = await money_action.changeMoney(CurrencyType.Calium, -1 * beacon_shop_item_attribute.PriceForUnit * itemAmount);
+ result = await money_action.changeMoney(CurrencyType.Calium, -1 * beacon_shop_item_attribute.PriceForUnit * itemAmount, useCaliumEvent:false);
if (result.isFail())
{
err_msg = $"Not enough calium !!! : itemGuid:{itemGuid}, need Calium fee : {beacon_shop_item_attribute.PriceForUnit * itemAmount} - {player.toBasicString()}";
@@ -791,18 +792,27 @@ public class BeaconShopAction : EntityActionBase
private bool isRentalMyhome(UgcNpc ugcNpc)
{
- var player = getOwner() as Player;
- NullReferenceCheckHelper.throwIfNull(player, () => $"player is null !!!");
-
var beacon_attribute = ugcNpc.getEntityAttribute();
NullReferenceCheckHelper.throwIfNull(beacon_attribute, () => $"beacon_attribute is null !!!");
- var rental_agent_action = player.getEntityAction();
-
- if (beacon_attribute.State != EntityStateType.UsingByMyHome ||
- rental_agent_action.isRentalMyhome(beacon_attribute.LocatedInstanceGuid) == false)
- {
+ if (beacon_attribute.State != EntityStateType.UsingByMyHome)
return false;
+
+ var player = getOwner() as Player;
+ NullReferenceCheckHelper.throwIfNull(player, () => $"player is null !!!");
+
+ var myhome_agent_action = player.getEntityAction();
+ if (myhome_agent_action.tryGetMyHome(beacon_attribute.LocatedInstanceGuid, out _))
+ {
+ var rental_agent_action = player.getEntityAction();
+
+ if (rental_agent_action.isRentalMyhome(beacon_attribute.LocatedInstanceGuid) == false)
+ return false;
+ }
+ else
+ {
+ if (!MapManager.Instance.getRoomMapTree(beacon_attribute.LocatedInstanceGuid, out _))
+ return false;
}
return true;
@@ -811,24 +821,54 @@ public class BeaconShopAction : EntityActionBase
// 랜탈 기간이 안전한 시간 내 인지 확인
private bool isRentalSafeTime(UgcNpc ugcNpc)
{
- var player = getOwner() as Player;
- NullReferenceCheckHelper.throwIfNull(player, () => $"player is null !!!");
-
var beacon_attribute = ugcNpc.getEntityAttribute();
NullReferenceCheckHelper.throwIfNull(beacon_attribute, () => $"beacon_attribute is null !!!");
- var rental_agent_action = player.getEntityAction();
+ var player = getOwner() as Player;
+ NullReferenceCheckHelper.throwIfNull(player, () => $"player is null !!!");
- var rental_finish_time = rental_agent_action.getRentalMyhomeFinishTime(beacon_attribute.LocatedInstanceGuid);
- if (rental_finish_time.HasValue == false)
+ var myhome_agent_action = player.getEntityAction();
+ if (myhome_agent_action.tryGetMyHome(beacon_attribute.LocatedInstanceGuid, out _))
{
- return false;
+ var rental_agent_action = player.getEntityAction();
+
+ var rental_finish_time = rental_agent_action.getRentalMyhomeFinishTime(beacon_attribute.LocatedInstanceGuid);
+ if (rental_finish_time.HasValue == false)
+ {
+ return false;
+ }
+
+ var now = DateTime.UtcNow;
+ if (rental_finish_time.Value.AddSeconds(-5) < now)
+ {
+ return false;
+ }
}
-
- var now = DateTime.UtcNow;
- if (rental_finish_time.Value.AddSeconds(-5) < now)
+ else
{
- return false;
+ if (!MapManager.Instance.getRoomMapTree(beacon_attribute.LocatedInstanceGuid, out var room_map_tree))
+ return false;
+
+ var building_map_tree = room_map_tree.ParentBuildingMapTree;
+ if (!building_map_tree.tryGetFloorByMyhomeGuid(beacon_attribute.LocatedInstanceGuid, out var floor))
+ return false;
+
+ var server_logic = GameServerApp.getServerLogic();
+ var building_manager = server_logic.getBuildingManager();
+ if (!building_manager.tryGetBuilding(building_map_tree.BuildingMetaId, out var building))
+ return false;
+
+ var building_floor_agent_action = building.getEntityAction();
+ NullReferenceCheckHelper.throwIfNull(building_floor_agent_action, () => $"building_floor_agent_action is null !!!");
+
+ if (!building_floor_agent_action.tryGetBuildingFloor(floor, out var building_floor))
+ return false;
+
+ var building_floor_action = building_floor.getEntityAction();
+ NullReferenceCheckHelper.throwIfNull(building_floor_action, () => $"building_floor_action is null !!!");
+
+ if (building_floor_action.isRentalFinish(-5))
+ return false;
}
return true;
@@ -1076,7 +1116,7 @@ public class BeaconShopAction : EntityActionBase
// 1. 돈 지급
var money_action = player.getEntityAction();
- result = await money_action.changeMoney(CurrencyType.Calium, beacon_shop_sold_price_attribute.GivenPrice);
+ result = await money_action.changeMoney(CurrencyType.Calium, beacon_shop_sold_price_attribute.GivenPrice, useCaliumEvent:false);
if (result.isFail())
{
err_msg = $"Failed to changeMoney !!! : change price delta :{beacon_shop_sold_price_attribute.GivenPrice} - {player.toBasicString()}";
@@ -1152,7 +1192,7 @@ public class BeaconShopAction : EntityActionBase
return result;
}
- public async Task BeaconShopSearchItem(META_ID item_meta_id)
+ public async Task BeaconShopSearchItem(List item_meta_ids, int page, int itemPerPage, List sortInfos)
{
var result = new Result();
var err_msg = string.Empty;
@@ -1162,15 +1202,15 @@ public class BeaconShopAction : EntityActionBase
var server_logic = GameServerApp.getServerLogic();
NullReferenceCheckHelper.throwIfNull(server_logic, () => $"server_logic is null !!! - {player.toBasicString()}");
- (result, var beacon_shop_mongo_doc_list) = await m_beacon_shop_repository.get((int)item_meta_id);
+ (result, var beacon_shop_mongo_doc_list, var total_page) = await m_beacon_shop_repository.findIn(item_meta_ids, page, itemPerPage, sortInfos);
if(result.isFail() || beacon_shop_mongo_doc_list == null)
{
if (result.isSuccess())
result.setFail(ServerErrorCode.BeaconShopFailedGetBoardItem, err_msg);
- PacketHandler.BeaconShopSearchItemPacketHandler.send_S2C_ACK_BEACON_SHOP_SEARCH_ITEM(player, result, null);
+ PacketHandler.BeaconShopSearchItemPacketHandler.send_S2C_ACK_BEACON_SHOP_SEARCH_ITEM(player, result, null, 0, 0);
return result;
}
- PacketHandler.BeaconShopSearchItemPacketHandler.send_S2C_ACK_BEACON_SHOP_SEARCH_ITEM(player, result, beacon_shop_mongo_doc_list);
+ PacketHandler.BeaconShopSearchItemPacketHandler.send_S2C_ACK_BEACON_SHOP_SEARCH_ITEM(player, result, beacon_shop_mongo_doc_list, page, total_page);
return result;
}
@@ -1463,4 +1503,29 @@ public class BeaconShopAction : EntityActionBase
return result;
}
+
+ public async Task<(Result, List?)> getBeaconShopRecentItems(int limitCount)
+ {
+ var result = new Result();
+ var err_msg = string.Empty;
+
+ var server_logic = GameServerApp.getServerLogic();
+
+ var player = getOwner() as Player;
+ NullReferenceCheckHelper.throwIfNull(player, () => $"player is null !!!");
+
+ (result, var beacon_shop_mongo_docs) = await m_beacon_shop_repository.recent(limitCount);
+ if (result.isFail())
+ {
+ err_msg = $"Failed to BeaconShopRepository.recent() !!! : {result.toBasicString()} - {player.toBasicString()}";
+ Log.getLogger().error(err_msg);
+
+ return (result, null);
+ }
+ NullReferenceCheckHelper.throwIfNull(beacon_shop_mongo_docs, () => $"beacon_shop_mongo_docs is null !!!");
+
+ var beacon_shop_recent_items = beacon_shop_mongo_docs.Select(x => x.toBeaconShopItemMongoDataClient()).ToList();
+
+ return (result, beacon_shop_recent_items);
+ }
}
diff --git a/GameServer/Contents/BeaconShop/MongoDb/BeaconShopMongoDoc.cs b/GameServer/Contents/BeaconShop/MongoDb/BeaconShopMongoDoc.cs
index 740584d..d7c5f96 100644
--- a/GameServer/Contents/BeaconShop/MongoDb/BeaconShopMongoDoc.cs
+++ b/GameServer/Contents/BeaconShop/MongoDb/BeaconShopMongoDoc.cs
@@ -22,5 +22,7 @@ public class BeaconShopMongoDoc
public string BeaconMyHomeGuid { get; set; } = null!;
[BsonRequired]
public DateTime SellingFinishTime { get; set; } = new();
+ [BsonRequired]
+ public DateTime CreatedAt { get; set; } = new();
}
diff --git a/GameServer/Contents/BeaconShop/MongoDb/BeaconShopRepository.cs b/GameServer/Contents/BeaconShop/MongoDb/BeaconShopRepository.cs
index 6846901..86aa8f9 100644
--- a/GameServer/Contents/BeaconShop/MongoDb/BeaconShopRepository.cs
+++ b/GameServer/Contents/BeaconShop/MongoDb/BeaconShopRepository.cs
@@ -10,6 +10,7 @@ using BEACON_GUID = System.String;
using META_ID = System.UInt32;
using USER_GUID = System.String;
using ITEM_GUID = System.String;
+using ServerCommon;
namespace GameServer;
@@ -44,6 +45,72 @@ public class BeaconShopRepository : MongoDbRepository
}
}
+ public async Task<(Result, List?, int)> findIn(List tagIds, int page, int itemPerPage, List sortInfos)
+ {
+ var result = new Result();
+ var err_msg = string.Empty;
+
+ var filter_builder = Builders.Filter;
+ var filter = filter_builder.In(x => x.TagId, tagIds);
+
+ var sort_builder = Builders.Sort;
+
+ var sorts = sortInfos.Where(x =>
+ {
+ switch (x.SortColumnType)
+ {
+ case SortColumnType.Price:
+ case SortColumnType.ItemId:
+ return true;
+ default:
+ return false;
+ }
+ }).Select(x =>
+ {
+ SortDefinition sort;
+
+ var sort_column = string.Empty;
+ switch (x.SortColumnType)
+ {
+ case SortColumnType.Price:
+ sort_column = "PriceForUnit";
+ break;
+ case SortColumnType.ItemId:
+ sort_column = "TagId";
+ break;
+ }
+
+ if (x.SortType == SortType.Descending)
+ {
+ sort = sort_builder.Descending(sort_column);
+ }
+ else
+ {
+ sort = sort_builder.Ascending(sort_column);
+ }
+
+ return sort;
+ });
+
+ var sort = sort_builder.Combine(sorts);
+ var skip_count = (page - 1) * itemPerPage;
+
+ try
+ {
+ var total_count = (int)await m_collection.CountDocumentsAsync(filter);
+ var total_page = total_count / itemPerPage + (total_count % itemPerPage > 0 ? 1 : 0) + (total_count == 0 ? 1 : 0);
+
+ var findData = await m_collection.Find(filter).Sort(sort).Skip(skip_count).Limit(itemPerPage).ToListAsync();
+ return (result, findData.ToList(), total_page);
+ }
+ catch (Exception ex)
+ {
+ err_msg = $"MongoDB Write Exception Error: {ex.Message}";
+ result.setFail(ServerErrorCode.BeaconShopFailedGetBoardItem, err_msg);
+ return (result, null, 0);
+ }
+ }
+
public async Task insert(BeaconShopMongoDoc beaconShopEntity)
{
var result = new Result();
@@ -131,4 +198,25 @@ public class BeaconShopRepository : MongoDbRepository
return result;
}
+
+ public async Task<(Result, List?)> recent(int limitCount)
+ {
+ var result = new Result();
+ var err_msg = string.Empty;
+
+ var builder = Builders.Filter;
+ var filter = builder.Where(x => true);
+
+ try
+ {
+ var recentData = await m_collection.Find(filter).Sort(Builders.Sort.Descending("CreatedAt")).Limit(limitCount).ToListAsync();
+ return (result, recentData);
+ }
+ catch (Exception ex)
+ {
+ err_msg = $"MongoDB Write Exception Error: {ex.Message}";
+ result.setFail(ServerErrorCode.BeaconShopFailedRecentBoardItem, err_msg);
+ return (result, null);
+ }
+ }
}
diff --git a/GameServer/Contents/BeaconShop/PacketHandler/BeaconShopRecentRegisterItemsPacketHandler.cs b/GameServer/Contents/BeaconShop/PacketHandler/BeaconShopRecentRegisterItemsPacketHandler.cs
new file mode 100644
index 0000000..330ef7a
--- /dev/null
+++ b/GameServer/Contents/BeaconShop/PacketHandler/BeaconShopRecentRegisterItemsPacketHandler.cs
@@ -0,0 +1,71 @@
+using GameServer.PacketHandler;
+using ServerBase;
+using ServerCommon;
+using ServerCore;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using static ClientToGameRes.Types;
+using static ClientToLoginMessage.Types;
+
+namespace GameServer.PacketHandler
+{
+ [PacketHandler(typeof(ClientToGameReq), typeof(ClientToGameReq.Types.C2GS_REQ_BEACON_SHOP_RECENT_REGISTER_ITEMS), typeof(BeaconShopRecentRegisterItemsPacketHandler), typeof(GameLoginListener))]
+ internal class BeaconShopRecentRegisterItemsPacketHandler : PacketRecvHandler
+ {
+ public static bool send_S2C_ACK_BEACON_SHOP_RECENT_REGISTER_ITEMS(Player owner, Result result, GS2C_ACK_BEACON_SHOP_RECENT_REGISTER_ITEMS res)
+ {
+ var ack_packet = new ClientToGame();
+ ack_packet.Response = new ClientToGameRes();
+
+ ack_packet.Response.ErrorCode = result.ErrorCode;
+ ack_packet.Response.AckBeaconShopRecentRegisterItems = res;
+
+ if (false == GameServerApp.getServerLogic().onSendPacket(owner, ack_packet))
+ {
+ return false;
+ }
+
+ return true;
+ }
+
+ public override async Task onProcessPacket(ISession entityWithSession, Google.Protobuf.IMessage recvMessage)
+ {
+ var result = new Result();
+ var err_msg = string.Empty;
+
+ var server_logic = GameServerApp.getServerLogic();
+
+ var player = entityWithSession as Player;
+ NullReferenceCheckHelper.throwIfNull(player, () => $"player is null !!!");
+
+ var req_msg = recvMessage as ClientToGame;
+ NullReferenceCheckHelper.throwIfNull(req_msg, () => $"req_msg is null !!! - {player.toBasicString()}");
+
+ var request = req_msg.Request.ReqBeaconShopRecentRegisterItems;
+ var res = new GS2C_ACK_BEACON_SHOP_RECENT_REGISTER_ITEMS();
+
+ var limit_count = MetaHelper.GameConfigMeta.BeaconShopRecentItemCount;
+
+ var beacon_shop_action = player.getEntityAction();
+ (result, var beacon_shop_recent_items) = await beacon_shop_action.getBeaconShopRecentItems(limit_count);
+ if (result.isFail())
+ {
+ err_msg = $"Fail to getBeaconShopRecentItems() !!! : {result.toBasicString()} - {player.toBasicString()}";
+ Log.getLogger().error(err_msg);
+
+ send_S2C_ACK_BEACON_SHOP_RECENT_REGISTER_ITEMS(player, result, res);
+ return result;
+ }
+ NullReferenceCheckHelper.throwIfNull(beacon_shop_recent_items, () => $"beacon_shop_recent_items is null !!!");
+
+ res.RecentRegisterBeaconShopItemBoardInfos.AddRange(beacon_shop_recent_items);
+
+ send_S2C_ACK_BEACON_SHOP_RECENT_REGISTER_ITEMS(player, result, res);
+
+ return result;
+ }
+ }
+}
diff --git a/GameServer/Contents/BeaconShop/PacketHandler/BeaconShopSearchItemPacketHandler.cs b/GameServer/Contents/BeaconShop/PacketHandler/BeaconShopSearchItemPacketHandler.cs
index ba596fa..d31969d 100644
--- a/GameServer/Contents/BeaconShop/PacketHandler/BeaconShopSearchItemPacketHandler.cs
+++ b/GameServer/Contents/BeaconShop/PacketHandler/BeaconShopSearchItemPacketHandler.cs
@@ -19,7 +19,7 @@ namespace GameServer.PacketHandler;
[PacketHandler(typeof(ClientToGameReq), typeof(ClientToGameReq.Types.C2GS_REQ_BEACON_SHOP_SEARCH_ITEM), typeof(BeaconShopSearchItemPacketHandler), typeof(GameLoginListener))]
public class BeaconShopSearchItemPacketHandler : PacketRecvHandler
{
- public static bool send_S2C_ACK_BEACON_SHOP_SEARCH_ITEM(Player player, Result result, List? beaconShopMongoDocs)
+ public static bool send_S2C_ACK_BEACON_SHOP_SEARCH_ITEM(Player player, Result result, List? beaconShopMongoDocs, int currentPage, int totalPage)
{
var ack_packet = new ClientToGame();
ack_packet.Response = new ClientToGameRes();
@@ -30,6 +30,8 @@ public class BeaconShopSearchItemPacketHandler : PacketRecvHandler
if (result.isSuccess() && beaconShopMongoDocs != null)
{
ack_packet.Response.AckBeaconShopSearchItem.BeaconShopItemBoardInfos.AddRange(beaconShopMongoDocs.Select(x => x.toBeaconShopItemMongoDataClient()).ToList());
+ ack_packet.Response.AckBeaconShopSearchItem.CurrentPage = currentPage;
+ ack_packet.Response.AckBeaconShopSearchItem.TotalPage = totalPage;
}
if (false == GameServerApp.getServerLogic().onSendPacket(player, ack_packet))
@@ -55,7 +57,7 @@ public class BeaconShopSearchItemPacketHandler : PacketRecvHandler
result.setFail(ServerErrorCode.EntityActionNotFound, err_msg);
Log.getLogger().error(err_msg);
- send_S2C_ACK_BEACON_SHOP_SEARCH_ITEM(entity_player, result, null);
+ send_S2C_ACK_BEACON_SHOP_SEARCH_ITEM(entity_player, result, null, 0, 0);
return result;
}
@@ -66,26 +68,29 @@ public class BeaconShopSearchItemPacketHandler : PacketRecvHandler
result.setFail(ServerErrorCode.ClassTypeCastIsNull, err_msg);
Log.getLogger().error(result.toBasicString());
- send_S2C_ACK_BEACON_SHOP_SEARCH_ITEM(entity_player, result, null);
+ send_S2C_ACK_BEACON_SHOP_SEARCH_ITEM(entity_player, result, null, 0, 0);
return result;
}
var request = game_msg.Request.ReqBeaconShopSearchItem;
- if (request.ItemMetaid == 0)
+ if (request.ItemMetaids.Count == 0)
{
- err_msg = $"Invalid Request Argument !!! : ItemMetaid : {request.ItemMetaid}";
+ err_msg = $"Invalid Request Argument !!! : ItemMetaids empty";
result.setFail(ServerErrorCode.BeaconShopInvalidArgument, err_msg);
Log.getLogger().error(result.toBasicString());
- send_S2C_ACK_BEACON_SHOP_SEARCH_ITEM(entity_player, result, null);
+ send_S2C_ACK_BEACON_SHOP_SEARCH_ITEM(entity_player, result, null, 0, 0);
return result;
}
- result = await beacon_shop_action.BeaconShopSearchItem((META_ID)request.ItemMetaid);
+ var page = request.Page < 1 ? 1 : request.Page;
+ var limit_count = MetaHelper.GameConfigMeta.BeaconShopSearchCount;
+
+ result = await beacon_shop_action.BeaconShopSearchItem(request.ItemMetaids.ToList(), page, limit_count, request.SortInfo.toList());
if (result.isFail())
{
- send_S2C_ACK_BEACON_SHOP_SEARCH_ITEM(entity_player, result, null);
+ send_S2C_ACK_BEACON_SHOP_SEARCH_ITEM(entity_player, result, null, 0, 0);
return result;
}
@@ -100,6 +105,6 @@ public class BeaconShopSearchItemPacketHandler : PacketRecvHandler
var player = entityWithSession as Player;
NullReferenceCheckHelper.throwIfNull(player, () => $"player is null !!! - {entityWithSession.toBasicString()}");
- send_S2C_ACK_BEACON_SHOP_SEARCH_ITEM(player, errorResult, null);
+ send_S2C_ACK_BEACON_SHOP_SEARCH_ITEM(player, errorResult, null, 0, 0);
}
}
diff --git a/GameServer/Contents/Calium/Action/CaliumConverterAction.cs b/GameServer/Contents/Calium/Action/CaliumConverterAction.cs
index 0e98bca..4afabf4 100644
--- a/GameServer/Contents/Calium/Action/CaliumConverterAction.cs
+++ b/GameServer/Contents/Calium/Action/CaliumConverterAction.cs
@@ -68,7 +68,7 @@ public class CaliumConverterAction : EntityActionBase
var total_calium = calium_storage_action.getTotalCalium(CaliumStorageType.Converter);
if (total_calium < 0)
{
- err_msg = $"fail to convert calium!!! : loading calium - {checkConvertConditions}";
+ err_msg = $"fail to convert calium!!! : loading calium - {nameof(checkConvertConditions)}";
result.setFail(ServerErrorCode.FailToLoadCalium, err_msg);
Log.getLogger().error(err_msg);
return result;
diff --git a/GameServer/Contents/Claim/PacketHandler/ClaimRewardPacketHandler.cs b/GameServer/Contents/Claim/PacketHandler/ClaimRewardPacketHandler.cs
index 597f536..9605b92 100644
--- a/GameServer/Contents/Claim/PacketHandler/ClaimRewardPacketHandler.cs
+++ b/GameServer/Contents/Claim/PacketHandler/ClaimRewardPacketHandler.cs
@@ -1,4 +1,5 @@
-using Google.Protobuf;
+using GameServer.EventInvokers;
+using Google.Protobuf;
using Google.Protobuf.WellKnownTypes;
@@ -50,6 +51,8 @@ public class ClaimRewardPacketHandler : PacketRecvHandler
{
await QuestManager.It.QuestCheck(owner, new QuestReward(EQuestEventTargetType.REWARD, EQuestEventNameType.RECEIVED, reward.RewardGroupId));
}
+
+ await owner.getGameEventCollector().collectEvent(new GameEventInvokerClaimRewarded(owner));
return result;
}
diff --git a/GameServer/Contents/Craft/Action/CraftAction.cs b/GameServer/Contents/Craft/Action/CraftAction.cs
index 70f51e4..59941cd 100644
--- a/GameServer/Contents/Craft/Action/CraftAction.cs
+++ b/GameServer/Contents/Craft/Action/CraftAction.cs
@@ -1,6 +1,7 @@
using MetaAssets;
using ServerCommon;
-using ServerCore; using ServerBase;
+using ServerCore;
+using ServerBase;
using System.Collections.Concurrent;
using NeoSmart.AsyncLock;
using GameServer.PacketHandler;
@@ -10,912 +11,998 @@ using ANCHOR_GUID = System.String;
using LOCATION_UNIQUE_ID = System.String;
using System.Diagnostics.CodeAnalysis;
using System.Linq;
+using GameServer.EventInvokers;
namespace GameServer
{
- public class CraftAction : EntityActionBase
+public class CraftAction : EntityActionBase
+{
+ private ConcurrentDictionary m_Crafts = new();
+ private bool m_isUpdateCraft = false;
+
+ public CraftAction(Player owner)
+ : base(owner)
{
- private ConcurrentDictionary m_Crafts = new();
- private bool m_isUpdateCraft = false;
+ }
- public CraftAction(Player owner)
- : base(owner)
+ public override Task onInit()
+ {
+ var result = new Result();
+
+ return Task.FromResult(result);
+ }
+
+ public override void onClear()
+ {
+ m_Crafts.Clear();
+ }
+
+ public bool isCraftingHome()
+ {
+ if (m_Crafts.Count == 0)
{
+ return false;
}
- public override Task onInit()
- {
- var result = new Result();
+ return true;
+ }
- return Task.FromResult(result);
- }
+ public void setUpdateCraft(bool isUpdateCraft)
+ {
+ m_isUpdateCraft = isUpdateCraft;
+ }
- public override void onClear()
- {
- m_Crafts.Clear();
- }
+ public bool isAnchorCrafting(string anchorGuid)
+ {
+ return m_Crafts.ContainsKey(anchorGuid);
+ }
- public bool isCraftingHome()
+ public List getCraftInfoList()
+ {
+ return m_Crafts.Values.Select(x => x.toCraftData4Client()).ToList();
+ }
+
+ public bool getCraftInfo(string anchorGuid, [MaybeNullWhen(false)] out CraftInfo craftInfo)
+ {
+ craftInfo = default;
+
+ if (!m_Crafts.TryGetValue(anchorGuid, out var craft))
+ return false;
+
+ craftInfo = craft.toCraftData4Client();
+
+ return true;
+ }
+
+ public async Task AddCraftFromDocs(List craftDocs)
+ {
+ var result = new Result();
+ var err_msg = string.Empty;
+
+ m_Crafts.Clear();
+
+ var player = getOwner() as Player;
+ NullReferenceCheckHelper.throwIfNull(player, () => $"player is null !!!");
+
+
+ foreach (var craft_doc in craftDocs)
{
- if(m_Crafts.Count == 0)
+ (result, var craft) = await Craft.createCraftFromDoc(player, craft_doc);
+ if (craft is null)
{
- return false;
- }
- return true;
- }
-
- public void setUpdateCraft(bool isUpdateCraft)
- {
- m_isUpdateCraft = isUpdateCraft;
- }
-
- public bool isAnchorCrafting(string anchorGuid)
- {
- return m_Crafts.ContainsKey(anchorGuid);
- }
-
- public List getCraftInfoList()
- {
- return m_Crafts.Values.Select(x => x.toCraftData4Client()).ToList();
- }
-
- public bool getCraftInfo(string anchorGuid, [MaybeNullWhen(false)] out CraftInfo craftInfo )
- {
- craftInfo = default;
-
- if (!m_Crafts.TryGetValue(anchorGuid, out var craft))
- return false;
-
- craftInfo = craft.toCraftData4Client();
-
- return true;
- }
-
- public async Task AddCraftFromDocs(List craftDocs)
- {
- var result = new Result();
- var err_msg = string.Empty;
-
- m_Crafts.Clear();
-
- var player = getOwner() as Player;
- NullReferenceCheckHelper.throwIfNull(player, () => $"player is null !!!");
-
-
- foreach (var craft_doc in craftDocs)
- {
- (result, var craft) = await Craft.createCraftFromDoc(player, craft_doc);
- if(craft is null)
- {
- err_msg = $"Failed to create craft from doc";
- Log.getLogger().error(err_msg);
- continue;
- }
-
- var craft_attribute = craft.getEntityAttribute();
- if (craft_attribute is null)
- {
- err_msg = $"craft_attribute is null";
- Log.getLogger().error(err_msg);
- continue;
- }
- if (m_Crafts.TryAdd(craft_attribute.AnchorGuid, craft) == false)
- {
- err_msg = $"Failed to get craft attribute : {nameof(CraftAttribute)}";
- result.setFail(ServerErrorCode.EntityAttributeIsNull, err_msg);
- Log.getLogger().error(result.toBasicString());
- return result;
- }
+ err_msg = $"Failed to create craft from doc";
+ Log.getLogger().error(err_msg);
+ continue;
}
+ var craft_attribute = craft.getEntityAttribute();
+ if (craft_attribute is null)
+ {
+ err_msg = $"craft_attribute is null";
+ Log.getLogger().error(err_msg);
+ continue;
+ }
+
+ if (m_Crafts.TryAdd(craft_attribute.AnchorGuid, craft) == false)
+ {
+ err_msg = $"Failed to get craft attribute : {nameof(CraftAttribute)}";
+ result.setFail(ServerErrorCode.EntityAttributeIsNull, err_msg);
+ Log.getLogger().error(result.toBasicString());
+ return result;
+ }
+ }
+
+ return result;
+ }
+
+ public async Task ReloadCraft()
+ {
+ var result = new Result();
+ var player = getOwner() as Player;
+ NullReferenceCheckHelper.throwIfNull(player, () => $"player is null !!!");
+
+ var server_logic = GameServerApp.getServerLogic();
+
+ var craft_doc = new CraftDoc();
+ craft_doc.setCombinationKeyForPK(player.getUserGuid());
+ craft_doc.onApplyPKSK();
+ var query_config = server_logic.getDynamoDbClient().makeQueryConfigForReadByPKOnly(craft_doc.getPK());
+ (result, var craft_docs) = await server_logic.getDynamoDbClient()
+ .simpleQueryDocTypesWithQueryOperationConfig(query_config);
+ if (result.isFail())
+ {
return result;
}
- public async Task ReloadCraft()
+ result = await AddCraftFromDocs(craft_docs);
+ if (result.isFail())
{
- var result = new Result();
- var player = getOwner() as Player;
- NullReferenceCheckHelper.throwIfNull(player, () => $"player is null !!!");
-
- var server_logic = GameServerApp.getServerLogic();
-
- var craft_doc = new CraftDoc();
- craft_doc.setCombinationKeyForPK(player.getUserGuid());
- craft_doc.onApplyPKSK();
- var query_config = server_logic.getDynamoDbClient().makeQueryConfigForReadByPKOnly(craft_doc.getPK());
- (result, var craft_docs) = await server_logic.getDynamoDbClient().simpleQueryDocTypesWithQueryOperationConfig(query_config);
- if (result.isFail())
- {
- return result;
- }
-
- result = await AddCraftFromDocs(craft_docs);
- if (result.isFail())
- {
- return result;
- }
-
return result;
}
- public async Task StartCraftProcess(ANCHOR_GUID anchor_guid, META_ID craft_meta_id, UGCNPC_GUID beacon_guid, Pos beacon_pos, int craft_count)
+ return result;
+ }
+
+ public async Task StartCraftProcess(ANCHOR_GUID anchor_guid, META_ID craft_meta_id, UGCNPC_GUID beacon_guid,
+ Pos beacon_pos, int craft_count)
+ {
+ var result = new Result();
+ var err_msg = string.Empty;
+
+ if (m_isUpdateCraft == true)
{
- var result = new Result();
- var err_msg = string.Empty;
+ await ReloadCraft();
+ }
- if(m_isUpdateCraft == true)
+ var player = getOwner() as Player;
+ NullReferenceCheckHelper.throwIfNull(player, () => $"player is null !!!");
+
+ var server_logic = GameServerApp.getServerLogic();
+
+ var game_zone_action = player.getEntityAction();
+ NullReferenceCheckHelper.throwIfNull(game_zone_action, () => $"game_zone_action is null !!!");
+
+ var curr_map = game_zone_action.getLinkedToMap();
+ NullReferenceCheckHelper.throwIfNull(curr_map, () => $"curr_map is null !!!");
+
+ if (MetaData.Instance._CraftingMetaTable.TryGetValue((int)craft_meta_id, out var crafting_meta_data) == false)
+ {
+ err_msg =
+ $"Not found meta of crafting !!! : craft_meta_id : {craft_meta_id} - {getOwner().toBasicString()}";
+ result.setFail(ServerErrorCode.CraftingMetaDataNotFound, err_msg);
+ Log.getLogger().error(err_msg);
+ StartCraftPacketHandler.send_S2C_ACK_START_CRAFT(player, result);
+ return result;
+ }
+
+ if (!crafting_meta_data.Enable)
+ {
+ err_msg =
+ $"This craft is currently disabled. craft_meta_id: {craft_meta_id} - {getOwner().toBasicString()}";
+ result.setFail(ServerErrorCode.CraftingMetaDataDisabled, err_msg);
+ Log.getLogger().error(err_msg);
+ StartCraftPacketHandler.send_S2C_ACK_START_CRAFT(player, result);
+ return result;
+ }
+
+ result = checkStartCrafting(anchor_guid, crafting_meta_data, beacon_guid, craft_count);
+ if (result.isFail())
+ {
+ StartCraftPacketHandler.send_S2C_ACK_START_CRAFT(player, result);
+ return result;
+ }
+
+ var inventory_action = player.getEntityAction();
+ NullReferenceCheckHelper.throwIfNull(inventory_action, () => $"inventory_action is null !!!");
+
+ var player_action = player.getEntityAction();
+ NullReferenceCheckHelper.throwIfNull(player_action, () => $"player_action is null !!!");
+
+ var myhome_agent_action = player.getEntityAction();
+ NullReferenceCheckHelper.throwIfNull(myhome_agent_action, () => $"myhome_agent_action is null !!!");
+
+ DateTime now = DateTimeHelper.Current;
+ DateTime craft_finish_date = now.AddSeconds(crafting_meta_data.CraftingTime * craft_count);
+
+ string myhome_guid = string.Empty;
+
+ UgcNpc? ugc_npc = null;
+ if (beacon_guid != string.Empty)
+ {
+ ugc_npc = player_action.findUgcNpc(beacon_guid);
+ if (ugc_npc == null)
{
- await ReloadCraft();
- }
-
- var player = getOwner() as Player;
- NullReferenceCheckHelper.throwIfNull(player, () => $"player is null !!!");
-
- var server_logic = GameServerApp.getServerLogic();
-
- var game_zone_action = player.getEntityAction();
- NullReferenceCheckHelper.throwIfNull(game_zone_action, () => $"game_zone_action is null !!!");
-
- if (MetaData.Instance._CraftingMetaTable.TryGetValue((int)craft_meta_id, out var crafting_meta_data) == false)
- {
- err_msg = $"Not found meta of crafting !!! : craft_meta_id : {craft_meta_id} - {getOwner().toBasicString()}";
- result.setFail(ServerErrorCode.CraftingMetaDataNotFound, err_msg);
+ err_msg = $"UgcNpc Not Found UgcNpc Guid : {beacon_guid} - {getOwner().toBasicString()}";
+ result.setFail(ServerErrorCode.UgcNpcNotFound, err_msg);
Log.getLogger().error(err_msg);
StartCraftPacketHandler.send_S2C_ACK_START_CRAFT(player, result);
return result;
}
- result = checkStartCrafting(anchor_guid, crafting_meta_data, beacon_guid, craft_count);
- if (result.isFail())
+ craft_finish_date = craft_finish_date.AddSeconds(-1 * crafting_meta_data.Beacon_ReduceTime * craft_count);
+ myhome_guid = myhome_agent_action.getMyHomeGuidByAnchorGuid(anchor_guid);
+ if (myhome_guid.isNullOrWhiteSpace())
{
+ err_msg = $"Failed to get Myhome Guid. anchor_guid : {anchor_guid} - {getOwner().toBasicString()}";
+ result.setFail(ServerErrorCode.AnchorIsNotInMyhome, err_msg);
+ Log.getLogger().error(err_msg);
StartCraftPacketHandler.send_S2C_ACK_START_CRAFT(player, result);
return result;
}
+ }
- var inventory_action = player.getEntityAction();
- NullReferenceCheckHelper.throwIfNull(inventory_action, () => $"inventory_action is null !!!");
+ var fn_start_craft_profile = async delegate()
+ {
+ var result = new Result();
+ var err_msg = string.Empty;
- var player_action = player.getEntityAction();
- NullReferenceCheckHelper.throwIfNull(player_action, () => $"player_action is null !!!");
+ var invokers = new List();
- var myhome_agent_action = player.getEntityAction();
- NullReferenceCheckHelper.throwIfNull(myhome_agent_action, () => $"myhome_agent_action is null !!!");
+ DynamoDbDocBase? dynamoDbDocBase = null;
- DateTime now = DateTimeHelper.Current;
- DateTime craft_finish_date = now.AddSeconds(crafting_meta_data.CraftingTime * craft_count);
-
- string myhome_guid = string.Empty;
-
- UgcNpc? ugc_npc = null;
- if (beacon_guid != string.Empty)
+ if (ugc_npc != null)
{
- ugc_npc = player_action.findUgcNpc(beacon_guid);
- if (ugc_npc == null)
- {
- err_msg = $"UgcNpc Not Found UgcNpc Guid : {beacon_guid} - {getOwner().toBasicString()}";
- result.setFail(ServerErrorCode.UgcNpcNotFound, err_msg);
- Log.getLogger().error(err_msg);
- StartCraftPacketHandler.send_S2C_ACK_START_CRAFT(player, result);
- return result;
- }
-
- craft_finish_date = craft_finish_date.AddSeconds(-1 * crafting_meta_data.Beacon_ReduceTime * craft_count);
- myhome_guid = myhome_agent_action.getMyHomeGuidByAnchorGuid(anchor_guid);
- if(myhome_guid.isNullOrWhiteSpace())
- {
- err_msg = $"Failed to get Myhome Guid. anchor_guid : {anchor_guid} - {getOwner().toBasicString()}";
- result.setFail(ServerErrorCode.AnchorIsNotInMyhome, err_msg);
- Log.getLogger().error(err_msg);
- StartCraftPacketHandler.send_S2C_ACK_START_CRAFT(player, result);
- return result;
- }
- }
-
- var fn_start_craft_profile = async delegate ()
- {
- var result = new Result();
- var err_msg = string.Empty;
-
- var invokers = new List();
-
- DynamoDbDocBase? dynamoDbDocBase = null;
-
- if (ugc_npc != null)
- {
- EntityPos entityPos = beacon_pos == null ? new EntityPos() : new EntityPos() { X = beacon_pos.X, Y = beacon_pos.Y, Z = beacon_pos.Z, FacingAngle = beacon_pos.Angle };
- modifyNpcData(player, ugc_npc, anchor_guid, entityPos);
- dynamoDbDocBase = MakeNewNpcLocationDoc(ugc_npc, entityPos, anchor_guid, myhome_guid);
- }
-
- List- decrease_changed_items = new List
- ();
- foreach (var material in crafting_meta_data.Material)
- {
- (result, var found_delete_item) = await inventory_action.tryDeleteItemByMetaId((META_ID)material.ItemId, (ushort)(material.ItemValue * craft_count));
- if (result.isFail())
+ var entityPos = beacon_pos == null
+ ? new EntityPos()
+ : new EntityPos()
{
- StartCraftPacketHandler.send_S2C_ACK_START_CRAFT(player, result);
- return result;
- }
+ X = beacon_pos.X, Y = beacon_pos.Y, Z = beacon_pos.Z, FacingAngle = beacon_pos.Angle
+ };
+ var anchor_meta_id = getAnchorMetaId(player, anchor_guid);
- decrease_changed_items.AddRange(found_delete_item);
- }
+ var ugc_npc_action = ugc_npc.getEntityAction();
- (result, var craft) = await Craft.createCraft(player, anchor_guid, craft_meta_id, beacon_guid, now, craft_finish_date, craft_count);
+ ugc_npc_action.modifyStateInfo(EntityStateType.UsingByCrafting, entityPos, anchor_guid,
+ (META_ID)anchor_meta_id);
+ ugc_npc_action.setCountingAsConnectedUser(false);
+ result = await ugc_npc_action.tryLocateInGameZone(curr_map, myhome_guid);
if (result.isFail())
{
- StartCraftPacketHandler.send_S2C_ACK_START_CRAFT(player, result);
+ err_msg = $"Failed to tryLocateInGameZone() !!! : {result.toBasicString()}";
+ Log.getLogger().error(err_msg);
+
return result;
}
- NullReferenceCheckHelper.throwIfNull(craft, () => $"craft is null !!!");
- var craft_attribute = craft.getEntityAttribute();
- NullReferenceCheckHelper.throwIfNull(craft_attribute, () => $"craft_attribute is null !!!");
+ dynamoDbDocBase = MakeNewNpcLocationDoc(ugc_npc, entityPos, anchor_guid, myhome_guid);
+ }
- var task_log_data = CraftBusinessLogHelper.toCraftLogInfo(craft_attribute);
- invokers.Add(new CraftBusinessLog(task_log_data));
-
- var batch = new QueryBatchEx( player, LogActionType.CraftStart
- , server_logic.getDynamoDbClient() );
- {
- if(dynamoDbDocBase != null) batch.addQuery(new DBQEntityWrite(new List() { dynamoDbDocBase }));
- batch.addQuery(new DBQWriteToAttributeAllWithTransactionRunner());
- }
-
- batch.appendBusinessLogs(invokers);
-
- result = await QueryHelper.sendQueryAndBusinessLog(batch);
+ List
- decrease_changed_items = new List
- ();
+ foreach (var material in crafting_meta_data.Material)
+ {
+ (result, var found_delete_item) = await inventory_action.tryDeleteItemByMetaId((META_ID)material.ItemId,
+ (ushort)(material.ItemValue * craft_count));
if (result.isFail())
{
StartCraftPacketHandler.send_S2C_ACK_START_CRAFT(player, result);
return result;
}
- m_Crafts.TryAdd(anchor_guid, craft);
-
- if (ugc_npc != null)
- {
- var ugc_npc_action = ugc_npc.getEntityAction();
- ugc_npc_action.setCountingAsConnectedUser(false);
- var game_zone_action = player.getEntityAction();
-
- var map = game_zone_action.getLinkedToMap();
- NullReferenceCheckHelper.throwIfNull(map, () => $"map is null !!!");
-
- result = await ugc_npc_action.tryLocateInGameZone(map, myhome_guid);
- if(result.isSuccess())
- {
- UgcNpcNotifyHelper.send_GS2C_NTF_BEACON_COMPACT_UPDATE(player, ugc_npc, ugc_npc_action.toUgcNpcCompact());
- }
- }
-
- StartCraftPacketHandler.send_S2C_ACK_START_CRAFT(player, result, craft, decrease_changed_items, beacon_pos);
- game_zone_action.broadcast(player, CraftNotifyHelper.makeNotiCraftInfoPacket(m_Crafts.Select(x => x.Value.toCraftData4Client()).ToList(), player.getUserGuid()));
- return result;
- };
-
- result = await player.runTransactionRunnerSafely(TransactionIdType.PrivateContents, "StartCraft", fn_start_craft_profile);
- if (result.isFail())
- {
- err_msg = $"Failed to runTransactionRunnerSafely() !!! : {result.toBasicString()} - {player.toBasicString()}";
- Log.getLogger().error(err_msg);
+ decrease_changed_items.AddRange(found_delete_item);
}
+ (result, var craft) = await Craft.createCraft(player, anchor_guid, craft_meta_id, beacon_guid, now,
+ craft_finish_date, craft_count);
+ if (result.isFail())
+ {
+ StartCraftPacketHandler.send_S2C_ACK_START_CRAFT(player, result);
+ return result;
+ }
+
+ NullReferenceCheckHelper.throwIfNull(craft, () => $"craft is null !!!");
+
+ var craft_attribute = craft.getEntityAttribute();
+ NullReferenceCheckHelper.throwIfNull(craft_attribute, () => $"craft_attribute is null !!!");
+
+ var task_log_data = CraftBusinessLogHelper.toCraftLogInfo(craft_attribute);
+ invokers.Add(new CraftBusinessLog(task_log_data));
+
+ var batch = new QueryBatchEx(player, LogActionType.CraftStart
+ , server_logic.getDynamoDbClient());
+ {
+ if (dynamoDbDocBase != null)
+ batch.addQuery(new DBQEntityWrite(new List() { dynamoDbDocBase }));
+ batch.addQuery(new DBQWriteToAttributeAllWithTransactionRunner());
+ }
+
+ batch.appendBusinessLogs(invokers);
+
+ result = await QueryHelper.sendQueryAndBusinessLog(batch);
+ if (result.isFail())
+ {
+ StartCraftPacketHandler.send_S2C_ACK_START_CRAFT(player, result);
+ return result;
+ }
+
+ m_Crafts.TryAdd(anchor_guid, craft);
+
+ if (ugc_npc != null)
+ {
+ var ugc_npc_action = ugc_npc.getEntityAction();
+ UgcNpcNotifyHelper.send_GS2C_NTF_BEACON_COMPACT_UPDATE(player, ugc_npc,
+ ugc_npc_action.toUgcNpcCompact());
+ }
+
+ StartCraftPacketHandler.send_S2C_ACK_START_CRAFT(player, result, craft, decrease_changed_items, beacon_pos);
+ game_zone_action.broadcast(player,
+ CraftNotifyHelper.makeNotiCraftInfoPacket(m_Crafts.Select(x => x.Value.toCraftData4Client()).ToList(),
+ player.getUserGuid()));
+ return result;
+ };
+
+ result = await player.runTransactionRunnerSafely(TransactionIdType.PrivateContents, "StartCraft",
+ fn_start_craft_profile);
+ if (result.isFail())
+ {
+ err_msg =
+ $"Failed to runTransactionRunnerSafely() !!! : {result.toBasicString()} - {player.toBasicString()}";
+ Log.getLogger().error(err_msg);
+ }
+
+ return result;
+ }
+
+ private int getAnchorMetaId(Player player, string anchor_guid)
+ {
+ var game_zone_action = player.getEntityAction();
+ NullReferenceCheckHelper.throwIfNull(game_zone_action, () => $"game_zone_action is null !!!");
+
+ var crafting_anchor = game_zone_action.GetAnchor(anchor_guid);
+ if (crafting_anchor == null)
+ {
+ return 0;
+ }
+
+ return crafting_anchor.AnchorProp.TableId;
+ }
+
+ private Result checkStartCrafting(ANCHOR_GUID anchor_guid, CraftingMetaData crafting_meta_data,
+ UGCNPC_GUID beacon_guid, int craft_count)
+ {
+ var result = new Result();
+ var err_msg = string.Empty;
+
+ if (m_Crafts.TryGetValue(anchor_guid, out var craft) == true)
+ {
+ err_msg =
+ $"this Anchor is already Crafting now. anchor_guid : {anchor_guid} - {getOwner().toBasicString()}";
+ result.setFail(ServerErrorCode.CraftingAlreadyCrafting, err_msg);
+ Log.getLogger().error(err_msg);
return result;
}
- private void modifyNpcData(Player player, UgcNpc ugc_npc, string anchor_guid, EntityPos currPos)
+ if (beacon_guid != string.Empty)
{
- var anchor_meta_id = getAnchorMetaId(player, anchor_guid);
- var ugc_npc_action = ugc_npc.getEntityAction();
- NullReferenceCheckHelper.throwIfNull(ugc_npc_action, () => $"ugc_npc_action is null !!! - {player.toBasicString()}");
-
- ugc_npc_action.modifyStateInfo( EntityStateType.UsingByCrafting
- , currPos
- , anchor_guid, (META_ID)anchor_meta_id );
- }
-
- private int getAnchorMetaId(Player player, string anchor_guid)
- {
- var game_zone_action = player.getEntityAction();
- NullReferenceCheckHelper.throwIfNull(game_zone_action, () => $"game_zone_action is null !!!");
-
- var crafting_anchor = game_zone_action.GetAnchor(anchor_guid);
- if (crafting_anchor == null)
- {
- return 0;
- }
-
- return crafting_anchor.AnchorProp.TableId;
- }
-
- private Result checkStartCrafting(ANCHOR_GUID anchor_guid, CraftingMetaData crafting_meta_data, UGCNPC_GUID beacon_guid, int craft_count)
- {
- var result = new Result();
- var err_msg = string.Empty;
-
- if (m_Crafts.TryGetValue(anchor_guid, out var craft) == true)
- {
- err_msg = $"this Anchor is already Crafting now. anchor_guid : {anchor_guid} - {getOwner().toBasicString()}";
- result.setFail(ServerErrorCode.CraftingAlreadyCrafting, err_msg);
- Log.getLogger().error(err_msg);
- return result;
- }
-
- if (beacon_guid != string.Empty)
- {
- result = checkNpcState(beacon_guid);
- if (result.isFail()) { return result; }
- }
-
- result = checkAbility(crafting_meta_data,beacon_guid);
+ result = checkNpcState(beacon_guid);
if (result.isFail()) { return result; }
+ }
- result = checkAnchor(crafting_meta_data, anchor_guid);
- if(result.isFail()) { return result; }
+ result = checkAbility(crafting_meta_data, beacon_guid);
+ if (result.isFail()) { return result; }
- //레시피 확인
- if (crafting_meta_data.RecipeType == ERecipeType.Add)
- {
- result = checkRecipe((META_ID)crafting_meta_data.Id);
- if (result.isFail()) { return result; }
- }
+ result = checkAnchor(crafting_meta_data, anchor_guid);
+ if (result.isFail()) { return result; }
- if(crafting_meta_data.max_craft_limit < craft_count || craft_count < 1)
- {
- err_msg = $"craft limit is over. craft meta ID : {crafting_meta_data.Id} - max_craft_limit : {crafting_meta_data.max_craft_limit} - request craft_count : {craft_count} - {getOwner().toBasicString()}";
- result.setFail(ServerErrorCode.CraftInvalidRequestCount, err_msg);
- Log.getLogger().error(err_msg);
- return result;
- }
+ //레시피 확인
+ if (crafting_meta_data.RecipeType == ERecipeType.Add)
+ {
+ result = checkRecipe((META_ID)crafting_meta_data.Id);
+ if (result.isFail()) { return result; }
+ }
+ if (crafting_meta_data.max_craft_limit < craft_count || craft_count < 1)
+ {
+ err_msg =
+ $"craft limit is over. craft meta ID : {crafting_meta_data.Id} - max_craft_limit : {crafting_meta_data.max_craft_limit} - request craft_count : {craft_count} - {getOwner().toBasicString()}";
+ result.setFail(ServerErrorCode.CraftInvalidRequestCount, err_msg);
+ Log.getLogger().error(err_msg);
return result;
}
- private Result checkRecipe(META_ID craft_meta_id)
+ return result;
+ }
+
+ private Result checkRecipe(META_ID craft_meta_id)
+ {
+ var result = new Result();
+ var err_msg = string.Empty;
+
+ var player = getOwner() as Player;
+ NullReferenceCheckHelper.throwIfNull(player, () => $"player is null !!!");
+
+ var craft_recipe_action = player.getEntityAction();
+ if (craft_recipe_action.HasRecipe((META_ID)craft_meta_id) == false)
{
- var result = new Result();
- var err_msg = string.Empty;
-
- var player = getOwner() as Player;
- NullReferenceCheckHelper.throwIfNull(player, () => $"player is null !!!");
-
- var craft_recipe_action = player.getEntityAction();
- if (craft_recipe_action.HasRecipe((META_ID)craft_meta_id) == false)
- {
- err_msg = $"Recipe is not register. Craft_meta_id : {craft_meta_id} - {getOwner().toBasicString()}";
- result.setFail(ServerErrorCode.CraftingRecipeIsNotRegister, err_msg);
- Log.getLogger().error(err_msg);
- return result;
- }
-
+ err_msg = $"Recipe is not register. Craft_meta_id : {craft_meta_id} - {getOwner().toBasicString()}";
+ result.setFail(ServerErrorCode.CraftingRecipeIsNotRegister, err_msg);
+ Log.getLogger().error(err_msg);
return result;
}
- private Result checkNpcState(UGCNPC_GUID ugcNpc_guid)
+ return result;
+ }
+
+ private Result checkNpcState(UGCNPC_GUID ugcNpc_guid)
+ {
+ var result = new Result();
+ var err_msg = string.Empty;
+
+ var player = getOwner() as Player;
+ NullReferenceCheckHelper.throwIfNull(player, () => $"player is null !!!");
+
+ var player_action = player.getEntityAction();
+ var ugc_npc = player_action.findUgcNpc(ugcNpc_guid);
+ if (ugc_npc == null)
{
- var result = new Result();
- var err_msg = string.Empty;
+ err_msg = $"UgcNpc Not Found UgcNpc Guid : {ugcNpc_guid} - {getOwner().toBasicString()}";
+ result.setFail(ServerErrorCode.UgcNpcNotFound, err_msg);
+ Log.getLogger().error(err_msg);
+ return result;
+ }
- var player = getOwner() as Player;
- NullReferenceCheckHelper.throwIfNull(player, () => $"player is null !!!");
+ var ugc_ncp_attribute = ugc_npc.getEntityAttribute();
+ NullReferenceCheckHelper.throwIfNull(ugc_ncp_attribute, () => $"ugc_ncp_attribute is null !!!");
+ if (ugc_ncp_attribute.State != EntityStateType.None)
+ {
+ result.setFail(ServerErrorCode.NpcIsBusy, err_msg);
+ return result;
+ }
+ return result;
+ }
+
+ private Result checkAbility(CraftingMetaData crafting_meta_data, UGCNPC_GUID ugcNpc_guid)
+ {
+ var result = new Result();
+ var err_msg = string.Empty;
+
+ var player = getOwner() as Player;
+ NullReferenceCheckHelper.throwIfNull(player, () => $"player is null !!!");
+
+ var ability_action = player.getEntityAction();
+ if (ugcNpc_guid != string.Empty)
+ {
var player_action = player.getEntityAction();
var ugc_npc = player_action.findUgcNpc(ugcNpc_guid);
if (ugc_npc == null)
{
- err_msg = $"UgcNpc Not Found UgcNpc Guid : {ugcNpc_guid} - {getOwner().toBasicString()}";
+ err_msg = $"UgcNpc Not Found UgcNpc Guid : {ugcNpc_guid} - {player.toBasicString()}";
result.setFail(ServerErrorCode.UgcNpcNotFound, err_msg);
Log.getLogger().error(err_msg);
return result;
}
- var ugc_ncp_attribute = ugc_npc.getEntityAttribute();
- NullReferenceCheckHelper.throwIfNull(ugc_ncp_attribute, () => $"ugc_ncp_attribute is null !!!");
- if (ugc_ncp_attribute.State != EntityStateType.None)
+ ability_action = ugc_npc.getEntityAction();
+ }
+
+ foreach (var attribute in crafting_meta_data.Attribute)
+ {
+ if (false == EnumHelper.tryParse(attribute.AttributeName, out var attribute_type))
{
- result.setFail(ServerErrorCode.NpcIsBusy, err_msg);
+ err_msg = $"Invalid Ability Enum Type : {attribute_type} - {player.toBasicString()}";
+ result.setFail(ServerErrorCode.ServerTypeInvalid, err_msg);
+ Log.getLogger().error(err_msg);
return result;
}
+ var attribute_value = ability_action.getAbility(attribute_type);
+ if (attribute_value == null)
+ {
+ err_msg = $"Invalid Ability Enum Type : {attribute_type} - {player.toBasicString()}";
+ result.setFail(ServerErrorCode.ServerTypeInvalid, err_msg);
+ Log.getLogger().error(err_msg);
+ return result;
+ }
+
+ if (attribute_value < attribute.AttributeValue)
+ {
+ err_msg =
+ $"Not Enough Attribute for Craft. attribute name : {attribute_type}, need attribute : {attribute_value}, current attribute : {attribute.AttributeValue} - {player.toBasicString()}";
+ result.setFail(ServerErrorCode.NotEnoughAttribute, err_msg);
+ Log.getLogger().info(err_msg);
+ return result;
+ }
+ }
+
+ return result;
+ }
+
+ private Result checkAnchor(CraftingMetaData crafting_meta_data, ANCHOR_GUID anchor_guid)
+ {
+ var result = new Result();
+ var err_msg = string.Empty;
+
+ var player = getOwner() as Player;
+ NullReferenceCheckHelper.throwIfNull(player, () => $"player is null !!!");
+
+ var game_zone_action = player.getEntityAction();
+ NullReferenceCheckHelper.throwIfNull(game_zone_action, () => $"game_zone_action is null !!!");
+
+ var crafting_anchor = game_zone_action.GetAnchor(anchor_guid);
+ if (crafting_anchor == null)
+ {
+ err_msg = $"anchor is not placed !!! - {getOwner().toBasicString()}";
+ result.setFail(ServerErrorCode.CraftingAnchorIsNotPlaced, err_msg);
+ Log.getLogger().error(err_msg);
+ HelpCraftPacketHandler.send_S2C_ACK_HELP_CRAFT(player, result);
return result;
}
- private Result checkAbility(CraftingMetaData crafting_meta_data, UGCNPC_GUID ugcNpc_guid)
+ if (MetaData.Instance._ItemTable.TryGetValue(crafting_anchor.AnchorProp.TableId, out var item_meta_data) ==
+ false)
+ {
+ err_msg =
+ $"Not found meta of Item !!! : item_meta_id : {crafting_anchor.AnchorProp.TableId} - {getOwner().toBasicString()}";
+ result.setFail(ServerErrorCode.ItemMetaDataNotFound, err_msg);
+ Log.getLogger().error(err_msg);
+ return result;
+ }
+
+ if (item_meta_data.PropSmallType != crafting_meta_data.PropSmallType)
+ {
+ err_msg =
+ $"Group ID Not match with recipe. item PropSmallType : {item_meta_data.PropSmallType}, crafting PropSmallType : {crafting_meta_data.PropSmallType} - {getOwner().toBasicString()}";
+ result.setFail(ServerErrorCode.CraftingAnchorIsNotMatchWithRecipe, err_msg);
+ Log.getLogger().error(err_msg);
+ return result;
+ }
+
+ return result;
+ }
+
+
+ private NpcLocationInTargetDoc MakeNewNpcLocationDoc(UgcNpc ugcNpc, EntityPos currPos, string anchorMetaGuid,
+ string myhomeMetaGuid)
+ {
+ var player = getOwner() as Player;
+ NullReferenceCheckHelper.throwIfNull(player, () => $"player is null !!!");
+ ArgumentNullReferenceCheckHelper.throwIfNull(ugcNpc, () => $"ugcNpc is null !!! - {player.toBasicString()}");
+
+ var game_zone_action = player.getEntityAction();
+ NullReferenceCheckHelper.throwIfNull(game_zone_action,
+ () => $"game_zone_action is null !!! - {player.toBasicString()}");
+
+ var curr_map = game_zone_action.getLinkedToMap();
+ NullReferenceCheckHelper.throwIfNull(curr_map, () => $"curr_map is null !!! - {player.toBasicString()}");
+
+ var ugc_npc_action = ugcNpc.getEntityAction();
+ NullReferenceCheckHelper.throwIfNull(ugc_npc_action,
+ () => $"ugc_npc_action is null !!! - {player.toBasicString()}");
+
+ var ugc_npc_attribute = ugcNpc.getEntityAttribute();
+ NullReferenceCheckHelper.throwIfNull(ugc_npc_attribute,
+ () => $"ugc_npc_attribute is null !!! - {player.toBasicString()}");
+
+ var location_unique_id = curr_map.makeLOCATION_UNIQUE_IDByMetaId(myhomeMetaGuid);
+
+ var npcLocation = new NpcLocation() { AnchorMetaGuid = anchorMetaGuid, CurrentPos = currPos };
+
+ var doc = new NpcLocationInTargetDoc(location_unique_id, anchorMetaGuid
+ , EntityType.UgcNpc, ugc_npc_attribute.UgcNpcMetaGuid, npcLocation
+ , ugc_npc_attribute.OwnerEntityType, ugc_npc_attribute.OwnerGuid);
+
+ doc.setQueryType(QueryType.Insert);
+ return doc;
+ }
+
+ private NpcLocationInTargetDoc MakeDeleteNpcLocationDoc(string anchorMetaGuid, string myhomeMetaGuid)
+ {
+ var player = getOwner() as Player;
+ NullReferenceCheckHelper.throwIfNull(player, () => $"player is null !!!");
+
+ var game_zone_action = player.getEntityAction();
+ NullReferenceCheckHelper.throwIfNull(game_zone_action,
+ () => $"game_zone_action is null !!! - {player.toBasicString()}");
+
+ var curr_map = game_zone_action.getLinkedToMap();
+ NullReferenceCheckHelper.throwIfNull(curr_map, () => $"curr_map is null !!! - {player.toBasicString()}");
+
+
+ var location_unique_id = curr_map.makeLOCATION_UNIQUE_IDByMetaId(myhomeMetaGuid);
+
+ return new NpcLocationInTargetDoc(location_unique_id, anchorMetaGuid);
+ }
+
+ public async Task StopCraftProcess(ANCHOR_GUID anchor_guid)
+ {
+ var result = new Result();
+ var err_msg = string.Empty;
+
+ if (m_isUpdateCraft == true)
+ {
+ await ReloadCraft();
+ }
+
+ var player = getOwner() as Player;
+ NullReferenceCheckHelper.throwIfNull(player, () => $"player is null !!!");
+
+ var server_logic = GameServerApp.getServerLogic();
+ NullReferenceCheckHelper.throwIfNull(server_logic,
+ () => $"server_logic is null !!! - {player.toBasicString()}");
+
+ var game_zone_action = player.getEntityAction();
+ NullReferenceCheckHelper.throwIfNull(game_zone_action, () => $"game_zone_action is null !!!");
+
+ if (m_Crafts.TryGetValue(anchor_guid, out var craft) == false)
+ {
+ err_msg = $"this Anchor is not Crafting now. anchor_guid : {anchor_guid} - {getOwner().toBasicString()}";
+ result.setFail(ServerErrorCode.CraftingNotCraftingAnchor, err_msg);
+ Log.getLogger().error(err_msg);
+ StopCraftPacketHandler.send_S2C_ACK_STOP_CRAFT(player, result);
+ return result;
+ }
+
+ Int32 craft_meta_id = 0;
+
+ var fn_stop_craft_profile = async delegate()
{
var result = new Result();
var err_msg = string.Empty;
- var player = getOwner() as Player;
- NullReferenceCheckHelper.throwIfNull(player, () => $"player is null !!!");
+ var invokers = new List();
- var ability_action = player.getEntityAction();
- if (ugcNpc_guid != string.Empty)
+ DynamoDbDocBase? dynamoDbDocBase = null;
+
+ var craft_attribute = craft.getEntityAttribute();
+ NullReferenceCheckHelper.throwIfNull(craft_attribute, () => $"craft_attribute is null !!!");
+ craft_attribute.deleteEntityAttribute();
+
+ UgcNpc? ugc_npc = null;
+ if (craft_attribute.BeaconGuid != string.Empty)
{
var player_action = player.getEntityAction();
- var ugc_npc = player_action.findUgcNpc(ugcNpc_guid);
+ ugc_npc = player_action.findUgcNpc(craft_attribute.BeaconGuid);
if (ugc_npc == null)
{
- err_msg = $"UgcNpc Not Found UgcNpc Guid : {ugcNpc_guid} - {player.toBasicString()}";
+ err_msg =
+ $"UgcNpc Not Found UgcNpc Guid : {craft_attribute.BeaconGuid} - {getOwner().toBasicString()}";
result.setFail(ServerErrorCode.UgcNpcNotFound, err_msg);
Log.getLogger().error(err_msg);
+ StopCraftPacketHandler.send_S2C_ACK_STOP_CRAFT(player, result);
return result;
}
- ability_action = ugc_npc.getEntityAction();
- }
+ var ugc_npc_action = ugc_npc.getEntityAction();
+ NullReferenceCheckHelper.throwIfNull(ugc_npc_action,
+ () => $"ugc_npc_action is null - {player.toBasicString()}");
- foreach (var attribute in crafting_meta_data.Attribute)
- {
- if (false == EnumHelper.tryParse(attribute.AttributeName, out var attribute_type))
+ var myhome_agent_action = player.getEntityAction();
+ NullReferenceCheckHelper.throwIfNull(myhome_agent_action, () => $"myhome_agent_action is null !!!");
+
+ var myhome_guid = myhome_agent_action.getMyHomeGuidByAnchorGuid(anchor_guid);
+ if (myhome_guid.isNullOrWhiteSpace())
{
- err_msg = $"Invalid Ability Enum Type : {attribute_type} - {player.toBasicString()}";
- result.setFail(ServerErrorCode.ServerTypeInvalid, err_msg);
+ err_msg = $"Failed to get Myhome Guid. anchor_guid : {anchor_guid} - {getOwner().toBasicString()}";
+ result.setFail(ServerErrorCode.AnchorIsNotInMyhome, err_msg);
Log.getLogger().error(err_msg);
+ StopCraftPacketHandler.send_S2C_ACK_STOP_CRAFT(player, result);
return result;
}
- var attribute_value = ability_action.getAbility(attribute_type);
- if (attribute_value == null)
+ ugc_npc_action.modifyStateInfo(EntityStateType.None, new EntityPos());
+ result = await ugc_npc_action.tryRemoveInGameZone();
+ if (result.isFail())
{
- err_msg = $"Invalid Ability Enum Type : {attribute_type} - {player.toBasicString()}";
- result.setFail(ServerErrorCode.ServerTypeInvalid, err_msg);
+ err_msg = $"Failed to tryRemoveInGameZone() !!! : {result.toBasicString()}";
Log.getLogger().error(err_msg);
+
return result;
}
- if (attribute_value < attribute.AttributeValue)
- {
- err_msg = $"Not Enough Attribute for Craft. attribute name : {attribute_type}, need attribute : {attribute_value}, current attribute : {attribute.AttributeValue} - {player.toBasicString()}";
- result.setFail(ServerErrorCode.NotEnoughAttribute, err_msg);
- Log.getLogger().info(err_msg);
- return result;
- }
+ dynamoDbDocBase = MakeDeleteNpcLocationDoc(anchor_guid, myhome_guid);
}
- return result;
- }
+ var inventory_action = player.getEntityAction();
+ NullReferenceCheckHelper.throwIfNull(inventory_action, () => $"inventory_action is null !!!");
- private Result checkAnchor(CraftingMetaData crafting_meta_data, ANCHOR_GUID anchor_guid)
- {
- var result = new Result();
- var err_msg = string.Empty;
-
- var player = getOwner() as Player;
- NullReferenceCheckHelper.throwIfNull(player, () => $"player is null !!!");
-
- var game_zone_action = player.getEntityAction();
- NullReferenceCheckHelper.throwIfNull(game_zone_action, () => $"game_zone_action is null !!!");
-
- var crafting_anchor = game_zone_action.GetAnchor(anchor_guid);
- if (crafting_anchor == null)
+ if (MetaData.Instance._CraftingMetaTable.TryGetValue((int)craft_attribute.CraftMetaId,
+ out var crafting_meta_data) == false)
{
- err_msg = $"anchor is not placed !!! - {getOwner().toBasicString()}";
- result.setFail(ServerErrorCode.CraftingAnchorIsNotPlaced, err_msg);
- Log.getLogger().error(err_msg);
- HelpCraftPacketHandler.send_S2C_ACK_HELP_CRAFT(player, result);
- return result;
- }
-
- if (MetaData.Instance._ItemTable.TryGetValue(crafting_anchor.AnchorProp.TableId, out var item_meta_data) == false)
- {
- err_msg = $"Not found meta of Item !!! : item_meta_id : {crafting_anchor.AnchorProp.TableId} - {getOwner().toBasicString()}";
- result.setFail(ServerErrorCode.ItemMetaDataNotFound, err_msg);
- Log.getLogger().error(err_msg);
- return result;
- }
-
- if (item_meta_data.PropSmallType != crafting_meta_data.PropSmallType)
- {
- err_msg = $"Group ID Not match with recipe. item PropSmallType : {item_meta_data.PropSmallType}, crafting PropSmallType : {crafting_meta_data.PropSmallType} - {getOwner().toBasicString()}";
- result.setFail(ServerErrorCode.CraftingAnchorIsNotMatchWithRecipe, err_msg);
- Log.getLogger().error(err_msg);
- return result;
- }
-
- return result;
- }
-
-
- private NpcLocationInTargetDoc MakeNewNpcLocationDoc(UgcNpc ugcNpc, EntityPos currPos, string anchorMetaGuid, string myhomeMetaGuid)
- {
- var player = getOwner() as Player;
- NullReferenceCheckHelper.throwIfNull(player, () => $"player is null !!!");
- ArgumentNullReferenceCheckHelper.throwIfNull(ugcNpc, () => $"ugcNpc is null !!! - {player.toBasicString()}");
-
- var game_zone_action = player.getEntityAction();
- NullReferenceCheckHelper.throwIfNull(game_zone_action, () => $"game_zone_action is null !!! - {player.toBasicString()}");
-
- var curr_map = game_zone_action.getLinkedToMap();
- NullReferenceCheckHelper.throwIfNull(curr_map, () => $"curr_map is null !!! - {player.toBasicString()}");
-
- var ugc_npc_action = ugcNpc.getEntityAction();
- NullReferenceCheckHelper.throwIfNull(ugc_npc_action, () => $"ugc_npc_action is null !!! - {player.toBasicString()}");
-
- var ugc_npc_attribute = ugcNpc.getEntityAttribute();
- NullReferenceCheckHelper.throwIfNull(ugc_npc_attribute, () => $"ugc_npc_attribute is null !!! - {player.toBasicString()}");
-
- var location_unique_id = curr_map.makeLOCATION_UNIQUE_IDByMetaId(myhomeMetaGuid);
-
- var npcLocation = new NpcLocation() { AnchorMetaGuid = anchorMetaGuid, CurrentPos = currPos };
-
- var doc = new NpcLocationInTargetDoc(location_unique_id, anchorMetaGuid
- , EntityType.UgcNpc, ugc_npc_attribute.UgcNpcMetaGuid, npcLocation
- , ugc_npc_attribute.OwnerEntityType, ugc_npc_attribute.OwnerGuid);
-
- doc.setQueryType(QueryType.Insert);
- return doc;
- }
-
- private NpcLocationInTargetDoc MakeDeleteNpcLocationDoc(string anchorMetaGuid, string myhomeMetaGuid)
- {
- var player = getOwner() as Player;
- NullReferenceCheckHelper.throwIfNull(player, () => $"player is null !!!");
-
- var game_zone_action = player.getEntityAction();
- NullReferenceCheckHelper.throwIfNull(game_zone_action, () => $"game_zone_action is null !!! - {player.toBasicString()}");
-
- var curr_map = game_zone_action.getLinkedToMap();
- NullReferenceCheckHelper.throwIfNull(curr_map, () => $"curr_map is null !!! - {player.toBasicString()}");
-
-
- var location_unique_id = curr_map.makeLOCATION_UNIQUE_IDByMetaId(myhomeMetaGuid);
-
- return new NpcLocationInTargetDoc(location_unique_id, anchorMetaGuid);
- }
- public async Task StopCraftProcess(ANCHOR_GUID anchor_guid)
- {
- var result = new Result();
- var err_msg = string.Empty;
-
- if (m_isUpdateCraft == true)
- {
- await ReloadCraft();
- }
-
- var player = getOwner() as Player;
- NullReferenceCheckHelper.throwIfNull(player, () => $"player is null !!!");
-
- var server_logic = GameServerApp.getServerLogic();
- NullReferenceCheckHelper.throwIfNull(server_logic, () => $"server_logic is null !!! - {player.toBasicString()}");
-
- var game_zone_action = player.getEntityAction();
- NullReferenceCheckHelper.throwIfNull(game_zone_action, () => $"game_zone_action is null !!!");
-
- if (m_Crafts.TryGetValue(anchor_guid, out var craft) == false)
- {
- err_msg = $"this Anchor is not Crafting now. anchor_guid : {anchor_guid} - {getOwner().toBasicString()}";
- result.setFail(ServerErrorCode.CraftingNotCraftingAnchor, err_msg);
+ err_msg =
+ $"Not found meta of Item !!! : CraftingMetaId:{craft_attribute.CraftMetaId} - {getOwner().toBasicString()}";
+ result.setFail(ServerErrorCode.CraftingMetaDataNotFound, err_msg);
Log.getLogger().error(err_msg);
StopCraftPacketHandler.send_S2C_ACK_STOP_CRAFT(player, result);
return result;
}
- Int32 craft_meta_id = 0;
-
- var fn_stop_craft_profile = async delegate ()
+ List
- Increase_changed_items = new List
- ();
+ foreach (var material in crafting_meta_data.Material)
{
- var result = new Result();
- var err_msg = string.Empty;
-
- var invokers = new List();
-
- DynamoDbDocBase? dynamoDbDocBase = null;
-
- var craft_attribute = craft.getEntityAttribute();
- NullReferenceCheckHelper.throwIfNull(craft_attribute, () => $"craft_attribute is null !!!");
- craft_attribute.deleteEntityAttribute();
-
- UgcNpc? ugc_npc = null;
- if (craft_attribute.BeaconGuid != string.Empty)
- {
- var player_action = player.getEntityAction();
- ugc_npc = player_action.findUgcNpc(craft_attribute.BeaconGuid);
- if (ugc_npc == null)
- {
- err_msg = $"UgcNpc Not Found UgcNpc Guid : {craft_attribute.BeaconGuid} - {getOwner().toBasicString()}";
- result.setFail(ServerErrorCode.UgcNpcNotFound, err_msg);
- Log.getLogger().error(err_msg);
- StopCraftPacketHandler.send_S2C_ACK_STOP_CRAFT(player, result);
- return result;
- }
-
- var ugc_npc_action = ugc_npc.getEntityAction();
- NullReferenceCheckHelper.throwIfNull(ugc_npc_action, () => $"ugc_npc_action is null - {player.toBasicString()}");
-
- var myhome_agent_action = player.getEntityAction();
- NullReferenceCheckHelper.throwIfNull(myhome_agent_action, () => $"myhome_agent_action is null !!!");
-
- var myhome_guid = myhome_agent_action.getMyHomeGuidByAnchorGuid(anchor_guid);
- if (myhome_guid.isNullOrWhiteSpace())
- {
- err_msg = $"Failed to get Myhome Guid. anchor_guid : {anchor_guid} - {getOwner().toBasicString()}";
- result.setFail(ServerErrorCode.AnchorIsNotInMyhome, err_msg);
- Log.getLogger().error(err_msg);
- StopCraftPacketHandler.send_S2C_ACK_STOP_CRAFT(player, result);
- return result;
- }
-
- ugc_npc_action.modifyStateInfo(EntityStateType.None, new EntityPos(), "");
- dynamoDbDocBase = MakeDeleteNpcLocationDoc(anchor_guid, myhome_guid);
- }
-
- var inventory_action = player.getEntityAction();
- NullReferenceCheckHelper.throwIfNull(inventory_action, () => $"inventory_action is null !!!");
-
- if (MetaData.Instance._CraftingMetaTable.TryGetValue((int)craft_attribute.CraftMetaId, out var crafting_meta_data) == false)
- {
- err_msg = $"Not found meta of Item !!! : CraftingMetaId:{craft_attribute.CraftMetaId} - {getOwner().toBasicString()}";
- result.setFail(ServerErrorCode.CraftingMetaDataNotFound, err_msg);
- Log.getLogger().error(err_msg);
- StopCraftPacketHandler.send_S2C_ACK_STOP_CRAFT(player, result);
- return result;
- }
-
- List
- Increase_changed_items = new List
- ();
- foreach(var material in crafting_meta_data.Material)
- {
- (result, var crafting_items) = await inventory_action.tryTakalbleToBag((META_ID)material.ItemId, (ushort)(material.ItemValue * craft_attribute.CraftCount));
- if (result.isFail())
- {
- StopCraftPacketHandler.send_S2C_ACK_STOP_CRAFT(player, result);
- return result;
- }
-
- Increase_changed_items.AddRange(crafting_items);
- }
-
- var task_log_data = CraftBusinessLogHelper.toCraftLogInfo(craft_attribute);
- invokers.Add(new CraftBusinessLog(task_log_data));
-
- var batch = new QueryBatchEx( player, LogActionType.CraftStop
- , server_logic.getDynamoDbClient() );
- {
- if(dynamoDbDocBase != null) batch.addQuery(new DBQEntityDelete(dynamoDbDocBase));
- batch.addQuery(new DBQWriteToAttributeAllWithTransactionRunner());
- }
-
- batch.appendBusinessLogs(invokers);
-
- result = await QueryHelper.sendQueryAndBusinessLog(batch);
+ (result, var crafting_items) = await inventory_action.tryTakalbleToBag((META_ID)material.ItemId,
+ (ushort)(material.ItemValue * craft_attribute.CraftCount));
if (result.isFail())
{
StopCraftPacketHandler.send_S2C_ACK_STOP_CRAFT(player, result);
return result;
}
- m_Crafts.TryRemove(anchor_guid, out craft);
-
- if (ugc_npc != null)
- {
- var ugc_npc_action = ugc_npc.getEntityAction();
- var game_zone_action = player.getEntityAction();
- result = await ugc_npc_action.tryRemoveInGameZone();
- if(result.isSuccess())
- {
- UgcNpcNotifyHelper.send_GS2C_NTF_BEACON_COMPACT_UPDATE(player, ugc_npc, ugc_npc_action.toUgcNpcCompact());
- }
- }
-
- StopCraftPacketHandler.send_S2C_ACK_STOP_CRAFT(player, result, anchor_guid, craft_attribute.BeaconGuid, Increase_changed_items);
- game_zone_action.broadcast(player, CraftNotifyHelper.makeNotiCraftInfoPacket(m_Crafts.Select(x => x.Value.toCraftData4Client()).ToList(), player.getUserGuid()));
-
- craft_meta_id = (Int32)craft_attribute.CraftMetaId;
-
- return result;
- };
-
- result = await player.runTransactionRunnerSafely(TransactionIdType.PrivateContents, "StopCraft", fn_stop_craft_profile);
- if (result.isFail())
- {
- err_msg = $"Failed to runTransaction() !!! : {result.toBasicString()} - {player.toBasicString()}";
- Log.getLogger().error(err_msg);
- }
-
- if (craft_meta_id > 0)
- {
- await QuestManager.It.QuestCheck(player, new QuestCrafting(EQuestEventTargetType.CRAFTING, EQuestEventNameType.STOPPED, craft_meta_id));
- }
-
- return result;
- }
-
- public async Task FinishCraftProcess(ANCHOR_GUID anchor_guid)
- {
- var result = new Result();
- var err_msg = string.Empty;
-
- if (m_isUpdateCraft == true)
- {
- await ReloadCraft();
- }
-
- var player = getOwner() as Player;
- NullReferenceCheckHelper.throwIfNull(player, () => $"player is null !!!");
- var server_logic = GameServerApp.getServerLogic();
-
- var game_zone_action = player.getEntityAction();
- NullReferenceCheckHelper.throwIfNull(game_zone_action, () => $"game_zone_action is null !!!");
-
- if (m_Crafts.TryGetValue(anchor_guid, out var craft) == false)
- {
- err_msg = $"this Anchor is not Crafting now. anchor_guid : {anchor_guid} - {getOwner().toBasicString()}";
- result.setFail(ServerErrorCode.CraftingNotCraftingAnchor, err_msg);
- Log.getLogger().error(err_msg);
- return result;
- }
-
- var craft_attribute = craft.getOriginEntityAttribute();
- NullReferenceCheckHelper.throwIfNull(craft_attribute, () => $"craft_attribute is null !!!");
-
- DateTime now = DateTimeHelper.Current;
- if (craft_attribute.CraftFinishTime > now)
- {
- err_msg = $"Crafting Not Finish Time : now : {now} - craftFinishTime : {craft_attribute.CraftFinishTime} - {getOwner().toBasicString()}";
- result.setFail(ServerErrorCode.CraftingNotFinish, err_msg);
- Log.getLogger().error(err_msg);
- return result;
- }
-
- if (MetaData.Instance._CraftingMetaTable.TryGetValue((int)craft_attribute.CraftMetaId, out var crafting_meta_data) == false)
- {
- err_msg = $"Not found meta of Item !!! : CraftingMetaId:{craft_attribute.CraftMetaId} - {getOwner().toBasicString()}";
- result.setFail(ServerErrorCode.CraftingMetaDataNotFound, err_msg);
- Log.getLogger().error(err_msg);
- return result;
- }
-
- var fn_finish_craft_profile = async delegate ()
- {
- var result = new Result();
- var err_msg = string.Empty;
-
- var invokers = new List();
- DynamoDbDocBase? dynamoDbDocBase = null;
-
- var inventory_action = player.getEntityAction();
- NullReferenceCheckHelper.throwIfNull(inventory_action, () => $"inventory_action is null !!!");
-
- var craft_attribute = craft.getEntityAttribute();
- NullReferenceCheckHelper.throwIfNull(craft_attribute, () => $"craft_attribute is null !!!");
- craft_attribute.deleteEntityAttribute();
-
- List
- Increase_changed_items = new List
- ();
- (result, var crafting_items) = await inventory_action.tryTakalbleToBag((META_ID)crafting_meta_data.Crafting_ItemId, (ushort)(crafting_meta_data.Crafting_ItemValue * craft_attribute.CraftCount));
- if (result.isFail())
- {
- FinishCraftPacketHandler.send_S2C_ACK_FINISH_CRAFT(player, result);
- return result;
- }
-
Increase_changed_items.AddRange(crafting_items);
+ }
- UgcNpc? ugc_npc = null;
- if (craft_attribute.BeaconGuid != string.Empty)
+ var task_log_data = CraftBusinessLogHelper.toCraftLogInfo(craft_attribute);
+ invokers.Add(new CraftBusinessLog(task_log_data));
+
+ var batch = new QueryBatchEx(player, LogActionType.CraftStop
+ , server_logic.getDynamoDbClient());
+ {
+ if (dynamoDbDocBase != null) batch.addQuery(new DBQEntityDelete(dynamoDbDocBase));
+ batch.addQuery(new DBQWriteToAttributeAllWithTransactionRunner());
+ }
+
+ batch.appendBusinessLogs(invokers);
+
+ result = await QueryHelper.sendQueryAndBusinessLog(batch);
+ if (result.isFail())
+ {
+ StopCraftPacketHandler.send_S2C_ACK_STOP_CRAFT(player, result);
+ return result;
+ }
+
+ m_Crafts.TryRemove(anchor_guid, out craft);
+
+ if (ugc_npc != null)
+ {
+ var ugc_npc_action = ugc_npc.getEntityAction();
+ UgcNpcNotifyHelper.send_GS2C_NTF_BEACON_COMPACT_UPDATE(player, ugc_npc,
+ ugc_npc_action.toUgcNpcCompact());
+ }
+
+ StopCraftPacketHandler.send_S2C_ACK_STOP_CRAFT(player, result, anchor_guid, craft_attribute.BeaconGuid,
+ Increase_changed_items);
+ game_zone_action.broadcast(player,
+ CraftNotifyHelper.makeNotiCraftInfoPacket(m_Crafts.Select(x => x.Value.toCraftData4Client()).ToList(),
+ player.getUserGuid()));
+
+ craft_meta_id = (Int32)craft_attribute.CraftMetaId;
+
+ return result;
+ };
+
+ result = await player.runTransactionRunnerSafely(TransactionIdType.PrivateContents, "StopCraft",
+ fn_stop_craft_profile);
+ if (result.isFail())
+ {
+ err_msg = $"Failed to runTransaction() !!! : {result.toBasicString()} - {player.toBasicString()}";
+ Log.getLogger().error(err_msg);
+ }
+
+ if (craft_meta_id > 0)
+ {
+ await QuestManager.It.QuestCheck(player,
+ new QuestCrafting(EQuestEventTargetType.CRAFTING, EQuestEventNameType.STOPPED, craft_meta_id));
+ }
+
+ return result;
+ }
+
+ public async Task FinishCraftProcess(ANCHOR_GUID anchor_guid)
+ {
+ var result = new Result();
+ var err_msg = string.Empty;
+
+ if (m_isUpdateCraft == true)
+ {
+ await ReloadCraft();
+ }
+
+ var player = getOwner() as Player;
+ NullReferenceCheckHelper.throwIfNull(player, () => $"player is null !!!");
+ var server_logic = GameServerApp.getServerLogic();
+
+ var game_zone_action = player.getEntityAction();
+ NullReferenceCheckHelper.throwIfNull(game_zone_action, () => $"game_zone_action is null !!!");
+
+ if (m_Crafts.TryGetValue(anchor_guid, out var craft) == false)
+ {
+ err_msg = $"this Anchor is not Crafting now. anchor_guid : {anchor_guid} - {getOwner().toBasicString()}";
+ result.setFail(ServerErrorCode.CraftingNotCraftingAnchor, err_msg);
+ Log.getLogger().error(err_msg);
+ return result;
+ }
+
+ var craft_attribute = craft.getOriginEntityAttribute();
+ NullReferenceCheckHelper.throwIfNull(craft_attribute, () => $"craft_attribute is null !!!");
+
+ DateTime now = DateTimeHelper.Current;
+ if (craft_attribute.CraftFinishTime > now)
+ {
+ err_msg =
+ $"Crafting Not Finish Time : now : {now} - craftFinishTime : {craft_attribute.CraftFinishTime} - {getOwner().toBasicString()}";
+ result.setFail(ServerErrorCode.CraftingNotFinish, err_msg);
+ Log.getLogger().error(err_msg);
+ return result;
+ }
+
+ if (MetaData.Instance._CraftingMetaTable.TryGetValue((int)craft_attribute.CraftMetaId,
+ out var crafting_meta_data) == false)
+ {
+ err_msg =
+ $"Not found meta of Item !!! : CraftingMetaId:{craft_attribute.CraftMetaId} - {getOwner().toBasicString()}";
+ result.setFail(ServerErrorCode.CraftingMetaDataNotFound, err_msg);
+ Log.getLogger().error(err_msg);
+ return result;
+ }
+
+ ushort to_add_count = 0;
+ var fn_finish_craft_profile = async delegate()
+ {
+ var result = new Result();
+ var err_msg = string.Empty;
+
+ var invokers = new List();
+ DynamoDbDocBase? dynamoDbDocBase = null;
+
+ var inventory_action = player.getEntityAction();
+ NullReferenceCheckHelper.throwIfNull(inventory_action, () => $"inventory_action is null !!!");
+
+ var craft_attribute = craft.getEntityAttribute();
+ NullReferenceCheckHelper.throwIfNull(craft_attribute, () => $"craft_attribute is null !!!");
+ craft_attribute.deleteEntityAttribute();
+
+ List
- Increase_changed_items = new List
- ();
+ to_add_count = (ushort)(crafting_meta_data.Crafting_ItemValue * craft_attribute.CraftCount);
+ (result, var crafting_items) =
+ await inventory_action.tryTakalbleToBag((META_ID)crafting_meta_data.Crafting_ItemId, to_add_count);
+ if (result.isFail())
+ {
+ FinishCraftPacketHandler.send_S2C_ACK_FINISH_CRAFT(player, result);
+ return result;
+ }
+
+ Increase_changed_items.AddRange(crafting_items);
+
+ UgcNpc? ugc_npc = null;
+ if (craft_attribute.BeaconGuid != string.Empty)
+ {
+ var player_action = player.getEntityAction();
+ ugc_npc = player_action.findUgcNpc(craft_attribute.BeaconGuid);
+ if (ugc_npc == null)
{
- var player_action = player.getEntityAction();
- ugc_npc = player_action.findUgcNpc(craft_attribute.BeaconGuid);
- if (ugc_npc == null)
- {
- err_msg = $"UgcNpc Not Found UgcNpc Guid : {craft_attribute.BeaconGuid} - {getOwner().toBasicString()}";
- result.setFail(ServerErrorCode.UgcNpcNotFound, err_msg);
- Log.getLogger().error(err_msg);
- FinishCraftPacketHandler.send_S2C_ACK_FINISH_CRAFT(player, result);
- return result;
- }
-
- var myhome_agent_action = player.getEntityAction();
- NullReferenceCheckHelper.throwIfNull(myhome_agent_action, () => $"myhome_agent_action is null !!!");
-
- var myhome_guid = myhome_agent_action.getMyHomeGuidByAnchorGuid(anchor_guid);
- if (myhome_guid.isNullOrWhiteSpace())
- {
- err_msg = $"Failed to get Myhome Guid. anchor_guid : {anchor_guid} - {getOwner().toBasicString()}";
- result.setFail(ServerErrorCode.AnchorIsNotInMyhome, err_msg);
- Log.getLogger().error(err_msg);
- FinishCraftPacketHandler.send_S2C_ACK_FINISH_CRAFT(player, result);
- return result;
- }
- var ugc_npc_action = ugc_npc.getEntityAction();
- NullReferenceCheckHelper.throwIfNull(ugc_npc_action, () => $"ugc_npc_action is null - {player.toBasicString()}");
-
- ugc_npc_action.modifyStateInfo(EntityStateType.None, new EntityPos(), "");
- dynamoDbDocBase = MakeDeleteNpcLocationDoc(anchor_guid, myhome_guid);
-
- (result, var bonus_items) = await inventory_action.tryTakalbleToBag((META_ID)crafting_meta_data.Beacon_BonusItemId, (ushort)(1 * craft_attribute.CraftCount));
- if (result.isFail())
- {
- FinishCraftPacketHandler.send_S2C_ACK_FINISH_CRAFT(player, result);
- return result;
- }
-
- Increase_changed_items.AddRange(bonus_items);
+ err_msg =
+ $"UgcNpc Not Found UgcNpc Guid : {craft_attribute.BeaconGuid} - {getOwner().toBasicString()}";
+ result.setFail(ServerErrorCode.UgcNpcNotFound, err_msg);
+ Log.getLogger().error(err_msg);
+ FinishCraftPacketHandler.send_S2C_ACK_FINISH_CRAFT(player, result);
+ return result;
}
- var task_log_data = CraftBusinessLogHelper.toCraftLogInfo(craft_attribute);
- invokers.Add(new CraftBusinessLog(task_log_data));
+ var myhome_agent_action = player.getEntityAction();
+ NullReferenceCheckHelper.throwIfNull(myhome_agent_action, () => $"myhome_agent_action is null !!!");
- var batch = new QueryBatchEx(player, LogActionType.CraftFinish
- , server_logic.getDynamoDbClient());
+ var myhome_guid = myhome_agent_action.getMyHomeGuidByAnchorGuid(anchor_guid);
+ if (myhome_guid.isNullOrWhiteSpace())
{
- if (dynamoDbDocBase != null) batch.addQuery(new DBQEntityDelete(dynamoDbDocBase));
- batch.addQuery(new DBQWriteToAttributeAllWithTransactionRunner());
+ err_msg = $"Failed to get Myhome Guid. anchor_guid : {anchor_guid} - {getOwner().toBasicString()}";
+ result.setFail(ServerErrorCode.AnchorIsNotInMyhome, err_msg);
+ Log.getLogger().error(err_msg);
+ FinishCraftPacketHandler.send_S2C_ACK_FINISH_CRAFT(player, result);
+ return result;
}
- batch.appendBusinessLogs(invokers);
+ var ugc_npc_action = ugc_npc.getEntityAction();
+ NullReferenceCheckHelper.throwIfNull(ugc_npc_action,
+ () => $"ugc_npc_action is null - {player.toBasicString()}");
- result = await QueryHelper.sendQueryAndBusinessLog(batch);
+ ugc_npc_action.modifyStateInfo(EntityStateType.None, new EntityPos());
+ result = await ugc_npc_action.tryRemoveInGameZone();
+ if (result.isFail())
+ {
+ string room_id = string.Empty;
+ LOCATION_UNIQUE_ID unique_id = string.Empty;
+ int map_id = 0;
+ var map = game_zone_action.getLinkedToMap();
+ if (map is not null)
+ {
+ room_id = map.m_room_id;
+ unique_id = map.getLocationUniqueId();
+ map_id = map.MapMId;
+ }
+
+ err_msg =
+ $"Failed to tryRemoveInGameZone Player room_id : {room_id}, Player Map Location id : {unique_id}, Player MapMid : {map_id}, BeaconGuid : {craft_attribute.BeaconGuid} - {getOwner().toBasicString()}";
+ Log.getLogger().error(err_msg);
+ }
+
+ dynamoDbDocBase = MakeDeleteNpcLocationDoc(anchor_guid, myhome_guid);
+
+ // 보너스 아이템 id
+ var beaconBonusItemId = crafting_meta_data.Beacon_BonusItemId;
+ // 보너스 아이템 수 적용
+ var beaconBonusItemValue = crafting_meta_data.Beacon_BonusItemValue;
+ (result, var bonusItems) = await inventory_action.tryTakalbleToBag((META_ID)beaconBonusItemId,
+ (ushort)(beaconBonusItemValue * craft_attribute.CraftCount));
if (result.isFail())
{
FinishCraftPacketHandler.send_S2C_ACK_FINISH_CRAFT(player, result);
return result;
}
- m_Crafts.TryRemove(anchor_guid, out craft);
+ Increase_changed_items.AddRange(bonusItems);
+ }
- if (ugc_npc != null)
- {
- var ugc_npc_action = ugc_npc.getEntityAction();
- var game_zone_action = player.getEntityAction();
- result = await ugc_npc_action.tryRemoveInGameZone();
- if (result.isFail())
- {
- string room_id = string.Empty;
- LOCATION_UNIQUE_ID unique_id = string.Empty;
- int map_id = 0;
- var map = game_zone_action.getLinkedToMap();
- if (map is not null)
- {
- room_id = map.m_room_id;
- unique_id = map.getLocationUniqueId();
- map_id = map.MapMId;
- }
- err_msg = $"Failed to tryRemoveInGameZone Player room_id : {room_id}, Player Map Location id : {unique_id}, Player MapMid : {map_id}, BeaconGuid : {craft_attribute.BeaconGuid} - {getOwner().toBasicString()}";
- Log.getLogger().error(err_msg);
- }
- }
+ var task_log_data = CraftBusinessLogHelper.toCraftLogInfo(craft_attribute);
+ invokers.Add(new CraftBusinessLog(task_log_data));
- FinishCraftPacketHandler.send_S2C_ACK_FINISH_CRAFT(player, result, anchor_guid, craft_attribute.BeaconGuid, Increase_changed_items);
- game_zone_action.broadcast(player, CraftNotifyHelper.makeNotiCraftInfoPacket(m_Crafts.Select(x => x.Value.toCraftData4Client()).ToList(), player.getUserGuid()));
+ var batch = new QueryBatchEx(player, LogActionType.CraftFinish
+ , server_logic.getDynamoDbClient());
+ {
+ if (dynamoDbDocBase != null) batch.addQuery(new DBQEntityDelete(dynamoDbDocBase));
+ batch.addQuery(new DBQWriteToAttributeAllWithTransactionRunner());
+ }
- return result;
- };
+ batch.appendBusinessLogs(invokers);
- result = await player.runTransactionRunnerSafely(TransactionIdType.PrivateContents, "FinishCraft", fn_finish_craft_profile);
+ result = await QueryHelper.sendQueryAndBusinessLog(batch);
if (result.isFail())
{
- err_msg = $"Failed to runTransaction() !!! : {result.toBasicString()} - {player.toBasicString()}";
- Log.getLogger().error(err_msg);
+ FinishCraftPacketHandler.send_S2C_ACK_FINISH_CRAFT(player, result);
+ return result;
}
- if (crafting_meta_data.Crafting_ItemId > 0)
- {
- await QuestManager.It.QuestCheck(player, new QuestCrafting(EQuestEventTargetType.CRAFTING, EQuestEventNameType.COMPLETED, crafting_meta_data.Crafting_ItemId));
- }
-
+ m_Crafts.TryRemove(anchor_guid, out craft);
+
+ FinishCraftPacketHandler.send_S2C_ACK_FINISH_CRAFT(player, result, anchor_guid, craft_attribute.BeaconGuid,
+ Increase_changed_items);
+ game_zone_action.broadcast(player,
+ CraftNotifyHelper.makeNotiCraftInfoPacket(m_Crafts.Select(x => x.Value.toCraftData4Client()).ToList(),
+ player.getUserGuid()));
return result;
- }
+ };
- public Result cheatAllCraftFinish()
+ result = await player.runTransactionRunnerSafely(TransactionIdType.PrivateContents, "FinishCraft",
+ fn_finish_craft_profile);
+ if (result.isFail())
{
- var result = new Result();
- var err_msg = string.Empty;
+ err_msg = $"Failed to runTransaction() !!! : {result.toBasicString()} - {player.toBasicString()}";
+ Log.getLogger().error(err_msg);
+ }
- var player = getOwner() as Player;
- NullReferenceCheckHelper.throwIfNull(player, () => $"player is null !!!");
+ if (crafting_meta_data.Crafting_ItemId > 0)
+ {
+ await QuestManager.It.QuestCheck(player,
+ new QuestCrafting(EQuestEventTargetType.CRAFTING, EQuestEventNameType.COMPLETED,
+ crafting_meta_data.Crafting_ItemId));
- var craftList = m_Crafts.Select(x => x.Value).ToList();
-
- foreach (var craft in craftList)
+ if (to_add_count == 0)
{
- var craft_attribute = craft.getEntityAttribute();
- NullReferenceCheckHelper.throwIfNull(craft_attribute, () => $"craft_attribute is null !!!");
-
- craft_attribute.CraftFinishTime = DateTimeHelper.Current;
- craft_attribute.modifiedEntityAttribute();
+ err_msg =
+ $"to_add_count is zero !!! : Crafting_ItemValue : {crafting_meta_data.Crafting_ItemValue} and crafte_count : {craft_attribute.CraftCount}";
+ Log.getLogger().warn(err_msg);
}
- return result;
+ for (int i = 0; i < to_add_count; i++)
+ {
+ await player.getGameEventCollector()
+ .collectEvent(new GameEventInvokerCraftingCompleted(player, crafting_meta_data.Crafting_ItemId));
+ }
}
+
+
+ return result;
+ }
+
+ public Result cheatAllCraftFinish()
+ {
+ var result = new Result();
+ var err_msg = string.Empty;
+
+ var player = getOwner() as Player;
+ NullReferenceCheckHelper.throwIfNull(player, () => $"player is null !!!");
+
+ var craftList = m_Crafts.Select(x => x.Value).ToList();
+
+ foreach (var craft in craftList)
+ {
+ var craft_attribute = craft.getEntityAttribute();
+ NullReferenceCheckHelper.throwIfNull(craft_attribute, () => $"craft_attribute is null !!!");
+
+ craft_attribute.CraftFinishTime = DateTimeHelper.Current;
+ craft_attribute.modifiedEntityAttribute();
+ }
+
+ return result;
}
}
+}
diff --git a/GameServer/Contents/Craft/CraftCheat.cs b/GameServer/Contents/Craft/CraftCheat.cs
index fbf7849..4f2fdea 100644
--- a/GameServer/Contents/Craft/CraftCheat.cs
+++ b/GameServer/Contents/Craft/CraftCheat.cs
@@ -1,9 +1,12 @@
-using ServerCommon;
-using ServerCore; using ServerBase;
+using MetaAssets;
+using ServerCommon;
+using ServerCore;
+using ServerBase;
namespace GameServer;
-[ChatCommandAttribute("crafthelpinit", typeof(CheatCraftHelpInit), AuthAdminLevelType.Developer, AuthAdminLevelType.GmNormal, AuthAdminLevelType.GmSuper)]
+[ChatCommandAttribute("crafthelpinit", typeof(CheatCraftHelpInit), AuthAdminLevelType.Developer,
+ AuthAdminLevelType.GmNormal, AuthAdminLevelType.GmSuper)]
internal class CheatCraftHelpInit : ChatCommandBase
{
public override async Task invoke(Player player, string token, string[] args)
@@ -11,16 +14,17 @@ internal class CheatCraftHelpInit : ChatCommandBase
Log.getLogger().info($"CraftHelpInit");
var craft_help_action = player.getEntityAction();
- NullReferenceCheckHelper.throwIfNull(craft_help_action, () => $"craft_help_action is null !!! - {player.toBasicString()}");
+ NullReferenceCheckHelper.throwIfNull(craft_help_action,
+ () => $"craft_help_action is null !!! - {player.toBasicString()}");
var server_logic = GameServerApp.getServerLogic();
- var fn_start = async delegate ()
+ var fn_start = async delegate()
{
craft_help_action.cheatChangeCraftHelpInit();
var batch = new QueryBatchEx(player, LogActionType.CheatCommandCraftHelpInit
- , server_logic.getDynamoDbClient());
+ , server_logic.getDynamoDbClient());
{
batch.addQuery(new DBQWriteToAttributeAllWithTransactionRunner());
}
@@ -36,17 +40,97 @@ internal class CheatCraftHelpInit : ChatCommandBase
var transaction_name = "CheatCommandCraftHelpInit";
var result = await player.runTransactionRunnerSafelyWithTransGuid(player.getUserGuid()
- , TransactionIdType.PrivateContents, transaction_name
- , fn_start);
+ , TransactionIdType.PrivateContents, transaction_name
+ , fn_start);
if (result.isFail())
{
- var err_msg = $"Failed to runTransactionRunnerSafelyWithTransGuid() !!! : {result.toBasicString()} - transactionName:{transaction_name}, {player.toBasicString()}";
+ var err_msg =
+ $"Failed to runTransactionRunnerSafelyWithTransGuid() !!! : {result.toBasicString()} - transactionName:{transaction_name}, {player.toBasicString()}";
Log.getLogger().error(err_msg);
}
}
}
-[ChatCommandAttribute("registercraftrecipe", typeof(CheatRegisterCraftRecipe), AuthAdminLevelType.Developer, AuthAdminLevelType.GmNormal, AuthAdminLevelType.GmSuper)]
+[ChatCommandAttribute("addcraftmaterials", typeof(CheatAddCraftMaterials), AuthAdminLevelType.Developer,
+ AuthAdminLevelType.GmNormal, AuthAdminLevelType.GmSuper)]
+internal class CheatAddCraftMaterials : ChatCommandBase
+{
+ public override async Task invoke(Player player, string token, string[] args)
+ {
+ if (args.Length < 1)
+ {
+ Log.getLogger()
+ .error($"[Cheat] Invalid Argument. Usage: /addcraftmaterials [recipe_meta_id] [craft_count(optional)]");
+ return;
+ }
+
+ if (!uint.TryParse(args[0], out uint recipe_meta_id))
+ {
+ Log.getLogger().error($"[Cheat] Invalid recipe_meta_id: {args[0]}");
+ return;
+ }
+
+ int craft_count = 1;
+ if (args.Length > 1 && !int.TryParse(args[1], out craft_count))
+ {
+ Log.getLogger().error($"[Cheat] Invalid craft_count: {args[1]}");
+ return;
+ }
+
+ if (MetaData.Instance._CraftingMetaTable.TryGetValue((int)recipe_meta_id, out var crafting_meta_data) == false)
+ {
+ Log.getLogger().error($"[Cheat] CraftingMetaData not found for id: {recipe_meta_id}");
+ return;
+ }
+
+ Log.getLogger().info($"[Cheat] AddCraftMaterials for recipe {recipe_meta_id}, count {craft_count}");
+
+ var server_logic = GameServerApp.getServerLogic();
+
+ var fn_add_materials = async delegate()
+ {
+ var result = new Result();
+ var inventory_action = player.getEntityAction();
+ NullReferenceCheckHelper.throwIfNull(inventory_action,
+ () => $"inventory_action is null for player {player.toBasicString()}");
+
+ foreach (var material in crafting_meta_data.Material)
+ {
+ (result, var new_items) = await inventory_action.tryTakalbleToBag((uint)material.ItemId,
+ (ushort)(material.ItemValue * craft_count));
+ if (result.isFail())
+ {
+ // 인벤토리가 가득 찰 경우를 대비해 실패 시에도 계속 진행하도록 할 수 있습니다.
+ Log.getLogger().warn($"[Cheat] Failed to add material {material.ItemId}: {result.toBasicString()}");
+ result.setSuccess(); // 에러를 무시하고 다음 재료 지급을 시도
+ }
+ }
+
+ var batch = new QueryBatchEx(player, LogActionType.CheatCommandAddCraftItems,
+ server_logic.getDynamoDbClient());
+ {
+ batch.addQuery(new DBQWriteToAttributeAllWithTransactionRunner());
+ }
+
+ result = await QueryHelper.sendQueryAndBusinessLog(batch);
+ return result;
+ };
+
+ var transaction_name = "Cheat.AddCraftMaterials";
+ var result = await player.runTransactionRunnerSafelyWithTransGuid(player.getUserGuid(),
+ TransactionIdType.PrivateContents, transaction_name, fn_add_materials);
+
+ if (result.isFail())
+ {
+ var err_msg =
+ $"[Cheat] Failed to runTransactionRunnerSafelyWithTransGuid() for AddCraftMaterials: {result.toBasicString()} - {player.toBasicString()}";
+ Log.getLogger().error(err_msg);
+ }
+ }
+}
+
+[ChatCommandAttribute("registercraftrecipe", typeof(CheatRegisterCraftRecipe), AuthAdminLevelType.Developer,
+ AuthAdminLevelType.GmNormal, AuthAdminLevelType.GmSuper)]
internal class CheatRegisterCraftRecipe : ChatCommandBase
{
public override async Task invoke(Player player, string token, string[] args)
@@ -54,7 +138,8 @@ internal class CheatRegisterCraftRecipe : ChatCommandBase
Log.getLogger().info($"CheatRegisterCraftRecipe");
var craft_recipe_action = player.getEntityAction();
- NullReferenceCheckHelper.throwIfNull(craft_recipe_action, () => $"craft_recipe_action is null !!! - {player.toBasicString()}");
+ NullReferenceCheckHelper.throwIfNull(craft_recipe_action,
+ () => $"craft_recipe_action is null !!! - {player.toBasicString()}");
var server_logic = GameServerApp.getServerLogic();
@@ -67,13 +152,13 @@ internal class CheatRegisterCraftRecipe : ChatCommandBase
if (uint.TryParse(args[0], out uint recipe_meta_id) == false)
return;
- var fn_start = async delegate ()
+ var fn_start = async delegate()
{
var result = await craft_recipe_action.RegisterRecipe(recipe_meta_id);
if (result.isFail()) return result;
var batch = new QueryBatchEx(player, LogActionType.CheatCommandRegisterCraftRecipe
- , server_logic.getDynamoDbClient());
+ , server_logic.getDynamoDbClient());
{
batch.addQuery(new DBQWriteToAttributeAllWithTransactionRunner());
}
@@ -89,17 +174,19 @@ internal class CheatRegisterCraftRecipe : ChatCommandBase
var transaction_name = "Cheat.CommandRegisterCraftRecipe";
var result = await player.runTransactionRunnerSafelyWithTransGuid(player.getUserGuid()
- , TransactionIdType.PrivateContents, transaction_name
- , fn_start);
+ , TransactionIdType.PrivateContents, transaction_name
+ , fn_start);
if (result.isFail())
{
- var err_msg = $"Failed to runTransactionRunnerSafelyWithTransGuid() !!! : {result.toBasicString()} - transactionName:{transaction_name}, {player.toBasicString()}";
+ var err_msg =
+ $"Failed to runTransactionRunnerSafelyWithTransGuid() !!! : {result.toBasicString()} - transactionName:{transaction_name}, {player.toBasicString()}";
Log.getLogger().error(err_msg);
}
}
}
-[ChatCommandAttribute("craftfinish", typeof(CheatAllCraftFinish), AuthAdminLevelType.Developer, AuthAdminLevelType.GmNormal, AuthAdminLevelType.GmSuper)]
+[ChatCommandAttribute("craftfinish", typeof(CheatAllCraftFinish), AuthAdminLevelType.Developer,
+ AuthAdminLevelType.GmNormal, AuthAdminLevelType.GmSuper)]
internal class CheatAllCraftFinish : ChatCommandBase
{
public override async Task invoke(Player player, string token, string[] args)
@@ -107,17 +194,18 @@ internal class CheatAllCraftFinish : ChatCommandBase
Log.getLogger().info($"CheatAllCraftFinish");
var craft_action = player.getEntityAction();
- NullReferenceCheckHelper.throwIfNull(craft_action, () => $"craft_action is null !!! - {player.toBasicString()}");
+ NullReferenceCheckHelper.throwIfNull(craft_action,
+ () => $"craft_action is null !!! - {player.toBasicString()}");
var server_logic = GameServerApp.getServerLogic();
- var fn_start = async delegate ()
+ var fn_start = async delegate()
{
var result = craft_action.cheatAllCraftFinish();
if (result.isFail()) return result;
var batch = new QueryBatchEx(player, LogActionType.CheatAllCraftFinish
- , server_logic.getDynamoDbClient());
+ , server_logic.getDynamoDbClient());
{
batch.addQuery(new DBQWriteToAttributeAllWithTransactionRunner());
}
@@ -133,12 +221,360 @@ internal class CheatAllCraftFinish : ChatCommandBase
var transaction_name = "Cheat.CommandAllCraftFinish";
var result = await player.runTransactionRunnerSafelyWithTransGuid(player.getUserGuid()
- , TransactionIdType.PrivateContents, transaction_name
- , fn_start);
+ , TransactionIdType.PrivateContents, transaction_name
+ , fn_start);
if (result.isFail())
{
- var err_msg = $"Failed to runTransactionRunnerSafelyWithTransGuid() !!! : {result.toBasicString()} - transactionName:{transaction_name}, {player.toBasicString()}";
+ var err_msg =
+ $"Failed to runTransactionRunnerSafelyWithTransGuid() !!! : {result.toBasicString()} - transactionName:{transaction_name}, {player.toBasicString()}";
Log.getLogger().error(err_msg);
}
}
-}
\ No newline at end of file
+}
+
+[ChatCommandAttribute("testallcraftrecipes", typeof(CheatTestAllCraftRecipes), AuthAdminLevelType.Developer,
+ AuthAdminLevelType.GmNormal, AuthAdminLevelType.GmSuper)]
+internal class CheatTestAllCraftRecipes : ChatCommandBase
+{
+ public override async Task invoke(Player player, string token, string[] args)
+ {
+ Log.getLogger().info($"[Cheat] TestAllCraftRecipes started for player {player.toBasicString()}");
+
+ var fn_test_all_recipes = async delegate()
+ {
+ var result = new Result();
+ var server_logic = GameServerApp.getServerLogic();
+
+ // 액션 가져오기
+ var craft_recipe_action = player.getEntityAction();
+ NullReferenceCheckHelper.throwIfNull(craft_recipe_action,
+ () => $"craft_recipe_action is null for player {player.toBasicString()}");
+
+ var inventory_action = player.getEntityAction();
+ NullReferenceCheckHelper.throwIfNull(inventory_action,
+ () => $"inventory_action is null for player {player.toBasicString()}");
+
+ var craft_action = player.getEntityAction();
+ NullReferenceCheckHelper.throwIfNull(craft_action,
+ () => $"craft_action is null for player {player.toBasicString()}");
+
+ var game_zone_action = player.getEntityAction();
+ NullReferenceCheckHelper.throwIfNull(game_zone_action,
+ () => $"game_zone_action is null for player {player.toBasicString()}");
+
+ var player_action = player.getEntityAction();
+ NullReferenceCheckHelper.throwIfNull(player_action,
+ () => $"player_action is null for player {player.toBasicString()}");
+
+ // 1. 모든 레시피 등록 및 재료 지급
+ Log.getLogger()
+ .info($"[Cheat][{player.toBasicString()}] Step 1: Registering all recipes and adding materials.");
+ foreach (var crafting_meta_data in MetaData.Instance._CraftingMetaTable.Values)
+ {
+ if (crafting_meta_data.Enable == false)
+ continue;
+
+ // 레시피 등록
+ if (!craft_recipe_action.HasRecipe((uint)crafting_meta_data.Id))
+ {
+ result = await craft_recipe_action.RegisterRecipe((uint)crafting_meta_data.Id);
+ if (result.isFail())
+ {
+ Log.getLogger()
+ .warn(
+ $"[Cheat][{player.toBasicString()}] Failed to register recipe {crafting_meta_data.Id}: {result.toBasicString()}");
+ result.setSuccess(); // 실패해도 계속 진행
+ }
+ }
+
+ // 재료 아이템 지급
+ foreach (var material in crafting_meta_data.Material)
+ {
+ (result, var new_items) =
+ await inventory_action.tryTakalbleToBag((uint)material.ItemId, (ushort)material.ItemValue);
+ if (result.isFail())
+ {
+ Log.getLogger()
+ .warn(
+ $"[Cheat][{player.toBasicString()}] Failed to add material {material.ItemId} for recipe {crafting_meta_data.Id}: {result.toBasicString()}");
+ result.setSuccess(); // 실패해도 계속 진행
+ }
+ }
+ }
+
+ // 2. 비컨 없이 제작 시작 -> 즉시 완료 -> 완료 처리 테스트
+ Log.getLogger()
+ .info($"[Cheat][{player.toBasicString()}] Step 2: Testing Start -> Finish Craft (without Beacon).");
+ (result, var testAnchorGuid1, var testRecipeId1) =
+ await TestStartAndFinishCraft(player, craft_action, game_zone_action, player_action, false);
+ if (result.isFail())
+ {
+ Log.getLogger()
+ .error($"[Cheat][{player.toBasicString()}] Failed Start->Finish test: {result.toBasicString()}");
+ return result; // 중대한 오류 시 중단
+ }
+
+ Log.getLogger().info($"[Cheat][{player.toBasicString()}] Step 2: Success (without Beacon).");
+
+
+ // 3. 비컨 없이 제작 시작 -> 중단 테스트
+ Log.getLogger()
+ .info($"[Cheat][{player.toBasicString()}] Step 3: Testing Start -> Stop Craft (without Beacon).");
+ (result, var testAnchorGuid2, var testRecipeId2) =
+ await TestStartAndStopCraft(player, craft_action, game_zone_action, player_action, false);
+ if (result.isFail())
+ {
+ Log.getLogger()
+ .error(
+ $"[Cheat][{player.toBasicString()}] Failed Start->Stop test (without Beacon): {result.toBasicString()}");
+ return result; // 중대한 오류 시 중단
+ }
+
+ Log.getLogger().info($"[Cheat][{player.toBasicString()}] Step 3: Success (without Beacon).");
+
+ // 4. 비컨 사용 제작 시작 -> 즉시 완료 -> 완료 처리 테스트
+ Log.getLogger()
+ .info($"[Cheat][{player.toBasicString()}] Step 4: Testing Start -> Finish Craft (with Beacon).");
+ (result, var testAnchorGuid3, var testRecipeId3) =
+ await TestStartAndFinishCraft(player, craft_action, game_zone_action, player_action, true);
+ if (result.isFail())
+ {
+ // 비컨이 없는 경우 테스트를 건너뛸 수 있도록 경고만 기록하고 계속 진행
+ if (result.ErrorCode != ServerErrorCode.UgcNpcNotFound)
+ {
+ Log.getLogger()
+ .error(
+ $"[Cheat][{player.toBasicString()}] Failed Start->Finish test (with Beacon): {result.toBasicString()}");
+ return result;
+ }
+ else
+ {
+ Log.getLogger()
+ .warn(
+ $"[Cheat][{player.toBasicString()}] Skipped Start->Finish test (with Beacon): No available beacon found.");
+ }
+ }
+ else
+ {
+ Log.getLogger().info($"[Cheat][{player.toBasicString()}] Step 4: Success (with Beacon).");
+ }
+
+ // 5. 비컨 사용 제작 시작 -> 중단 테스트
+ Log.getLogger()
+ .info($"[Cheat][{player.toBasicString()}] Step 5: Testing Start -> Stop Craft (with Beacon).");
+ (result, var testAnchorGuid4, var testRecipeId4) =
+ await TestStartAndStopCraft(player, craft_action, game_zone_action, player_action, true);
+ if (result.isFail())
+ {
+ if (result.ErrorCode != ServerErrorCode.UgcNpcNotFound)
+ {
+ Log.getLogger()
+ .error(
+ $"[Cheat][{player.toBasicString()}] Failed Start->Stop test (with Beacon): {result.toBasicString()}");
+ return result;
+ }
+ else
+ {
+ Log.getLogger()
+ .warn(
+ $"[Cheat][{player.toBasicString()}] Skipped Start->Stop test (with Beacon): No available beacon found.");
+ }
+ }
+ else
+ {
+ Log.getLogger().info($"[Cheat][{player.toBasicString()}] Step 5: Success (with Beacon).");
+ }
+
+ Log.getLogger().info($"[Cheat][{player.toBasicString()}] TestAllCraftRecipes finished successfully.");
+ return result;
+ };
+
+ var transaction_name = "Cheat.TestAllCraftRecipes";
+ var result = await player.runTransactionRunnerSafely(TransactionIdType.PrivateContents, transaction_name,
+ fn_test_all_recipes);
+ if (result.isFail() && result.ErrorCode != ServerErrorCode.UgcNpcNotFound) // 비컨 없음 오류는 최종 실패로 간주하지 않음
+ {
+ var err_msg =
+ $"[Cheat] Failed to runTransactionRunnerSafelyWithTransGuid() for TestAllCraftRecipes: {result.toBasicString()} - {player.toBasicString()}";
+ Log.getLogger().error(err_msg);
+ }
+ }
+
+ private async Task<(Result, string, uint)> TestStartAndFinishCraft(Player player, CraftAction craftAction,
+ GameZoneAction gameZoneAction, PlayerAction playerAction, bool useBeacon)
+ {
+ // 테스트에 사용할 레시피와 앵커 찾기
+ var (result, anchorGuid, recipeId) = await FindWorkableRecipeAndAnchor(gameZoneAction);
+ if (result.isFail()) return (result, string.Empty, 0);
+
+ var (beaconResult, beaconGuid, beaconPos) = GetBeaconInfo(playerAction, gameZoneAction, useBeacon, anchorGuid);
+ if (beaconResult.isFail()) return (beaconResult, string.Empty, 0);
+
+ // 2-1. 제작 시작
+ result = await craftAction.StartCraftProcess(anchorGuid, recipeId, beaconGuid, beaconPos, 1);
+ if (result.isFail()) return (result, anchorGuid, recipeId);
+
+ // 2-2. 제작 즉시 완료 치트 적용
+ result = craftAction.cheatAllCraftFinish();
+ if (result.isFail()) return (result, anchorGuid, recipeId);
+
+ // 2-3. 제작 완료 처리
+ result = await craftAction.FinishCraftProcess(anchorGuid);
+ return (result, anchorGuid, recipeId);
+ }
+
+ private async Task<(Result, string, uint)> TestStartAndStopCraft(Player player, CraftAction craftAction,
+ GameZoneAction gameZoneAction, PlayerAction playerAction, bool useBeacon)
+ {
+ // 테스트에 사용할 레시피와 앵커 찾기
+ var (result, anchorGuid, recipeId) = await FindWorkableRecipeAndAnchor(gameZoneAction);
+ if (result.isFail()) return (result, string.Empty, 0);
+
+ var (beaconResult, beaconGuid, beaconPos) = GetBeaconInfo(playerAction, gameZoneAction, useBeacon, anchorGuid);
+ if (beaconResult.isFail()) return (beaconResult, string.Empty, 0);
+
+ // 3-1. 제작 시작
+ result = await craftAction.StartCraftProcess(anchorGuid, recipeId, beaconGuid, beaconPos, 1);
+ if (result.isFail()) return (result, anchorGuid, recipeId);
+
+ // 3-2. 제작 중단
+ result = await craftAction.StopCraftProcess(anchorGuid);
+ return (result, anchorGuid, recipeId);
+ }
+
+ private (Result, string, Pos) GetBeaconInfo(PlayerAction playerAction, GameZoneAction gameZoneAction,
+ bool useBeacon, string anchorGuid)
+ {
+ if (!useBeacon)
+ {
+ return (new Result(), string.Empty, new Pos());
+ }
+
+ var ugcNpc = playerAction.getHadUgcNpcs().Values.FirstOrDefault(npc =>
+ npc.getEntityAttribute()?.State == EntityStateType.None
+ );
+ if (ugcNpc == null)
+ {
+ return (new Result().Fail(ServerErrorCode.UgcNpcNotFound, "No available beacon found for test"),
+ string.Empty, new Pos());
+ }
+
+ // 실제 앵커 위치를 기반으로 비컨 위치를 설정해야 클라이언트에서 정상적으로 표시됨
+ var anchor = gameZoneAction.GetAnchor(anchorGuid);
+ var beaconPos = new Pos { X = 1, Y = 1, Z = 1, Angle = 0 };
+ if (anchor != null)
+ {
+ beaconPos.X = anchor.AnchorPos.X + 1;
+ beaconPos.Y = anchor.AnchorPos.Y;
+ beaconPos.Z = anchor.AnchorPos.Z;
+ }
+
+ return (new Result(), ugcNpc.getUgcNpcMetaGuid(), beaconPos);
+ }
+
+ private async Task<(Result, string, uint)> FindWorkableRecipeAndAnchor(GameZoneAction gameZoneAction,
+ bool createAnchorsIfNotFound = true)
+ {
+ var player = gameZoneAction.getOwner() as Player;
+ var anchors = gameZoneAction.getLinkedToMap()?.getAnchors();
+ foreach (var craftingMetaData in MetaData.Instance._CraftingMetaTable.Values)
+ {
+ if (!craftingMetaData.Enable) continue;
+
+ if (anchors != null)
+ {
+ foreach (var anchor in anchors.Values)
+ {
+ if (MetaData.Instance._ItemTable.TryGetValue(anchor.AnchorProp.TableId, out var itemMetaData))
+ {
+ if (itemMetaData.PropSmallType == craftingMetaData.PropSmallType)
+ {
+ // 사용 가능한 앵커와 레시피를 찾음
+ return (new Result(), anchor.AnchorGuid, (uint)craftingMetaData.Id);
+ }
+ }
+ }
+ }
+ }
+
+ if (createAnchorsIfNotFound)
+ {
+ // 사용 가능한 앵커가 없다면, 테스트용 앵커를 생성하고 다시 시도합니다.
+ Log.getLogger()
+ .warn(
+ $"[Cheat][{player?.toBasicString()}] No workable anchor found. Attempting to create test anchors.");
+ var createResult = await CheatCreateTestAnchors(gameZoneAction);
+ if (createResult.isSuccess())
+ {
+ // 앵커 생성 후 다시 한번 탐색 (이때는 다시 생성하지 않음)
+ return await FindWorkableRecipeAndAnchor(gameZoneAction, false);
+ }
+ }
+
+ var err_msg = $"[Cheat][{player?.toBasicString()}] No workable anchor and recipe found for testing.";
+ Log.getLogger().warn(err_msg);
+ return (new Result().Fail(ServerErrorCode.CraftingAnchorIsNotPlaced, err_msg), string.Empty, 0);
+ }
+
+ ///
+ /// 테스트에 필요한 모든 종류의 제작 앵커를 현재 맵에 강제로 생성하고 배치합니다.
+ ///
+ private async Task CheatCreateTestAnchors(GameZoneAction gameZoneAction)
+ {
+ var player = gameZoneAction.getOwner() as Player;
+ NullReferenceCheckHelper.throwIfNull(player, () => "Player is null in CheatCreateTestAnchors");
+
+ var map = gameZoneAction.getLinkedToMap();
+ if (map == null)
+ {
+ return new Result().Fail(ServerErrorCode.EntityNotLinkedToMap, "Player is not in a map.");
+ }
+
+ var anchorItemMetas = MetaData.Instance._ItemTable.Values
+ .Where(item => item is
+ {
+ TypeLarge: EItemLargeType.PROP,
+ PropSmallType: not EPropSmallType.None and not EPropSmallType.Default
+ })
+ .ToList();
+
+ if (!anchorItemMetas.Any())
+ {
+ Log.getLogger().warn("[Cheat] No craft anchor item metadata found to create.");
+ return new Result().Fail(ServerErrorCode.ItemMetaDataNotFound, "No craft anchor item metadata found.");
+ }
+
+ Log.getLogger().info($"[Cheat] Creating {anchorItemMetas.Count} test anchors...");
+
+ var posX = 0;
+ foreach (var itemMeta in anchorItemMetas)
+ {
+ var anchorGuid = Guid.NewGuid().ToString("N");
+ var prop = new AnchorProp { TableId = itemMeta.ItemId, };
+
+ var pos = new Pos
+ {
+ X = posX, Y = 0, Z = 0, Angle = 0,
+ };
+
+ // Map에 AnchorInfo를 직접 추가합니다.
+ var anchorInfo = new AnchorInfo(anchorGuid, pos, prop);
+ if (map.getAnchors().TryAdd(anchorGuid, anchorInfo))
+ {
+ Log.getLogger()
+ .info(
+ $"[Cheat] Successfully created test anchor '{itemMeta.Name}' ({itemMeta.ItemId}) with GUID {anchorGuid} at X={posX}");
+ posX += 2; // 다음 앵커 위치
+ }
+ else
+ {
+ Log.getLogger().warn($"[Cheat] Failed to add test anchor for item {itemMeta.ItemId} to map.");
+ }
+ }
+
+ // 이 치트는 DB에 저장하지 않고, 현재 세션의 Map 객체에만 앵커를 추가하여 임시로 사용합니다.
+ // 따라서 별도의 트랜잭션 처리는 필요 없습니다.
+ await Task.CompletedTask;
+ return new Result();
+ }
+}
diff --git a/GameServer/Contents/Farming/Helper/FarmingHelper.cs b/GameServer/Contents/Farming/Helper/FarmingHelper.cs
index 807971c..2ca05b7 100644
--- a/GameServer/Contents/Farming/Helper/FarmingHelper.cs
+++ b/GameServer/Contents/Farming/Helper/FarmingHelper.cs
@@ -122,7 +122,7 @@ public static class FarmingHelper
found_anchor_info.PropState = farming_effect_attrib.FarmingState.toPropState();
found_anchor_info.respawnTime = farming_effect_attrib.FarmingRespawnTime.ToTimestamp();
- currMap.PropModifyNoti(found_anchor_info.AnchorGuid);
+ currMap.broadcast_PropModify(found_anchor_info.AnchorGuid);
var player_manager = server_logic.getPlayerManager();
if (false == player_manager.tryGetUserByPrimaryKey(user_guid, out var found_user))
diff --git a/GameServer/Contents/Farming/PacketHandler/FarmingCancelPacketHandler.cs b/GameServer/Contents/Farming/PacketHandler/FarmingCancelPacketHandler.cs
index 4058768..0c260cf 100644
--- a/GameServer/Contents/Farming/PacketHandler/FarmingCancelPacketHandler.cs
+++ b/GameServer/Contents/Farming/PacketHandler/FarmingCancelPacketHandler.cs
@@ -215,12 +215,27 @@ public class FarmingCancelPacketHandler : PacketRecvHandler
return result;
};
- result = await player.runTransactionRunnerSafelyWithTransGuid( anchorMetaGuid
- , TransactionIdType.PrivateContents, "FarmingCancel", fn_farming_cancel);
- if (result.isFail())
+ var tranRunner = player.findTransactionRunner(TransactionIdType.PrivateContents);
+ if (null != tranRunner)
{
- err_msg = $"Failed to runTransactionRunnerSafely() !!! : {result.toBasicString()} - {player.toBasicString()}";
- Log.getLogger().error(err_msg);
+ result = await fn_farming_cancel.Invoke();
+ if (result.isFail())
+ {
+ err_msg = $"Failed to runTransactionRunnerSafely() !!! : {result.toBasicString()} - {player.toBasicString()}";
+ Log.getLogger().error(err_msg);
+ return result;
+ }
+ }
+ else
+ {
+ result = await player.runTransactionRunnerSafelyWithTransGuid( anchorMetaGuid
+ , TransactionIdType.PrivateContents, "FarmingCancel", fn_farming_cancel);
+ if (result.isFail())
+ {
+ err_msg = $"Failed to runTransactionRunnerSafely() !!! : {result.toBasicString()} - {player.toBasicString()}";
+ Log.getLogger().error(err_msg);
+ return result;
+ }
}
await farmingCancleQuestCheck(player, anchorMetaGuid, farming_effect_for_quest_check_nullable);
diff --git a/GameServer/Contents/GameMode/Action/GameGameObjectAction.cs b/GameServer/Contents/GameMode/Action/GameGameObjectAction.cs
deleted file mode 100644
index f701288..0000000
--- a/GameServer/Contents/GameMode/Action/GameGameObjectAction.cs
+++ /dev/null
@@ -1,44 +0,0 @@
-using System.Collections.Concurrent;
-using GameServer.Contents.GameMode.InteractionObject;
-using GameServer.Contents.GameMode.Manage.PlayManage;
-using MetaAssets;
-using ServerBase;
-using ServerCommon;
-using ServerCore;
-
-namespace GameServer.Contents.GameMode.Action;
-
-public class GameGameObjectAction : EntityActionBase, IGameObject
-{
- //todo : 장르별로 구분할 필요 있으면 depth 하나 더 둔다.
-
- protected EGameObjectType m_object_type = EGameObjectType.None;
- public GameGameObjectAction (EntityBase owner, EGameObjectType objectType)
- : base(owner)
- {
- m_object_type = objectType;
- }
-
- public virtual Task interact(string anchorGuid, DateTime interactionTime)
- {
- Log.getLogger().error($"interact Not implemant, {toBasicString()}");
- throw new NotImplementedException();
- }
-
- public override Task onInit()
- {
- Log.getLogger().error($"onInit Not implemant, {toBasicString()}");
- throw new NotImplementedException();
- }
-
- public override void onClear()
- {
- Log.getLogger().error($"onClear Not implemant, {toBasicString()}");
- throw new NotImplementedException();
- }
-
- public override string toBasicString()
- {
- return $"GameObjectType : {m_object_type}, " + base.toBasicString();
- }
-}
\ No newline at end of file
diff --git a/GameServer/Contents/GameMode/Action/GameModeBestRecordAction.cs b/GameServer/Contents/GameMode/Action/GameModeBestRecordAction.cs
new file mode 100644
index 0000000..46b6203
--- /dev/null
+++ b/GameServer/Contents/GameMode/Action/GameModeBestRecordAction.cs
@@ -0,0 +1,182 @@
+using ServerBase;
+using ServerCommon;
+using ServerCore;
+
+namespace GameServer;
+
+///
+/// 이 클래스는 플레이어의 게임 모드 최고 기록을 DynamoDB에서 읽고, 업데이트하는 역할을 담당
+///
+public class GameModeBestRecordAction : EntityActionBase
+{
+
+ private Player? _player;
+
+ ///
+ /// GameModeBestRecordAction을 생성합니다.
+ ///
+ /// 이 Action을 소유하는 Player 엔티티
+ public GameModeBestRecordAction(Player owner) : base(owner) { }
+
+ // 메모리에 캐싱된 플레이어의 최고 기록 데이터
+ private GameModeBestRecordAttrib? _bestRecordAttrib;
+
+ // 메모리에 캐싱된 플레이어의 최고 기록 DynamoDB 문서 객체
+ private GameModeBestRecordDoc? _bestRecordDoc;
+
+ private Player GetPlayer()
+ {
+ if (_player == null)
+ {
+ _player = getOwner() as Player;
+ }
+ NullReferenceCheckHelper.throwIfNull(_player, () => "Player is null");
+ return _player;
+ }
+
+ ///
+ /// Action 초기화 시 호출됩니다.
+ /// 플레이어의 최고 기록 문서를 DB에서 읽어와 메모리에 캐싱합니다.
+ ///
+ public override async Task onInit()
+ {
+ return await Task.FromResult(new Result());
+ }
+
+ ///