From f5c54bb94550dc3bebd41955fa73245012bf81e4 Mon Sep 17 00:00:00 2001 From: ArnabChatterjee20k Date: Wed, 21 May 2025 17:36:50 +0530 Subject: [PATCH] added _APP_DB_ADAPTER --- .env | 2 +- .github/workflows/tests.yml | 6 +-- app/config/variables.php | 2 +- app/init/registers.php | 20 +++++-- app/views/install/compose.phtml | 38 ++++++------- docker-compose.yml | 72 ++++++++++++------------- src/Appwrite/Platform/Tasks/Install.php | 12 +---- src/Appwrite/Platform/Tasks/Upgrade.php | 2 +- 8 files changed, 78 insertions(+), 76 deletions(-) diff --git a/.env b/.env index b6418840a6..c916cf0db6 100644 --- a/.env +++ b/.env @@ -32,7 +32,7 @@ _APP_REDIS_HOST=redis _APP_REDIS_PORT=6379 _APP_REDIS_PASS= _APP_REDIS_USER= -_APP_DB_SCHEME=mariadb +_APP_DB_ADAPTER=mariadb _APP_DB_HOST=mariadb _APP_DB_PORT=3306 _APP_DB_SCHEMA=appwrite diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 1bd05808dc..cfa8182ac3 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -203,12 +203,12 @@ jobs: # Set DB Adapter Specific ENV Vars using if-elif if [ "${{ matrix.db_adapter }}" = "MARIADB" ]; then - export _APP_DB_SCHEME=mariadb + export _APP_DB_ADAPTER=mariadb export _APP_DB_HOST=mariadb export _APP_DB_PORT=3306 export _APP_DB_SCHEMA=appwrite elif [ "${{ matrix.db_adapter }}" = "POSTGRESQL" ]; then - export _APP_DB_SCHEME=postgresql + export _APP_DB_ADAPTER=postgresql export _APP_DB_HOST=postgresql export _APP_DB_PORT=5432 export _APP_DB_SCHEMA=appwrite @@ -220,7 +220,7 @@ jobs: docker compose exec -T \ -e _APP_DATABASE_SHARED_TABLES \ -e _APP_DATABASE_SHARED_TABLES_V1 \ - -e _APP_DB_SCHEME \ + -e _APP_DB_ADAPTER \ -e _APP_DB_HOST \ -e _APP_DB_PORT \ -e _APP_DB_SCHEMA \ diff --git a/app/config/variables.php b/app/config/variables.php index 941b41f4c2..d6b8069f13 100644 --- a/app/config/variables.php +++ b/app/config/variables.php @@ -332,7 +332,7 @@ return [ 'filter' => '' ], [ - 'name' => '_APP_DB_SCHEME', + 'name' => '_APP_DB_ADAPTER', 'description' => 'To switch between mariadb and postgresql', 'introduction' => '1.6.0', 'default' => 'mariadb', diff --git a/app/init/registers.php b/app/init/registers.php index 8c293628e3..883c4f66bb 100644 --- a/app/init/registers.php +++ b/app/init/registers.php @@ -101,7 +101,7 @@ $register->set('pools', function () { $group = new Group(); $fallbackForDB = 'db_main=' . AppwriteURL::unparse([ - 'scheme' => System::getEnv('_APP_DB_SCHEME', 'mariadb'), + 'scheme' => System::getEnv('_APP_DB_ADAPTER', 'mariadb'), 'host' => System::getEnv('_APP_DB_HOST', 'mariadb'), 'port' => System::getEnv('_APP_DB_PORT', '3306'), 'user' => System::getEnv('_APP_DB_USER', ''), @@ -300,10 +300,20 @@ $register->set('db', function () { $dbUser = System::getEnv('_APP_DB_USER', ''); $dbPass = System::getEnv('_APP_DB_PASS', ''); $dbSchema = System::getEnv('_APP_DB_SCHEMA', ''); - $dbScheme = System::getEnv('_APP_DB_SCHEME', 'mariadb'); - $dsn = ($dbScheme === 'postgresql') - ? "pgsql:host={$dbHost};port={$dbPort};dbname={$dbSchema}" - : "mysql:host={$dbHost};port={$dbPort};dbname={$dbSchema};charset=utf8mb4"; + $dbAdapter = System::getEnv('_APP_DB_ADAPTER', 'mariadb'); + $dsn = ''; + + switch ($dbAdapter) { + case 'postgresql': + $dsn = "pgsql:host={$dbHost};port={$dbPort};dbname={$dbSchema}"; + break; + + case 'mysql': + case 'mariadb': + default: + $dsn = "mysql:host={$dbHost};port={$dbPort};dbname={$dbSchema};charset=utf8mb4"; + break; + } return new PDO( diff --git a/app/views/install/compose.phtml b/app/views/install/compose.phtml index b916849137..6012e095ad 100644 --- a/app/views/install/compose.phtml +++ b/app/views/install/compose.phtml @@ -106,7 +106,7 @@ $dbService = $this->getParam('database'); - _APP_DB_SCHEMA - _APP_DB_USER - _APP_DB_PASS - - _APP_DB_SCHEME + - _APP_DB_ADAPTER - _APP_SMTP_HOST - _APP_SMTP_PORT - _APP_SMTP_SECURE @@ -224,7 +224,7 @@ $dbService = $this->getParam('database'); - redis - environment: - - _APP_DB_SCHEME + - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPTIONS_ABUSE @@ -254,7 +254,7 @@ $dbService = $this->getParam('database'); - redis - environment: - - _APP_DB_SCHEME + - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -281,7 +281,7 @@ $dbService = $this->getParam('database'); - redis - environment: - - _APP_DB_SCHEME + - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -317,7 +317,7 @@ $dbService = $this->getParam('database'); - appwrite-builds:/storage/builds:rw - appwrite-certificates:/storage/certificates:rw environment: - - _APP_DB_SCHEME + - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -374,7 +374,7 @@ $dbService = $this->getParam('database'); - redis - environment: - - _APP_DB_SCHEME + - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -406,7 +406,7 @@ $dbService = $this->getParam('database'); - appwrite-builds:/storage/builds:rw - appwrite-uploads:/storage/uploads:rw environment: - - _APP_DB_SCHEME + - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -473,7 +473,7 @@ $dbService = $this->getParam('database'); - appwrite-config:/storage/config:rw - appwrite-certificates:/storage/certificates:rw environment: - - _APP_DB_SCHEME + - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -507,7 +507,7 @@ $dbService = $this->getParam('database'); - - openruntimes-executor environment: - - _APP_DB_SCHEME + - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -546,7 +546,7 @@ $dbService = $this->getParam('database'); - redis - environment: - - _APP_DB_SCHEME + - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -584,7 +584,7 @@ $dbService = $this->getParam('database'); - redis - environment: - - _APP_DB_SCHEME + - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -636,7 +636,7 @@ $dbService = $this->getParam('database'); depends_on: - environment: - - _APP_DB_SCHEME + - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -670,7 +670,7 @@ $dbService = $this->getParam('database'); - redis - environment: - - _APP_DB_SCHEME + - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_DOMAIN @@ -709,7 +709,7 @@ $dbService = $this->getParam('database'); - redis - environment: - - _APP_DB_SCHEME + - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -739,7 +739,7 @@ $dbService = $this->getParam('database'); - redis - environment: - - _APP_DB_SCHEME + - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -768,7 +768,7 @@ $dbService = $this->getParam('database'); - redis - environment: - - _APP_DB_SCHEME + - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -797,7 +797,7 @@ $dbService = $this->getParam('database'); - - redis environment: - - _APP_DB_SCHEME + - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -823,7 +823,7 @@ $dbService = $this->getParam('database'); - - redis environment: - - _APP_DB_SCHEME + - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -849,7 +849,7 @@ $dbService = $this->getParam('database'); - - redis environment: - - _APP_DB_SCHEME + - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 diff --git a/docker-compose.yml b/docker-compose.yml index 7d903c2996..1d8643309a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -88,7 +88,7 @@ services: - ./dev:/usr/src/code/dev - ./.env:/usr/src/code/.env depends_on: - - ${_APP_DB_SCHEME:-mariadb} + - ${_APP_DB_ADAPTER:-mariadb} - redis # - clamav entrypoint: @@ -96,7 +96,7 @@ services: - -e - app/http.php environment: - - _APP_DB_SCHEME + - _APP_DB_ADAPTER - _APP_ENV - _APP_EDITION - _APP_WORKER_PER_CORE @@ -262,10 +262,10 @@ services: - ./app:/usr/src/code/app - ./src:/usr/src/code/src depends_on: - - ${_APP_DB_SCHEME:-mariadb} + - ${_APP_DB_ADAPTER:-mariadb} - redis environment: - - _APP_DB_SCHEME + - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPTIONS_ABUSE @@ -296,9 +296,9 @@ services: - ./src:/usr/src/code/src depends_on: - redis - - ${_APP_DB_SCHEME:-mariadb} + - ${_APP_DB_ADAPTER:-mariadb} environment: - - _APP_DB_SCHEME + - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -326,10 +326,10 @@ services: - ./src:/usr/src/code/src depends_on: - redis - - ${_APP_DB_SCHEME:-mariadb} + - ${_APP_DB_ADAPTER:-mariadb} - request-catcher environment: - - _APP_DB_SCHEME + - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -356,7 +356,7 @@ services: - appwrite depends_on: - redis - - ${_APP_DB_SCHEME:-mariadb} + - ${_APP_DB_ADAPTER:-mariadb} volumes: - appwrite-uploads:/storage/uploads:rw - appwrite-cache:/storage/cache:rw @@ -367,7 +367,7 @@ services: - ./app:/usr/src/code/app - ./src:/usr/src/code/src environment: - - _APP_DB_SCHEME + - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -423,9 +423,9 @@ services: - ./src:/usr/src/code/src depends_on: - redis - - ${_APP_DB_SCHEME:-mariadb} + - ${_APP_DB_ADAPTER:-mariadb} environment: - - _APP_DB_SCHEME + - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -459,9 +459,9 @@ services: - ./src:/usr/src/code/src depends_on: - redis - - ${_APP_DB_SCHEME:-mariadb} + - ${_APP_DB_ADAPTER:-mariadb} environment: - - _APP_DB_SCHEME + - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -525,14 +525,14 @@ services: - appwrite depends_on: - redis - - ${_APP_DB_SCHEME:-mariadb} + - ${_APP_DB_ADAPTER:-mariadb} volumes: - appwrite-config:/storage/config:rw - appwrite-certificates:/storage/certificates:rw - ./app:/usr/src/code/app - ./src:/usr/src/code/src environment: - - _APP_DB_SCHEME + - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -566,10 +566,10 @@ services: - ./src:/usr/src/code/src depends_on: - redis - - ${_APP_DB_SCHEME:-mariadb} + - ${_APP_DB_ADAPTER:-mariadb} - openruntimes-executor environment: - - _APP_DB_SCHEME + - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -613,7 +613,7 @@ services: - maildev # - smtp environment: - - _APP_DB_SCHEME + - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -648,7 +648,7 @@ services: depends_on: - redis environment: - - _APP_DB_SCHEME + - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -703,9 +703,9 @@ services: - ./src:/usr/src/code/src - ./tests:/usr/src/code/tests depends_on: - - ${_APP_DB_SCHEME:-mariadb} + - ${_APP_DB_ADAPTER:-mariadb} environment: - - _APP_DB_SCHEME + - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -741,7 +741,7 @@ services: depends_on: - redis environment: - - _APP_DB_SCHEME + - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_DOMAIN @@ -782,9 +782,9 @@ services: - ./src:/usr/src/code/src depends_on: - redis - - ${_APP_DB_SCHEME:-mariadb} + - ${_APP_DB_ADAPTER:-mariadb} environment: - - _APP_DB_SCHEME + - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -814,9 +814,9 @@ services: - ./src:/usr/src/code/src depends_on: - redis - - ${_APP_DB_SCHEME:-mariadb} + - ${_APP_DB_ADAPTER:-mariadb} environment: - - _APP_DB_SCHEME + - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -846,9 +846,9 @@ services: - ./src:/usr/src/code/src depends_on: - redis - - ${_APP_DB_SCHEME:-mariadb} + - ${_APP_DB_ADAPTER:-mariadb} environment: - - _APP_DB_SCHEME + - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -877,10 +877,10 @@ services: - ./app:/usr/src/code/app - ./src:/usr/src/code/src depends_on: - - ${_APP_DB_SCHEME:-mariadb} + - ${_APP_DB_ADAPTER:-mariadb} - redis environment: - - _APP_DB_SCHEME + - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -906,10 +906,10 @@ services: - ./app:/usr/src/code/app - ./src:/usr/src/code/src depends_on: - - ${_APP_DB_SCHEME:-mariadb} + - ${_APP_DB_ADAPTER:-mariadb} - redis environment: - - _APP_DB_SCHEME + - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -934,10 +934,10 @@ services: - ./app:/usr/src/code/app - ./src:/usr/src/code/src depends_on: - - ${_APP_DB_SCHEME:-mariadb} + - ${_APP_DB_ADAPTER:-mariadb} - redis environment: - - _APP_DB_SCHEME + - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -1055,7 +1055,7 @@ services: - MYSQL_DATABASE=${_APP_DB_SCHEMA} - MYSQL_USER=${_APP_DB_USER} - MYSQL_PASSWORD=${_APP_DB_PASS} - - ${_APP_DB_SCHEME:-mariadb}_AUTO_UPGRADE=1 + - ${_APP_DB_ADAPTER:-mariadb}_AUTO_UPGRADE=1 command: "mysqld --innodb-flush-method=fsync" postgresql: diff --git a/src/Appwrite/Platform/Tasks/Install.php b/src/Appwrite/Platform/Tasks/Install.php index 1ac2fbac5f..387c8dbc56 100644 --- a/src/Appwrite/Platform/Tasks/Install.php +++ b/src/Appwrite/Platform/Tasks/Install.php @@ -42,14 +42,6 @@ class Install extends Action $defaultHTTPSPort = '443'; /** @var array> $vars array whre key is variable name and value is variable */ $vars = []; - $vars['_APP_DB_SCHEME'] = [ - 'name' => '_APP_DB_SCHEME', - 'default' => $database, - 'required' => true, - 'filter' => '', - 'overwrite' => true, - 'question' => 'Choose your database (mariadb|postgresql)', - ]; foreach ($config as $category) { foreach ($category['variables'] ?? [] as $var) { @@ -181,7 +173,7 @@ class Install extends Action continue; } - if ($var['name'] === '_APP_DB_SCHEME' && $data !== false) { + if ($var['name'] === '_APP_DB_ADAPTER' && $data !== false) { continue; } @@ -201,7 +193,7 @@ class Install extends Action } } } - $database = $input['_APP_DB_SCHEME']; + $database = $input['_APP_DB_ADAPTER']; if ($database === 'postgresql') { $input['_APP_DB_HOST'] = 'postgresql'; $input['_APP_DB_PORT'] = 5432; diff --git a/src/Appwrite/Platform/Tasks/Upgrade.php b/src/Appwrite/Platform/Tasks/Upgrade.php index ecf71d27a1..5b9a9e1f3a 100644 --- a/src/Appwrite/Platform/Tasks/Upgrade.php +++ b/src/Appwrite/Platform/Tasks/Upgrade.php @@ -41,7 +41,7 @@ class Upgrade extends Install Console::log(' └── docker-compose.yml'); Console::exit(1); } - $database = System::getEnv('_APP_DB_SCHEME', 'mariadb'); + $database = System::getEnv('_APP_DB_ADAPTER', 'mariadb'); parent::action($httpPort, $httpsPort, $organization, $image, $interactive, $noStart, $database); } }