Consolidate documentation and update backend services
- Reorganize docs into 'Core deployment guides' and 'Setup and configuration' subdirectories - Consolidate redundant documentation files (ACR, pipelines, deployment guides) - Add documentation consolidation plan - Update backend database factory and logger services - Update migration script and docker-compose configurations - Add PostgreSQL setup script
This commit is contained in:
@@ -17,6 +17,8 @@ const __filename = fileURLToPath(import.meta.url);
|
||||
const __dirname = dirname(__filename);
|
||||
|
||||
const SQLITE_CACHE_DB = join(__dirname, '../../data/cmdb-cache.db');
|
||||
// Note: Legacy support - old SQLite setups may have had separate classifications.db file
|
||||
// Current setup uses a single database file for all data
|
||||
const SQLITE_CLASSIFICATIONS_DB = join(__dirname, '../../data/classifications.db');
|
||||
|
||||
async function migrate() {
|
||||
|
||||
@@ -27,7 +27,7 @@ export function createDatabaseAdapter(dbType?: string, dbPath?: string, allowClo
|
||||
// Try to construct from individual components
|
||||
const host = process.env.DATABASE_HOST || 'localhost';
|
||||
const port = process.env.DATABASE_PORT || '5432';
|
||||
const name = process.env.DATABASE_NAME || 'cmdb';
|
||||
const name = process.env.DATABASE_NAME || 'cmdb_insight';
|
||||
const user = process.env.DATABASE_USER || 'cmdb';
|
||||
const password = process.env.DATABASE_PASSWORD || '';
|
||||
// Azure PostgreSQL requires SSL - always use sslmode=require for Azure
|
||||
@@ -51,35 +51,12 @@ export function createDatabaseAdapter(dbType?: string, dbPath?: string, allowClo
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a database adapter for the classifications database
|
||||
* Create a database adapter for classifications and session state
|
||||
*
|
||||
* Uses the same database as the main cache. All data (CMDB cache,
|
||||
* classification history, and session state) is stored in a single database.
|
||||
*/
|
||||
export function createClassificationsDatabaseAdapter(): DatabaseAdapter {
|
||||
const type = process.env.DATABASE_TYPE || 'sqlite';
|
||||
const databaseUrl = process.env.CLASSIFICATIONS_DATABASE_URL || process.env.DATABASE_URL;
|
||||
|
||||
if (type === 'postgres' || type === 'postgresql') {
|
||||
if (!databaseUrl) {
|
||||
// Try to construct from individual components
|
||||
const host = process.env.DATABASE_HOST || 'localhost';
|
||||
const port = process.env.DATABASE_PORT || '5432';
|
||||
const name = process.env.CLASSIFICATIONS_DATABASE_NAME || process.env.DATABASE_NAME || 'cmdb';
|
||||
const user = process.env.DATABASE_USER || 'cmdb';
|
||||
const password = process.env.DATABASE_PASSWORD || '';
|
||||
// Azure PostgreSQL requires SSL - always use sslmode=require for Azure
|
||||
const isAzure = host.includes('.postgres.database.azure.com');
|
||||
const ssl = (process.env.DATABASE_SSL === 'true' || isAzure) ? '?sslmode=require' : '';
|
||||
|
||||
const constructedUrl = `postgresql://${user}:${password}@${host}:${port}/${name}${ssl}`;
|
||||
logger.info('Creating PostgreSQL adapter for classifications with constructed connection string');
|
||||
return new PostgresAdapter(constructedUrl);
|
||||
}
|
||||
|
||||
logger.info('Creating PostgreSQL adapter for classifications');
|
||||
return new PostgresAdapter(databaseUrl);
|
||||
}
|
||||
|
||||
// Default to SQLite
|
||||
const defaultPath = join(__dirname, '../../data/classifications.db');
|
||||
logger.info(`Creating SQLite adapter for classifications with path: ${defaultPath}`);
|
||||
return new SqliteAdapter(defaultPath);
|
||||
// Always use the same database adapter as the main cache
|
||||
return createDatabaseAdapter();
|
||||
}
|
||||
|
||||
@@ -34,7 +34,16 @@ export const logger = winston.createLogger({
|
||||
|
||||
// Only add file logging if we're in production AND have write permissions
|
||||
// In Azure App Service, console logging is automatically captured, so file logging is optional
|
||||
if (config.isProduction && !process.env.AZURE_APP_SERVICE) {
|
||||
|
||||
// Detect Azure App Service environment
|
||||
const isAzureAppService = !!(
|
||||
process.env.AZURE_APP_SERVICE ||
|
||||
process.env.WEBSITE_SITE_NAME ||
|
||||
process.env.WEBSITE_INSTANCE_ID ||
|
||||
process.env.AzureWebJobsStorage
|
||||
);
|
||||
|
||||
if (config.isProduction && !isAzureAppService) {
|
||||
// For non-Azure environments, try to use logs/ directory
|
||||
const logDir = path.join(__dirname, '../../logs');
|
||||
|
||||
|
||||
Reference in New Issue
Block a user