|
|
|
@@ -35,16 +35,11 @@ namespace Saxonite.Net.Core.Web.Admin.App
|
|
|
|
|
private Dictionary<String, SaxAppConfig> appConfigs = new Dictionary<string, SaxAppConfig>();
|
|
|
|
|
private Dictionary<String, SaxEmailConfig> emailConfigs = new Dictionary<string, SaxEmailConfig>();
|
|
|
|
|
// Session contexts.
|
|
|
|
|
private class SessionContextData
|
|
|
|
|
private class SessionContextData_Admin : SessionContextData_Web
|
|
|
|
|
{
|
|
|
|
|
public SessionContextData(SaxSessionContext_Web sessionContext)
|
|
|
|
|
{
|
|
|
|
|
SessionContext = sessionContext;
|
|
|
|
|
}
|
|
|
|
|
public SaxSessionContext_Web SessionContext { get; }
|
|
|
|
|
public ISacsDatabase CoreDatabase { get; set; }
|
|
|
|
|
public SessionContextData_Admin(SaxSessionContext_Web sessionContext) : base(sessionContext) { }
|
|
|
|
|
}
|
|
|
|
|
private readonly Dictionary<int, SessionContextData> sessionContexts = new Dictionary<int, SessionContextData>();
|
|
|
|
|
private readonly Dictionary<int, SessionContextData_Admin> sessionContexts = new Dictionary<int, SessionContextData_Admin>();
|
|
|
|
|
|
|
|
|
|
//-------------------------------------------------------------------
|
|
|
|
|
// Construction.
|
|
|
|
@@ -70,9 +65,9 @@ namespace Saxonite.Net.Core.Web.Admin.App
|
|
|
|
|
// Properties.
|
|
|
|
|
public static SaxApplication_Admin AppInstance { get; private set; }
|
|
|
|
|
public List<String> Messages { get; } = new List<String>();
|
|
|
|
|
public override ISacsDatabase GetCoreDatabase(SaxSessionContext sessionContext)
|
|
|
|
|
public override ISacsDatabase GetDatabase(SaxSessionContext sessionContext, Sax.Database databaseType)
|
|
|
|
|
{
|
|
|
|
|
return sessionContexts.GetValue(sessionContext.Index, null)?.CoreDatabase;
|
|
|
|
|
return sessionContexts.GetValue(sessionContext.Index, null)?.Databases.GetValue(databaseType, null);
|
|
|
|
|
}
|
|
|
|
|
public override String SessionCookieName { get { return Sax.Config.Admin.Session.Cookie.Name; } }
|
|
|
|
|
// Configuration.
|
|
|
|
@@ -131,26 +126,15 @@ namespace Saxonite.Net.Core.Web.Admin.App
|
|
|
|
|
SaLogger.LogFolder = LoggingRootFolder;
|
|
|
|
|
LogApplicationStart(fn);
|
|
|
|
|
|
|
|
|
|
//Messages.Add($"Database location: {AppConfig.CoreDatabase.Location}");
|
|
|
|
|
//Messages.Add($"LoggingRootFolder: {SaLogger.LogFolder}");
|
|
|
|
|
|
|
|
|
|
// Configure database connection.
|
|
|
|
|
SacsDatabaseConsole.OdbcConfig config = new SacsDatabaseConsole.OdbcConfig();
|
|
|
|
|
config.location = AppConfig.CoreDatabase.Location;
|
|
|
|
|
config.user = AppConfig.CoreDatabase.User;
|
|
|
|
|
config.pword = AppConfig.CoreDatabase.Password;
|
|
|
|
|
SacsDatabase coreDatabase = SacsDatabaseConsole.OpenOdbcDatabase(config);
|
|
|
|
|
if (coreDatabase.HasErrorState())
|
|
|
|
|
SaLogger.Warn(fn + " Database initialisation error: " + coreDatabase.ErrorStateMessage);
|
|
|
|
|
|
|
|
|
|
//Messages.Add($"Database location: {AppConfig.CoreDatabase.Location}");
|
|
|
|
|
//Messages.Add($"LoggingRootFolder: {SaLogger.LogFolder}");
|
|
|
|
|
//Messages.Add($"OdbcDrivers: {OdbcUtil.GetOdbcDriverNames().Concat(", ")}");
|
|
|
|
|
//Messages.Add($"DbConnection: {coreDatabase.ConnectionString}");
|
|
|
|
|
|
|
|
|
|
// Session context - only one context available/necessary (for now).
|
|
|
|
|
SessionContextData sessionContextData = new SessionContextData(new SaxSessionContext_Web(100, Sax.Application.Admin));
|
|
|
|
|
sessionContextData.CoreDatabase = coreDatabase;
|
|
|
|
|
SessionContextData_Admin sessionContextData = new SessionContextData_Admin(new SaxSessionContext_Web(100, Sax.Application.Admin));
|
|
|
|
|
ConfigureDatabaseConnection(sessionContextData, Sax.Database.Core);
|
|
|
|
|
ConfigureDatabaseConnection(sessionContextData, Sax.Database.Support);
|
|
|
|
|
sessionContexts.Add(sessionContextData.SessionContext.Index, sessionContextData);
|
|
|
|
|
SessionContext = sessionContextData.SessionContext;
|
|
|
|
|
}
|
|
|
|
@@ -161,22 +145,46 @@ namespace Saxonite.Net.Core.Web.Admin.App
|
|
|
|
|
|
|
|
|
|
// Occasional startup processing.
|
|
|
|
|
if (generateDatabaseDefinitions)
|
|
|
|
|
GenerateDatabaseDefinition(SessionContext);
|
|
|
|
|
GenerateDatabaseDefinitions(SessionContext);
|
|
|
|
|
if (populateRegions)
|
|
|
|
|
populateRegionsFromDataFile(SessionContext);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//-------------------------------------------------------------------
|
|
|
|
|
private void GenerateDatabaseDefinition(SaxSessionContext sessionContext)
|
|
|
|
|
private void ConfigureDatabaseConnection(SessionContextData_Admin sessionContextData, Sax.Database databaseInstance)
|
|
|
|
|
{
|
|
|
|
|
String fn = GetType().Name + ".ConfigureDatabaseConnection";
|
|
|
|
|
|
|
|
|
|
// Configure database connection.
|
|
|
|
|
SaxAppConfig.DatabaseConfig databaseConfig = AppConfig.Databases.Databases.GetValue(databaseInstance, new SaxAppConfig.DatabaseConfig());
|
|
|
|
|
SacsDatabaseConsole.OdbcConfig config = new SacsDatabaseConsole.OdbcConfig();
|
|
|
|
|
config.location = databaseConfig.Location;
|
|
|
|
|
config.user = databaseConfig.User;
|
|
|
|
|
config.pword = databaseConfig.Password;
|
|
|
|
|
SacsDatabase database = SacsDatabaseConsole.OpenOdbcDatabase(config);
|
|
|
|
|
if (database.HasErrorState())
|
|
|
|
|
SaLogger.Warn(fn + " " + databaseInstance.ToString() + " Database initialisation error: " + database.ErrorStateMessage);
|
|
|
|
|
sessionContextData.Databases.Add(databaseInstance, database);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//-------------------------------------------------------------------
|
|
|
|
|
private void GenerateDatabaseDefinitions(SaxSessionContext sessionContext)
|
|
|
|
|
{
|
|
|
|
|
// Generate database definitions.
|
|
|
|
|
if (!generateDatabaseDefinitions || !SaxSystem.DebugMode || SessionContext == null) return;
|
|
|
|
|
if (!StringUtil.EmptyOnNull(EnvironmentName).EqualsCI("Development")) return;
|
|
|
|
|
ISacsDatabase coreDatabase = GetCoreDatabase(sessionContext);
|
|
|
|
|
if (coreDatabase == null || StringUtil.IsEmpty(coreDatabase.ConnectionString)) return;
|
|
|
|
|
|
|
|
|
|
// Generate database definitions.
|
|
|
|
|
SaxDbDfnGenerator.Generate(SaxDbDfnGenerator.DatabaseInstance.Core, coreDatabase.ConnectionString);
|
|
|
|
|
//SaUpdateLogDbDfnGenerator.Generate(database.ConnectionString);
|
|
|
|
|
// Core database.
|
|
|
|
|
ISacsDatabase coreDatabase = GetDatabase(sessionContext, Sax.Database.Core);
|
|
|
|
|
if (coreDatabase != null && !StringUtil.IsEmpty(coreDatabase.ConnectionString))
|
|
|
|
|
{
|
|
|
|
|
SaxDbDfnGenerator.Generate(Sax.Database.Core, coreDatabase.ConnectionString);
|
|
|
|
|
//SaUpdateLogDbDfnGenerator.Generate(database.ConnectionString);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Support database.
|
|
|
|
|
ISacsDatabase supportDatabase = GetDatabase(sessionContext, Sax.Database.Support);
|
|
|
|
|
if (supportDatabase != null && !StringUtil.IsEmpty(supportDatabase.ConnectionString))
|
|
|
|
|
SaxDbDfnGenerator.Generate(Sax.Database.Support, supportDatabase.ConnectionString);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//-------------------------------------------------------------------
|
|
|
|
|