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(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."); } } }