Configuration for Broker.

This commit is contained in:
2025-07-05 08:46:30 +02:00
parent 5534b00097
commit f96de8936d
9 changed files with 195 additions and 0 deletions

View File

@ -0,0 +1,27 @@
using MessengerApi.Configuration.Model.Persistence;
using MessengerApi.Configuration.Model.Persistence.Base;
using MessengerApi.Configuration.Parsers;
using MessengerApi.Configuration.Sources.Environment;
using MessengerBroker.Configuration.Sources.Environment;
namespace MessengerBroker.Configuration.Parsers
{
public class ApiEnvironmentPersistenceConfigurationParser
{
public static PersistenceConfiguration Parse(IEnvironmentConfigurationSource config)
{
var type = PersistenceTypeParser.Parse(config.GetValue<string>(Constants.EnvironmentVariables.API_PERSISTENCE_TYPE));
if (type == MessengerApi.Configuration.Enums.PersistenceTypes.Sql)
{
return new SqlPersistenceConfiguration(config);
}
else if (type == MessengerApi.Configuration.Enums.PersistenceTypes.PostgreSql)
{
return new NpgPersistenceConfiguration(config);
}
throw new InvalidOperationException("Unrecognized persistence type.");
}
}
}

View File

@ -0,0 +1,27 @@
using MessengerBroker.Configuration.Model.Servers;
namespace MessengerBroker.Configuration.Parsers
{
public class MasterServerParser
{
public static MasterServer[] Parse(string value)
{
var servers = new List<MasterServer>();
var values = value.Split(';', StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries);
foreach(var v in values)
{
var props = v.Split(',', StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries);
servers.Add(new MasterServer
{
BrokerId = Guid.Parse(props[0]),
BrokerUrl = props[1],
Name = props[2]
});
}
return servers.ToArray();
}
}
}

View File

@ -0,0 +1,26 @@
using MessengerBroker.Configuration.Model.Servers;
namespace MessengerBroker.Configuration.Parsers
{
public static class SlaveServerParser
{
public static SlaveServer[] Parse(string value)
{
var servers = new List<SlaveServer>();
var values = value.Split(';', StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries);
foreach (var v in values)
{
var props = v.Split(',', StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries);
servers.Add(new SlaveServer
{
BrokerId = Guid.Parse(props[0]),
Name = props[1]
});
}
return servers.ToArray();
}
}
}