add defensive logic to handle scenario where a tenant connection string does not exist in appsettings.json

This commit is contained in:
sbwalker 2023-11-29 17:31:51 -05:00
parent 077343ca20
commit 85f9597f2c
3 changed files with 22 additions and 7 deletions

View File

@ -398,7 +398,7 @@ namespace Oqtane.Infrastructure
} }
catch (Exception ex) catch (Exception ex)
{ {
result.Message = "An Error Occurred Executing Upgrade Logic. " + ex.ToString(); result.Message = "An Error Occurred Executing Upgrade Logic On Tenant " + tenant.Name + ". " + ex.ToString();
_filelogger.LogError(Utilities.LogMessage(this, result.Message)); _filelogger.LogError(Utilities.LogMessage(this, result.Message));
} }
} }
@ -468,7 +468,7 @@ namespace Oqtane.Infrastructure
} }
catch (Exception ex) catch (Exception ex)
{ {
result.Message = "An Error Occurred Installing " + moduleDefinition.Name + " Version " + versions[i] + " - " + ex.ToString(); result.Message = "An Error Occurred Installing " + moduleDefinition.Name + " Version " + versions[i] + " On Tenant " + tenant.Name + " - " + ex.ToString();
} }
} }
} }

View File

@ -45,13 +45,20 @@ namespace Oqtane.Repository
Tenant tenant = _tenantManager.GetTenant(); Tenant tenant = _tenantManager.GetTenant();
if (tenant != null) if (tenant != null)
{ {
_connectionString = _config.GetConnectionString(tenant.DBConnectionString) _connectionString = _config.GetConnectionString(tenant.DBConnectionString);
.Replace($"|{Constants.DataDirectory}|", AppDomain.CurrentDomain.GetData(Constants.DataDirectory)?.ToString()); if (_connectionString != null)
_databaseType = tenant.DBType; {
_connectionString = _connectionString.Replace($"|{Constants.DataDirectory}|", AppDomain.CurrentDomain.GetData(Constants.DataDirectory)?.ToString());
_databaseType = tenant.DBType;
}
else
{
// tenant connection string does not exist in appsettings.json
}
} }
} }
if (!String.IsNullOrEmpty(_databaseType)) if (!string.IsNullOrEmpty(_databaseType))
{ {
var type = Type.GetType(_databaseType); var type = Type.GetType(_databaseType);
ActiveDatabase = Activator.CreateInstance(type) as IDatabase; ActiveDatabase = Activator.CreateInstance(type) as IDatabase;

View File

@ -93,7 +93,15 @@ namespace Oqtane.Repository
public int ExecuteNonQuery(string connectionString, string databaseType, string query) public int ExecuteNonQuery(string connectionString, string databaseType, string query)
{ {
var db = GetActiveDatabase(databaseType); var db = GetActiveDatabase(databaseType);
return db.ExecuteNonQuery(GetConnectionString(connectionString), query); var connectionstring = GetConnectionString(connectionString);
if (connectionstring != null)
{
return db.ExecuteNonQuery(GetConnectionString(connectionString), query);
}
else
{
return 0;
}
} }
public string GetScriptFromAssembly(Assembly assembly, string fileName) public string GetScriptFromAssembly(Assembly assembly, string fileName)