From d2c9e0807a503b279c2f6cdc50530ea5abe8a300 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Munsch?= Date: Fri, 28 Aug 2026 17:31:18 +0200 Subject: [PATCH] feat(database): update database configuration for Oracle and MySQL - Changed DB_CONNECTION to MySQL and updated related settings. - Added Oracle database configuration with necessary parameters. - Introduced docker-compose for MySQL and Oracle services. --- .env.example | 39 ++-- composer.json | 3 +- composer.lock | 473 +++++++++++++++++++++++++++++--------------- config/database.php | 25 ++- docker-compose.yml | 43 ++++ 5 files changed, 389 insertions(+), 194 deletions(-) create mode 100644 docker-compose.yml diff --git a/.env.example b/.env.example index 3ad00ae..054994c 100644 --- a/.env.example +++ b/.env.example @@ -20,29 +20,32 @@ LOG_STACK=single LOG_DEPRECATIONS_CHANNEL=null LOG_LEVEL=debug -DB_CONNECTION=sqlite +DB_CONNECTION=mysql # DB_URL= -# DB_HOST=127.0.0.1 -# DB_PORT=3306 -# DB_DATABASE=laravel -# DB_USERNAME=root -# DB_PASSWORD= +DB_HOST=127.0.0.1 +DB_PORT=3308 +DB_DATABASE=arcadia_api +DB_USERNAME=root +DB_PASSWORD=:Mysql.Docker2026 # DB_SOCKET= # DB_CHARSET=utf8mb4 # DB_COLLATION=utf8mb4_unicode_ci # MYSQL_ATTR_SSL_CA= -ARCADIA_DB_CONNECTION=mysql -# ARCADIA_DB_URL= +# Arcadia Database (Oracle Database 19c) +ARCADIA_DB_CONNECTION=arcadia +ARCADIA_DB_DRIVER=oracle +# ARCADIA_DB_TNS= ARCADIA_DB_HOST=127.0.0.1 -ARCADIA_DB_PORT=3306 -ARCADIA_DB=arcadia -ARCADIA_DB_USERNAME=root -ARCADIA_DB_PASSWORD= -# ARCADIA_DB_SOCKET= -# ARCADIA_DB_CHARSET=utf8mb4 -# ARCADIA_DB_COLLATION=utf8mb4_unicode_ci -# ARCADIA_DB_SSL_CA= +ARCADIA_DB_PORT=1521 +ARCADIA_DB=XEPDB1 +ARCADIA_DB_SERVICE_NAME=XEPDB1 +ARCADIA_DB_USERNAME=ORACLE +ARCADIA_DB_PASSWORD=:Oracle.Docker2026 +ARCADIA_DB_SCHEMA=arcadia +# ARCADIA_DB_CHARSET=AL32UTF8 +# ARCADIA_DB_EDITION=ora$base +# ARCADIA_DB_SERVER_VERSION=19c SESSION_DRIVER=database SESSION_LIFETIME=120 @@ -65,10 +68,10 @@ REDIS_HOST=127.0.0.1 REDIS_PASSWORD=null REDIS_PORT=6379 -MAIL_MAILER=log +MAIL_MAILER=smtp MAIL_SCHEME=null MAIL_HOST=127.0.0.1 -MAIL_PORT=2525 +MAIL_PORT=1025 MAIL_USERNAME=null MAIL_PASSWORD=null MAIL_FROM_ADDRESS="hello@example.com" diff --git a/composer.json b/composer.json index 89c22cf..2dde1f3 100644 --- a/composer.json +++ b/composer.json @@ -13,7 +13,8 @@ "laravel/sanctum": "^4.0", "psr/clock": "^1.0", "sentry/sentry-laravel": "^4.27", - "webmozart/assert": "^2.4" + "webmozart/assert": "^2.4", + "yajra/laravel-oci8": "^13.11" }, "require-dev": { "ace-of-aces/intellipest": "^1.0", diff --git a/composer.lock b/composer.lock index f2a75ed..81e8c20 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "d2a8a323834211fd1ab115cc3e0d2367", + "content-hash": "f4587f38615f44811e032521737f785a", "packages": [ { "name": "brick/math", @@ -440,42 +440,6 @@ ], "time": "2025-10-31T18:51:33+00:00" }, - { - "name": "driftingly/rector-laravel", - "version": "2.5.0", - "source": { - "type": "git", - "url": "https://github.com/driftingly/rector-laravel.git", - "reference": "0dbdd842dfdbc821cfe5f47ca7326e2502b2a107" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/driftingly/rector-laravel/zipball/0dbdd842dfdbc821cfe5f47ca7326e2502b2a107", - "reference": "0dbdd842dfdbc821cfe5f47ca7326e2502b2a107", - "shasum": "" - }, - "require": { - "php": "^7.4 || ^8.0", - "rector/rector": "^2.2.7", - "webmozart/assert": "^1.11 || ^2.0" - }, - "type": "rector-extension", - "autoload": { - "psr-4": { - "RectorLaravel\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Rector upgrades rules for Laravel Framework", - "support": { - "issues": "https://github.com/driftingly/rector-laravel/issues", - "source": "https://github.com/driftingly/rector-laravel/tree/2.5.0" - }, - "time": "2026-06-02T16:22:14+00:00" - }, { "name": "egulias/email-validator", "version": "4.0.4", @@ -2725,70 +2689,6 @@ ], "time": "2025-12-27T19:41:33+00:00" }, - { - "name": "phpstan/phpstan", - "version": "2.2.8", - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/e285254e60f33c21902efef4a926ca0987c06804", - "reference": "e285254e60f33c21902efef4a926ca0987c06804", - "shasum": "" - }, - "require": { - "php": "^7.4|^8.0" - }, - "conflict": { - "phpstan/phpstan-shim": "*" - }, - "bin": [ - "phpstan", - "phpstan.phar" - ], - "type": "library", - "autoload": { - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ondřej Mirtes" - }, - { - "name": "Markus Staab" - }, - { - "name": "Vincent Langlet" - } - ], - "description": "PHPStan - PHP Static Analysis Tool", - "keywords": [ - "dev", - "static analysis" - ], - "support": { - "docs": "https://phpstan.org/user-guide/getting-started", - "forum": "https://github.com/phpstan/phpstan/discussions", - "issues": "https://github.com/phpstan/phpstan/issues", - "security": "https://github.com/phpstan/phpstan/security/policy", - "source": "https://github.com/phpstan/phpstan-src" - }, - "funding": [ - { - "url": "https://github.com/ondrejmirtes", - "type": "github" - }, - { - "url": "https://github.com/phpstan", - "type": "github" - } - ], - "time": "2026-08-04T22:21:45+00:00" - }, { "name": "psr/clock", "version": "1.0.0", @@ -3355,66 +3255,6 @@ }, "time": "2026-06-18T03:57:49+00:00" }, - { - "name": "rector/rector", - "version": "2.6.3", - "source": { - "type": "git", - "url": "https://github.com/rectorphp/rector.git", - "reference": "7e46709996a4b3dc59e1d6ecbb6a38ace335bd58" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/rectorphp/rector/zipball/7e46709996a4b3dc59e1d6ecbb6a38ace335bd58", - "reference": "7e46709996a4b3dc59e1d6ecbb6a38ace335bd58", - "shasum": "" - }, - "require": { - "php": "^7.4|^8.0", - "phpstan/phpstan": "^2.2.6" - }, - "conflict": { - "rector/rector-doctrine": "*", - "rector/rector-downgrade-php": "*", - "rector/rector-phpunit": "*", - "rector/rector-symfony": "*" - }, - "suggest": { - "ext-dom": "To manipulate phpunit.xml via the custom-rule command" - }, - "bin": [ - "bin/rector" - ], - "type": "library", - "autoload": { - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Instant Upgrade and Automated Refactoring of any PHP code", - "homepage": "https://getrector.com/", - "keywords": [ - "automation", - "dev", - "migration", - "refactoring" - ], - "support": { - "issues": "https://github.com/rectorphp/rector/issues", - "source": "https://github.com/rectorphp/rector/tree/2.6.3" - }, - "funding": [ - { - "url": "https://github.com/tomasvotruba", - "type": "github" - } - ], - "time": "2026-08-18T22:01:18+00:00" - }, { "name": "sentry/sentry", "version": "4.30.0", @@ -6599,6 +6439,157 @@ "source": "https://github.com/webmozarts/assert/tree/2.4.1" }, "time": "2026-06-15T15:31:57+00:00" + }, + { + "name": "yajra/laravel-oci8", + "version": "v13.11.1", + "source": { + "type": "git", + "url": "https://github.com/yajra/laravel-oci8.git", + "reference": "0ae81fae0da1cb6f8b146984d0f20e052d91fb45" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/yajra/laravel-oci8/zipball/0ae81fae0da1cb6f8b146984d0f20e052d91fb45", + "reference": "0ae81fae0da1cb6f8b146984d0f20e052d91fb45", + "shasum": "" + }, + "require": { + "ext-oci8": ">=3.0.1", + "ext-pdo": "*", + "illuminate/database": "^13", + "illuminate/pagination": "^13", + "illuminate/support": "^13", + "illuminate/validation": "^13", + "php": "^8.3", + "yajra/laravel-pdo-via-oci8": "^3.7.1" + }, + "require-dev": { + "larastan/larastan": "^3.1.0", + "laravel/pint": "^1.21", + "mockery/mockery": "^1.6.12", + "orchestra/testbench": "^11", + "phpunit/phpunit": "^12.0.1", + "rector/rector": "^2.0.9" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Yajra\\Oci8\\Oci8ServiceProvider", + "Yajra\\Oci8\\Oci8ValidationServiceProvider" + ] + }, + "branch-alias": { + "dev-master": "13.x-dev" + } + }, + "autoload": { + "psr-4": { + "Yajra\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Arjay Angeles", + "email": "aqangeles@gmail.com" + } + ], + "description": "Oracle DB driver for Laravel via OCI8", + "keywords": [ + "laravel", + "oci8", + "oracle", + "pdo_oci", + "yajra" + ], + "support": { + "issues": "https://github.com/yajra/laravel-oci8/issues", + "source": "https://github.com/yajra/laravel-oci8/tree/v13.11.1" + }, + "funding": [ + { + "url": "https://www.paypal.me/yajra", + "type": "custom" + }, + { + "url": "https://github.com/yajra", + "type": "github" + }, + { + "url": "https://www.patreon.com/yajra", + "type": "patreon" + } + ], + "time": "2026-08-25T01:57:14+00:00" + }, + { + "name": "yajra/laravel-pdo-via-oci8", + "version": "v3.7.3", + "source": { + "type": "git", + "url": "https://github.com/yajra/pdo-via-oci8.git", + "reference": "a18f7195fb7cbe5924d501b5a1837da6c05b52eb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/yajra/pdo-via-oci8/zipball/a18f7195fb7cbe5924d501b5a1837da6c05b52eb", + "reference": "a18f7195fb7cbe5924d501b5a1837da6c05b52eb", + "shasum": "" + }, + "require": { + "ext-oci8": "*", + "ext-pdo": "*", + "php": "^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^8.4|^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Yajra\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Arjay Angeles", + "email": "aqangeles@gmail.com" + } + ], + "description": "PDO userspace driver proxying calls to PHP OCI8 driver", + "support": { + "issues": "https://github.com/yajra/pdo-via-oci8/issues", + "source": "https://github.com/yajra/pdo-via-oci8/tree/v3.7.3" + }, + "funding": [ + { + "url": "https://www.paypal.me/yajra", + "type": "custom" + }, + { + "url": "https://github.com/yajra", + "type": "github" + }, + { + "url": "https://www.patreon.com/yajra", + "type": "patreon" + } + ], + "time": "2025-12-17T07:09:38+00:00" } ], "packages-dev": [ @@ -7371,6 +7362,42 @@ }, "time": "2026-02-07T07:09:04+00:00" }, + { + "name": "driftingly/rector-laravel", + "version": "2.5.0", + "source": { + "type": "git", + "url": "https://github.com/driftingly/rector-laravel.git", + "reference": "0dbdd842dfdbc821cfe5f47ca7326e2502b2a107" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/driftingly/rector-laravel/zipball/0dbdd842dfdbc821cfe5f47ca7326e2502b2a107", + "reference": "0dbdd842dfdbc821cfe5f47ca7326e2502b2a107", + "shasum": "" + }, + "require": { + "php": "^7.4 || ^8.0", + "rector/rector": "^2.2.7", + "webmozart/assert": "^1.11 || ^2.0" + }, + "type": "rector-extension", + "autoload": { + "psr-4": { + "RectorLaravel\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Rector upgrades rules for Laravel Framework", + "support": { + "issues": "https://github.com/driftingly/rector-laravel/issues", + "source": "https://github.com/driftingly/rector-laravel/tree/2.5.0" + }, + "time": "2026-06-02T16:22:14+00:00" + }, { "name": "fakerphp/faker", "version": "v1.24.1", @@ -9758,6 +9785,70 @@ }, "time": "2026-07-08T07:01:06+00:00" }, + { + "name": "phpstan/phpstan", + "version": "2.2.8", + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/e285254e60f33c21902efef4a926ca0987c06804", + "reference": "e285254e60f33c21902efef4a926ca0987c06804", + "shasum": "" + }, + "require": { + "php": "^7.4|^8.0" + }, + "conflict": { + "phpstan/phpstan-shim": "*" + }, + "bin": [ + "phpstan", + "phpstan.phar" + ], + "type": "library", + "autoload": { + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ondřej Mirtes" + }, + { + "name": "Markus Staab" + }, + { + "name": "Vincent Langlet" + } + ], + "description": "PHPStan - PHP Static Analysis Tool", + "keywords": [ + "dev", + "static analysis" + ], + "support": { + "docs": "https://phpstan.org/user-guide/getting-started", + "forum": "https://github.com/phpstan/phpstan/discussions", + "issues": "https://github.com/phpstan/phpstan/issues", + "security": "https://github.com/phpstan/phpstan/security/policy", + "source": "https://github.com/phpstan/phpstan-src" + }, + "funding": [ + { + "url": "https://github.com/ondrejmirtes", + "type": "github" + }, + { + "url": "https://github.com/phpstan", + "type": "github" + } + ], + "time": "2026-08-04T22:21:45+00:00" + }, { "name": "phpstan/phpstan-webmozart-assert", "version": "2.0.0", @@ -10316,6 +10407,66 @@ ], "time": "2025-11-17T20:46:25+00:00" }, + { + "name": "rector/rector", + "version": "2.6.3", + "source": { + "type": "git", + "url": "https://github.com/rectorphp/rector.git", + "reference": "7e46709996a4b3dc59e1d6ecbb6a38ace335bd58" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/7e46709996a4b3dc59e1d6ecbb6a38ace335bd58", + "reference": "7e46709996a4b3dc59e1d6ecbb6a38ace335bd58", + "shasum": "" + }, + "require": { + "php": "^7.4|^8.0", + "phpstan/phpstan": "^2.2.6" + }, + "conflict": { + "rector/rector-doctrine": "*", + "rector/rector-downgrade-php": "*", + "rector/rector-phpunit": "*", + "rector/rector-symfony": "*" + }, + "suggest": { + "ext-dom": "To manipulate phpunit.xml via the custom-rule command" + }, + "bin": [ + "bin/rector" + ], + "type": "library", + "autoload": { + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Instant Upgrade and Automated Refactoring of any PHP code", + "homepage": "https://getrector.com/", + "keywords": [ + "automation", + "dev", + "migration", + "refactoring" + ], + "support": { + "issues": "https://github.com/rectorphp/rector/issues", + "source": "https://github.com/rectorphp/rector/tree/2.6.3" + }, + "funding": [ + { + "url": "https://github.com/tomasvotruba", + "type": "github" + } + ], + "time": "2026-08-18T22:01:18+00:00" + }, { "name": "sebastian/cli-parser", "version": "4.2.1", diff --git a/config/database.php b/config/database.php index 62d8f79..4c20bed 100644 --- a/config/database.php +++ b/config/database.php @@ -37,23 +37,20 @@ return [ 'connections' => [ 'arcadia' => [ - 'driver' => 'mariadb', - 'url' => env('ARCADIA_DB_URL'), + 'driver' => env('ARCADIA_DB_DRIVER', 'oracle'), + 'tns' => env('ARCADIA_DB_TNS', ''), 'host' => env('ARCADIA_DB_HOST', '127.0.0.1'), - 'port' => env('ARCADIA_DB_PORT', '3306'), - 'database' => env('ARCADIA_DB', 'arcadia'), - 'username' => env('ARCADIA_DB_USERNAME', 'root'), + 'port' => env('ARCADIA_DB_PORT', '1521'), + 'database' => env('ARCADIA_DB', 'XEPDB1'), + 'service_name' => env('ARCADIA_DB_SERVICE_NAME', 'XEPDB1'), + 'username' => env('ARCADIA_DB_USERNAME', 'DIGITAL'), 'password' => env('ARCADIA_DB_PASSWORD', ''), - 'unix_socket' => env('ARCADIA_DB_SOCKET', ''), - 'charset' => env('ARCADIA_DB_CHARSET', 'utf8mb4'), - 'collation' => env('ARCADIA_DB_COLLATION', 'utf8mb4_unicode_ci'), + 'charset' => env('ARCADIA_DB_CHARSET', 'AL32UTF8'), 'prefix' => '', - 'prefix_indexes' => true, - 'strict' => true, - 'engine' => null, - 'options' => extension_loaded('pdo_mysql') ? array_filter([ - Mysql::ATTR_SSL_CA => env('ARCADIA_DB_SSL_CA'), - ]) : [], + 'prefix_schema' => env('ARCADIA_DB_SCHEMA', 'DIGITAL'), + 'edition' => env('ARCADIA_DB_EDITION', 'ora$base'), + 'server_version' => env('ARCADIA_DB_SERVER_VERSION', '19c'), + 'max_name_len' => (int) env('ARCADIA_DB_MAX_NAME_LEN', 128), ], 'sqlite' => [ diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..e860592 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,43 @@ +x-name: arcadia-api +services: + mysql: + image: mysql:8.4 + container_name: arcadia_mysql + restart: unless-stopped + ports: + - "3308:3306" + environment: + MYSQL_ROOT_PASSWORD: ":Mysql.Docker2026" + MYSQL_DATABASE: "arcadia_api" + volumes: + - mysql_data:/var/lib/mysql + + mailpit: + image: axllent/mailpit:latest + container_name: arcadia_mailpit + restart: unless-stopped + ports: + - "1025:1025" + - "8025:8025" + volumes: + - mailpit_data:/data + + oracle: + image: gvenzl/oracle-xe:21-slim + container_name: arcadia_oracle + restart: unless-stopped + ports: + - "1521:1521" + environment: + ORACLE_PASSWORD: ":Oracle.Docker2026" + ORACLE_DATABASE: "XEPDB1" + volumes: + - oracle_data:/opt/oracle/oradata + +volumes: + mysql_data: + driver: local + mailpit_data: + driver: local + oracle_data: + driver: local