From 0db9d9683585f1ad4c8e84a4063e95f20b24b2ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A2u=20Cao?= Date: Mon, 5 May 2025 15:17:32 +0400 Subject: [PATCH] Refactor database configs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Move postgres credentials to ENV vars * Allow postgres in development * Allow SQlite in production * Refactor optional lndhub db config Co-authored-by: Greg Karékinian --- .env.example | 9 ++++++ config/credentials.yml.enc | 2 +- config/database.yml | 56 +++++++++++++++++++++----------------- 3 files changed, 41 insertions(+), 26 deletions(-) diff --git a/.env.example b/.env.example index 438b759..92401ea 100644 --- a/.env.example +++ b/.env.example @@ -1,6 +1,15 @@ # PRIMARY_DOMAIN=kosmos.org # AKKOUNTS_DOMAIN=accounts.example.com +# The default backend is SQLite +# DB_ADAPTER=postgresql +# PG_HOST=localhost +# PG_PORT=5432 +# PG_DATABASE=akkounts +# PG_DATABASE_QUEUE=akkounts_queue +# PG_USERNAME=akkounts +# PG_PASSWORD= + # SMTP_SERVER=smtp.example.com # SMTP_PORT=587 # SMTP_LOGIN=accounts diff --git a/config/credentials.yml.enc b/config/credentials.yml.enc index de77871..49e6d9e 100644 --- a/config/credentials.yml.enc +++ b/config/credentials.yml.enc @@ -1 +1 @@ -tmI5vm7qZhaigr52jEBVWkRdj+EE+9OmPh3vWXC7kA/OHuuucpr7SodychuMkQDPLM0BLk88LFsqvRIR+mqnLWpRC+P9aeUFE6ohxSWzcAd7Y4sgxUD8zpCRPndrwTw0hxXXj1WZSYeWn4BoAB34aV+gYen2MajZF3a95hJGtS5yjgWxvLVkQQKqRDfykkfX6fCS0BPo5X7sT7m4xwCATD/D4219wajm5W3TIdkriHtwt28ZLspaRWA5e0UkzKf8+/Gaj2CrW7UWcvew8R93zQ5RA2/Sp3sDTVN+kLz9I9Q095lQC0ywCAEFYHeKmc2tjrzqRaAAWu06xmWLqGIg21G+A/UU9lUJOkIpxQACWoOfS2IoXR1nXhgXMopkz3aCBXDxKw554v4H2QyOceOsuRf2C685ibMqzQkKMmJ4tcbiOJL77DUc08JTjB8Dq4Ohr8sMzXbV/hATevjYoRP0XarLekqhLv90ZLuIVY16DwB0CzACeNBKeKbeLqJF51upRRWgi+gTbYpV04yUwnXdyssF8mydWocgihrTryBi8F6PsuhBGcaYdP+0yibnGxDCC4x2rupbBfMj2OIX7pYzgtIHB3Eo954Y+bCoggqbE/Qrb9VVXNMgtKgLt8EGWU2tg6wl9QicitIq87uLDAade93zTn6rmcKPywjMDo6jbVIs653ZdUhiKdHGdpnJccbgQ/iLSPB1umNnCeaEX5jM+K9zBvl7ZMCdSk1YIQ==--ekKumqLiSlVJNwMe--K/ecXmmMT1x+WnIXMbHBDw== \ No newline at end of file +zaTF2ZJaU/M9CYmXEJoDmS1oniSV/1YT0UnM1jysEhMknn3bYOzRBZM3eGJ5Mr6bJYz6cv5hSDL5pT0/6hqgpV04dc/fVDplWO4eEpD1kBFM3LjIPCe9REbRlRUwODpoV/y6wWOFme8nFMS9uOSFkL6RtMuQli0os5Rp+2Jal2lJwAujFjFwuuj+1iRzqc3pzeIIy0clPmR9ANxXS+rPL3jmxty6QzVMr9Q658roVD38yRg0CNgs09eZ/FvqeqXlQkwDfg2/zX9tg5ocGwvHzmicZJ/yU6kl6liqNAJvEDrolm0gSzemY8NfhCySd5wjEvpP+uvKxbd5M3rhagC8S9MmpmxewuOKbDFEyTSRO6Kp2yakdcLSn12ZPB+X0nlMRno+UEzh0EvcX2mxRXppIKrsRUGVeYmj4GMI0vyLW1eCuyPLueN7sOnSjhtM84URNWkSnb0LTxlYxOJGbnwzn85QVpFdXtDktbaXvMWcVdH9XdMDbaBs1G7BIA6Z8i+mxLVVEbQWQM6VBrUhpkpWfphLmN5b16LYbGTzdKnR0iPcsNr8Tsl8vYfeWH8S0ujD105lS39v37YimN6E5l4X2CrqG+DNBtKfbqC0E3lhZMqDRWetxzaxE47oe4g=--0EKrvwe2YTfsbssz--SbmUH0sMiy5uUhpxFImgMA== \ No newline at end of file diff --git a/config/database.yml b/config/database.yml index 339760c..782a22d 100644 --- a/config/database.yml +++ b/config/database.yml @@ -1,25 +1,37 @@ default: &default - adapter: sqlite3 + adapter: <%= ENV["DB_ADAPTER"] || "sqlite3" %> pool: <%= ENV["DB_POOL"] || ENV['MAX_THREADS'] || 5 %> timeout: 5000 +<% if ENV["DB_ADAPTER"] == "postgresql" %> + host: <%= ENV["PG_HOST"] || 'localhost' %> + port: <%= ENV["PG_PORT"] || 5432 %> + username: <%= ENV["PG_USERNAME"] || 'akkounts' %> + password: <%= ENV["PG_PASSWORD"] %> +<% end %> + +<% if ENV["LNDHUB_PG_HOST"].present? %> +lndhub: &lndhub + adapter: postgresql + database_tasks: false + host: <%= ENV["LNDHUB_PG_HOST"] %> + port: <%= ENV["LNDHUB_PG_PORT"] || 5432 %> + database: <%= ENV["LNDHUB_PG_DATABASE"] || 'lndhub' %> + username: <%= ENV["LNDHUB_PG_USERNAME"] || 'lndhub' %> + password: <%= ENV["LNDHUB_PG_PASSWORD"] %> +<% end %> development: primary: <<: *default - database: db/development.sqlite3 + database: <%= ENV["DB_ADAPTER"] == "postgresql" ? ENV["PG_DATABASE"] : "db/development.sqlite3" %> queue: <<: *default - database: db/development_queue.sqlite3 + database: <%= ENV["DB_ADAPTER"] == "postgresql" ? ENV["PG_DATABASE_QUEUE"] : "db/development_queue.sqlite3" %> migrations_paths: db/queue_migrate +<% if ENV["LNDHUB_PG_HOST"].present? %> lndhub: - <<: *default - adapter: postgresql - database_tasks: false - host: <%= ENV["LNDHUB_PG_HOST"] || 'localhost' %> - port: <%= ENV["LNDHUB_PG_PORT"] || 5432 %> - database: <%= ENV["LNDHUB_PG_DATABASE"] || 'lndhub' %> - username: <%= ENV["LNDHUB_PG_USERNAME"] || 'lndhub' %> - password: <%= ENV["LNDHUB_PG_PASSWORD"] %> + <<: *lndhub +<% end %> # Warning: The database defined as "test" will be erased and # re-generated from your development database when you run "rake". @@ -36,18 +48,12 @@ test: production: primary: <<: *default - adapter: postgresql - database: akkounts - port: 5432 - host: <%= Rails.application.credentials.postgres[:host] rescue nil %> - username: <%= Rails.application.credentials.postgres[:username] rescue nil %> - password: <%= Rails.application.credentials.postgres[:password] rescue nil %> - lndhub: + database: <%= ENV["DB_ADAPTER"] == "postgresql" ? ENV["PG_DATABASE"] : "db/production.sqlite3" %> + queue: <<: *default - adapter: postgresql - database_tasks: false - host: <%= ENV["LNDHUB_PG_HOST"] || 'localhost' %> - port: <%= ENV["LNDHUB_PG_PORT"] || 5432 %> - database: <%= ENV["LNDHUB_PG_DATABASE"] || 'lndhub' %> - username: <%= ENV["LNDHUB_PG_USERNAME"] || 'lndhub' %> - password: <%= ENV["LNDHUB_PG_PASSWORD"] %> + database: <%= ENV["DB_ADAPTER"] == "postgresql" ? ENV["PG_DATABASE_QUEUE"] : "db/production_queue.sqlite3" %> + migrations_paths: db/queue_migrate +<% if ENV["LNDHUB_PG_HOST"].present? %> + lndhub: + <<: *lndhub +<% end %>