From 6a37e8d1f064c61a72430889bfd031e08e2355c9 Mon Sep 17 00:00:00 2001 From: 2ManyProjects Date: Mon, 5 May 2025 00:27:03 -0500 Subject: [PATCH] env and setting setup for cloud env --- backend/src/config.js | 27 ++++++++++++++++++++++++++- backend/src/routes/settingsAdmin.js | 14 ++++++++++++++ db/init/09-system-settings.sql | 8 +++++++- 3 files changed, 47 insertions(+), 2 deletions(-) diff --git a/backend/src/config.js b/backend/src/config.js index 35420cb..2e90be8 100644 --- a/backend/src/config.js +++ b/backend/src/config.js @@ -3,6 +3,7 @@ const dotenv = require('dotenv'); // Load environment variables dotenv.config(); + const config = { // Server configuration port: process.env.PORT || 4000, @@ -65,6 +66,13 @@ const config = { protocol: process.env.ENVIRONMENT === 'prod' ? 'https' : 'http', apiDomain: process.env.ENVIRONMENT === 'prod' ? (process.env.API_PROD_URL || 'api.rocks.2many.ca') : 'localhost:4000', analyticApiKey: process.env.SITE_ANALYTIC_API || '', + deployment: process.env.DEPLOYMENT_MODE || 'self-hosted', + redisHost: process.env.REDIS_HOST || '', + redisTLS: process.env.REDIS_TLS || '', + awsRegion: process.env.AWS_REGION || '', + awsS3Bucket: process.env.S3_BUCKET || '', + cdnDomain: process.env.CDN_DOMAIN || '', + awsqueueurl: process.env.SQS_QUEUE_URL || '', } }; @@ -146,7 +154,6 @@ config.updateFromDatabase = (settings) => { // Update carriers allowed if (carriersAllowed && carriersAllowed.value) config.shipping.carriersAllowed = carriersAllowed.value.split(','); } - // Update site settings if they exist in DB const siteSettings = settings.filter(s => s.category === 'site'); if (siteSettings.length > 0) { @@ -154,6 +161,24 @@ config.updateFromDatabase = (settings) => { const siteProtocol = siteSettings.find(s => s.key === 'site_protocol'); const siteApiDomain = siteSettings.find(s => s.key === 'site_api_domain'); const analyticApiKey = siteSettings.find(s => s.key === 'site_analytics_api_key'); + const redisHost = siteSettings.find(s => s.key === 'site_redis_host'); + const redisTLS = siteSettings.find(s => s.key === 'site_redis_tls'); + const awsRegion = siteSettings.find(s => s.key === 'site_aws_region'); + const awsS3Bucket = siteSettings.find(s => s.key === 'site_aws_s3_bucket'); + const cdnDomain = siteSettings.find(s => s.key === 'site_cdn_domain'); + const deployment = siteSettings.find(s => s.key === 'site_deployment'); + const awsqueueurl = siteSettings.find(s => s.key === 'site_aws_queue_url'); + + + if (redisHost && redisHost.value) config.site.redisHost = redisHost.value; + if (redisTLS && redisTLS.value) config.site.redisTLS = redisHost.value; + if (awsRegion && awsRegion.value) config.site.awsRegion = awsRegion.value; + if (awsS3Bucket && awsS3Bucket.value) config.site.awsS3Bucket = awsS3Bucket.value; + if (cdnDomain && cdnDomain.value) config.site.cdnDomain = cdnDomain.value; + if (deployment && deployment.value) config.site.deployment = deployment.value; + if (awsqueueurl && awsqueueurl.value) config.site.awsqueueurl = awsqueueurl.value; + + if (siteDomain && siteDomain.value) config.site.domain = siteDomain.value; if (siteProtocol && siteProtocol.value) config.site.protocol = siteProtocol.value; diff --git a/backend/src/routes/settingsAdmin.js b/backend/src/routes/settingsAdmin.js index 8eb1810..c06c813 100644 --- a/backend/src/routes/settingsAdmin.js +++ b/backend/src/routes/settingsAdmin.js @@ -260,6 +260,13 @@ module.exports = (pool, query, authMiddleware) => { if (key === 'site_api_domain') config.site.apiDomain = value; if (key === 'site_analytics_api_key') config.site.analyticApiKey = value; if (key === 'site_environment') config.environment = value; + if (key === 'site_deployment') config.site.deployment = value; + if (key === 'site_redis_host') config.site.redisHost = value; + if (key === 'site_redis_tls') config.site.redisTLS = value; + if (key === 'site_aws_region') config.site.awsRegion = value; + if (key === 'site_aws_s3_bucket') config.site.awsS3Bucket = value; + if (key === 'site_cdn_domain') config.site.cdnDomain = value; + if (key === 'site_aws_queue_url') config.site.awsqueueurl = value; } } @@ -340,6 +347,13 @@ module.exports = (pool, query, authMiddleware) => { envContent += `API_PROD_URL=${config.site.apiDomain === 'localhost:4000' ? '' : config.site.apiDomain}\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 const envPath = path.join(__dirname, '../../.env'); diff --git a/db/init/09-system-settings.sql b/db/init/09-system-settings.sql index 8af52b7..56a42b8 100644 --- a/db/init/09-system-settings.sql +++ b/db/init/09-system-settings.sql @@ -32,7 +32,13 @@ VALUES ('site_api_domain', NULL, 'site'), ('site_protocol', NULL, 'site'), ('site_environment', NULL, 'site'), - ('site_analytics_api_key', NULL, 'site'), + ('site_deployment', NULL, 'site'), + ('site_redis_host', NULL, 'site'), + ('site_redis_tls', NULL, 'site'), + ('site_aws_region', NULL, 'site'), + ('site_aws_s3_bucket', NULL, 'site'), + ('site_cdn_domain', NULL, 'site'), + ('site_aws_queue_url', NULL, 'site'), -- Payment Settings ('currency', 'CAD', 'payment'),