cloud settings

This commit is contained in:
2ManyProjects 2025-05-05 01:24:50 -05:00
parent 6a37e8d1f0
commit d2f0d9767b
3 changed files with 44 additions and 14 deletions

View file

@ -16,7 +16,9 @@ const config = {
user: process.env.DB_USER || 'postgres', user: process.env.DB_USER || 'postgres',
password: process.env.DB_PASSWORD || 'postgres', password: process.env.DB_PASSWORD || 'postgres',
database: process.env.DB_NAME || 'ecommerce', database: process.env.DB_NAME || 'ecommerce',
port: process.env.DB_PORT || 5432 port: process.env.DB_PORT || 5432,
readHost: process.env.DB_READ_HOST || process.env.DB_HOST || 'db',
maxConnections: parseInt(process.env.DB_MAX_CONNECTIONS || '20'),
}, },
// Email configuration // Email configuration
@ -72,7 +74,10 @@ const config = {
awsRegion: process.env.AWS_REGION || '', awsRegion: process.env.AWS_REGION || '',
awsS3Bucket: process.env.S3_BUCKET || '', awsS3Bucket: process.env.S3_BUCKET || '',
cdnDomain: process.env.CDN_DOMAIN || '', cdnDomain: process.env.CDN_DOMAIN || '',
awsqueueurl: process.env.SQS_QUEUE_URL || '', awsQueueUrl: process.env.SQS_QUEUE_URL || '',
sessionSecret: process.env.SESSION_SECRET || '',
redisPort: process.env.REDIS_PORT || '',
redisPassword: process.env.REDIS_PASSWORD || ''
} }
}; };
@ -167,8 +172,12 @@ config.updateFromDatabase = (settings) => {
const awsS3Bucket = siteSettings.find(s => s.key === 'site_aws_s3_bucket'); const awsS3Bucket = siteSettings.find(s => s.key === 'site_aws_s3_bucket');
const cdnDomain = siteSettings.find(s => s.key === 'site_cdn_domain'); const cdnDomain = siteSettings.find(s => s.key === 'site_cdn_domain');
const deployment = siteSettings.find(s => s.key === 'site_deployment'); const deployment = siteSettings.find(s => s.key === 'site_deployment');
const awsqueueurl = siteSettings.find(s => s.key === 'site_aws_queue_url'); const awsQueueUrl = siteSettings.find(s => s.key === 'site_aws_queue_url');
const readHost = siteSettings.find(s => s.key === 'site_read_host');
const maxConnections = siteSettings.find(s => s.key === 'site_db_max_connections');
const sessionSecret = siteSettings.find(s => s.key === 'site_session_secret');
const redisPort = siteSettings.find(s => s.key === 'site_redis_port');
const redisPassword = siteSettings.find(s => s.key === 'site_redis_password');
if (redisHost && redisHost.value) config.site.redisHost = redisHost.value; if (redisHost && redisHost.value) config.site.redisHost = redisHost.value;
if (redisTLS && redisTLS.value) config.site.redisTLS = redisHost.value; if (redisTLS && redisTLS.value) config.site.redisTLS = redisHost.value;
@ -176,7 +185,12 @@ config.updateFromDatabase = (settings) => {
if (awsS3Bucket && awsS3Bucket.value) config.site.awsS3Bucket = awsS3Bucket.value; if (awsS3Bucket && awsS3Bucket.value) config.site.awsS3Bucket = awsS3Bucket.value;
if (cdnDomain && cdnDomain.value) config.site.cdnDomain = cdnDomain.value; if (cdnDomain && cdnDomain.value) config.site.cdnDomain = cdnDomain.value;
if (deployment && deployment.value) config.site.deployment = deployment.value; if (deployment && deployment.value) config.site.deployment = deployment.value;
if (awsqueueurl && awsqueueurl.value) config.site.awsqueueurl = awsqueueurl.value; if (awsQueueUrl && awsQueueUrl.value) config.site.awsQueueUrl = awsQueueUrl.value;
if (readHost && readHost.value) config.db.readHost = readHost.value;
if (maxConnections && maxConnections.value) config.db.maxConnections = maxConnections.value;
if (sessionSecret && sessionSecret.value) config.site.sessionSecret = sessionSecret.value;
if (redisPort && redisPort.value) config.site.redisPort = redisPort.value;
if (redisPassword && redisPassword.value) config.site.redisPassword = redisPassword.value;

View file

@ -224,9 +224,11 @@ module.exports = (pool, query, authMiddleware) => {
} else if (category === 'database') { } else if (category === 'database') {
if (key === 'db_host') config.db.host = value; if (key === 'db_host') config.db.host = value;
if (key === 'db_user') config.db.user = value; if (key === 'db_user') config.db.user = value;
if (key === 'site_read_host') config.db.readHost = value;
if (key === 'db_password') config.db.password = value; if (key === 'db_password') config.db.password = value;
if (key === 'db_name') config.db.database = value; if (key === 'db_name') config.db.database = value;
if (key === 'db_port') config.db.port = parseInt(value, 10); if (key === 'db_port') config.db.port = parseInt(value, 10);
if (key === 'site_db_max_connections') config.db.maxConnections = parseInt(value, 10);
} else if (category === 'email') { } else if (category === 'email') {
if (key === 'smtp_host') config.email.host = value; if (key === 'smtp_host') config.email.host = value;
if (key === 'smtp_port') config.email.port = parseInt(value, 10); if (key === 'smtp_port') config.email.port = parseInt(value, 10);
@ -266,7 +268,11 @@ module.exports = (pool, query, authMiddleware) => {
if (key === 'site_aws_region') config.site.awsRegion = value; if (key === 'site_aws_region') config.site.awsRegion = value;
if (key === 'site_aws_s3_bucket') config.site.awsS3Bucket = value; if (key === 'site_aws_s3_bucket') config.site.awsS3Bucket = value;
if (key === 'site_cdn_domain') config.site.cdnDomain = value; if (key === 'site_cdn_domain') config.site.cdnDomain = value;
if (key === 'site_aws_queue_url') config.site.awsqueueurl = value; if (key === 'site_aws_queue_url') config.site.awsQueueUrl = value;
if (key === 'site_session_secret') config.site.sessionSecret = value;
if (key === 'site_redis_port') config.site.redisPort = value;
if (key === 'site_redis_password') config.site.redisPassword = value;
} }
} }
@ -288,15 +294,27 @@ module.exports = (pool, query, authMiddleware) => {
envContent += '# Server configuration\n'; envContent += '# Server configuration\n';
envContent += `PORT=${config.port}\n`; envContent += `PORT=${config.port}\n`;
envContent += `NODE_ENV=${config.nodeEnv}\n`; envContent += `NODE_ENV=${config.nodeEnv}\n`;
envContent += `ENVIRONMENT=${config.environment}\n\n`; envContent += `ENVIRONMENT=${config.environment}\n`;
envContent += `DEPLOYMENT_MODE=${config.site.deployment}\n`;
envContent += `REDIS_HOST=${config.site.redisHost}\n`;
envContent += `REDIS_TLS=${config.site.redisTLS}\n`;
envContent += `REDIS_PORT=${config.site.redisPort}\n`;
envContent += `REDIS_PASSWORD=${config.site.redisPassword}\n`;
envContent += `AWS_REGION=${config.site.awsRegion}\n`;
envContent += `S3_BUCKET=${config.site.awsS3Bucket}\n`;
envContent += `CDN_DOMAIN=${config.site.cdnDomain}\n`;
envContent += `SQS_QUEUE_URL=${config.site.awsQueueUrl}\n`;
envContent += `SESSION_SECRET=${config.site.sessionSecret}\n\n`;
// Database configuration // Database configuration
envContent += '# Database configuration\n'; envContent += '# Database configuration\n';
envContent += `DB_HOST=${config.db.host}\n`; envContent += `DB_HOST=${config.db.host}\n`;
envContent += `DB_READ_HOST=${config.db.readHost}\n`;
envContent += `DB_USER=${config.db.user}\n`; envContent += `DB_USER=${config.db.user}\n`;
envContent += `DB_PASSWORD=${config.db.password}\n`; envContent += `DB_PASSWORD=${config.db.password}\n`;
envContent += `DB_NAME=${config.db.database}\n`; envContent += `DB_NAME=${config.db.database}\n`;
envContent += `DB_PORT=${config.db.port}\n`; envContent += `DB_PORT=${config.db.port}\n`;
envContent += `DB_MAX_CONNECTIONS=${config.db.maxConnections}\n`;
envContent += `POSTGRES_USER=${config.db.user}\n`; envContent += `POSTGRES_USER=${config.db.user}\n`;
envContent += `POSTGRES_PASSWORD=${config.db.password}\n`; envContent += `POSTGRES_PASSWORD=${config.db.password}\n`;
envContent += `POSTGRES_DB=${config.db.database}\n\n`; envContent += `POSTGRES_DB=${config.db.database}\n\n`;
@ -347,13 +365,6 @@ module.exports = (pool, query, authMiddleware) => {
envContent += `API_PROD_URL=${config.site.apiDomain === 'localhost:4000' ? '' : config.site.apiDomain}\n`; envContent += `API_PROD_URL=${config.site.apiDomain === 'localhost:4000' ? '' : config.site.apiDomain}\n`;
} }
envContent += `SITE_ANALYTIC_API=${config.site.analyticApiKey}\n`; envContent += `SITE_ANALYTIC_API=${config.site.analyticApiKey}\n`;
envContent += `DEPLOYMENT_MODE=${config.site.deployment}\n`;
envContent += `REDIS_HOST=${config.site.redisHost}\n`;
envContent += `REDIS_TLS=${config.site.redisTLS}\n`;
envContent += `AWS_REGION=${config.site.awsRegion}\n`;
envContent += `S3_BUCKET=${config.site.awsS3Bucket}\n`;
envContent += `CDN_DOMAIN=${config.site.cdnDomain}\n`;
envContent += `SQS_QUEUE_URL=${config.site.awsqueueurl}\n`;
// Write to .env file // Write to .env file
const envPath = path.join(__dirname, '../../.env'); const envPath = path.join(__dirname, '../../.env');

View file

@ -39,6 +39,11 @@ VALUES
('site_aws_s3_bucket', NULL, 'site'), ('site_aws_s3_bucket', NULL, 'site'),
('site_cdn_domain', NULL, 'site'), ('site_cdn_domain', NULL, 'site'),
('site_aws_queue_url', NULL, 'site'), ('site_aws_queue_url', NULL, 'site'),
('site_read_host', NULL, 'site'),
('site_db_max_connections', NULL, 'site'),
('site_session_secret', NULL, 'site'),
('site_redis_port', NULL, 'site'),
('site_redis_password', NULL, 'site'),
-- Payment Settings -- Payment Settings
('currency', 'CAD', 'payment'), ('currency', 'CAD', 'payment'),