From e9e2918d9f28a61ceb6b98df9d06e72405264d9d Mon Sep 17 00:00:00 2001 From: Richard McDaniel Date: Sun, 26 Oct 2025 17:57:13 +0000 Subject: [PATCH] Remove MongoDB --- .github/workflows/php.yml | 9 --- .../WorkflowRepositoryMongoDB.php | 80 ------------------- app/WaterlineApplicationServiceProvider.php | 2 - composer.json | 7 +- docker-compose.yml | 19 ----- docker/Dockerfile | 4 - phpunit-mongo.xml | 35 -------- tests/TestCase.php | 17 +--- 8 files changed, 4 insertions(+), 169 deletions(-) delete mode 100644 app/Repositories/Workflow/Infrastructure/WorkflowRepositoryMongoDB.php delete mode 100644 phpunit-mongo.xml diff --git a/.github/workflows/php.yml b/.github/workflows/php.yml index f8fc180..b61baea 100644 --- a/.github/workflows/php.yml +++ b/.github/workflows/php.yml @@ -12,15 +12,6 @@ jobs: runs-on: ubuntu-latest services: - mongo: - image: mongo:latest - env: - MONGO_INITDB_ROOT_USERNAME: testing - MONGO_INITDB_ROOT_PASSWORD: password - MONGO_INITDB_DATABASE: testing - ports: - - 27017:27017 - mssql: image: mcr.microsoft.com/mssql/server:2022-latest env: diff --git a/app/Repositories/Workflow/Infrastructure/WorkflowRepositoryMongoDB.php b/app/Repositories/Workflow/Infrastructure/WorkflowRepositoryMongoDB.php deleted file mode 100644 index ad2ca89..0000000 --- a/app/Repositories/Workflow/Infrastructure/WorkflowRepositoryMongoDB.php +++ /dev/null @@ -1,80 +0,0 @@ -workflowModel::where('status', 'pending') - ->orderBy('updated_at') - ->first(); - - if ($maxWaitTimeWorkflow && $maxWaitTimeWorkflow->_id) { - $maxWaitTimeWorkflow->id = $maxWaitTimeWorkflow->_id; - } - - return $maxWaitTimeWorkflow; - } - - public function maxDurationWorkflow() - { - $maxDurationWorkflow = $this->workflowModel::select('*') - ->raw(function ($collection) { - return $collection->aggregate([ - [ - '$match' => [ - 'status' => [ '$ne' => 'pending' ] - ] - ], - [ - '$addFields' => [ - 'duration' => [ - '$subtract' => [ - ['$toDate' => '$updated_at'], - ['$toDate' => '$created_at'] - ] - ] - ] - ], - [ - '$sort' => ['duration' => -1] - ], - [ - '$limit' => 1 - ] - ]); - }) - ->first(); - - if ($maxDurationWorkflow) { - $maxDurationWorkflow->id = $maxDurationWorkflow->_id; - } - - return $maxDurationWorkflow; - } - - public function maxExceptionsWorkflow() - { - $maxExceptionsWorkflow = $this->workflowExceptionModel::raw(function ($collection) { - return $collection->aggregate([ - ['$group' => ['_id' => '$stored_workflow_id', 'count' => ['$sum' => 1]]], - ['$sort' => ['count' => -1]], - ['$limit' => 1] - ]); - })->first(); - - if ($maxExceptionsWorkflow) { - $mostExceptionWorkflowId = $maxExceptionsWorkflow['_id']; - - $maxExceptionsWorkflow = $this->workflowModel::where('_id', $mostExceptionWorkflowId)->first(); - - if ($maxExceptionsWorkflow) { - $maxExceptionsWorkflow->exceptions_count = $this->workflowExceptionModel::where('stored_workflow_id', $mostExceptionWorkflowId)->count(); - $maxExceptionsWorkflow->id = $maxExceptionsWorkflow->_id; - } - } - - return $maxExceptionsWorkflow; - } -} diff --git a/app/WaterlineApplicationServiceProvider.php b/app/WaterlineApplicationServiceProvider.php index bf8050d..b53fe48 100644 --- a/app/WaterlineApplicationServiceProvider.php +++ b/app/WaterlineApplicationServiceProvider.php @@ -6,7 +6,6 @@ use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Gate; use Illuminate\Support\ServiceProvider; -use Waterline\Repositories\Workflow\Infrastructure\WorkflowRepositoryMongoDB; use Waterline\Repositories\Workflow\Infrastructure\WorkflowRepositoryMySQL; use Waterline\Repositories\Workflow\Infrastructure\WorkflowRepositoryPostgreSQL; use Waterline\Repositories\Workflow\Infrastructure\WorkflowRepositorySQLite; @@ -46,7 +45,6 @@ class_alias(config('workflows.base_model', Model::class), 'Workflow\Models\Model } $drivers = [ - 'mongodb' => WorkflowRepositoryMongoDB::class, 'mysql' => WorkflowRepositoryMySQL::class, 'pgsql' => WorkflowRepositoryPostgreSQL::class, 'sqlite' => WorkflowRepositorySQLite::class, diff --git a/composer.json b/composer.json index c7e9c6d..f02b1b9 100644 --- a/composer.json +++ b/composer.json @@ -16,8 +16,6 @@ "require-dev": { "fakerphp/faker": "^1.9.1", "mockery/mockery": "^1.4.4", - "mongodb/laravel-mongodb": "^3.9", - "mongodb/mongodb": "1.11", "orchestra/testbench": "^7.29", "orchestra/workbench": "^7.29", "phpunit/phpunit": "^9.5.10" @@ -47,9 +45,8 @@ "@php vendor/bin/testbench serve --ansi" ], "build": "@php vendor/bin/testbench workbench:build --ansi", - "test": "composer test-mongo && composer test-mssql && composer test-mysql && composer test-pgsql && composer test-sqlite", - "test-all": "composer test-mongo && composer test-mssql && composer test-mysql && composer test-pgsql && composer test-sqlite", - "test-mongo": "vendor/bin/phpunit --testdox --configuration=phpunit-mongo.xml", + "test": "composer test-mssql && composer test-mysql && composer test-pgsql && composer test-sqlite", + "test-all": "composer test-mssql && composer test-mysql && composer test-pgsql && composer test-sqlite", "test-mssql": "vendor/bin/phpunit --testdox --configuration=phpunit-mssql.xml", "test-mysql": "vendor/bin/phpunit --testdox --configuration=phpunit-mysql.xml", "test-pgsql": "vendor/bin/phpunit --testdox --configuration=phpunit-pgsql.xml", diff --git a/docker-compose.yml b/docker-compose.yml index 4fd951f..d0d7c58 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -25,23 +25,6 @@ services: depends_on: - mysql - redis - mongo: - image: 'mongo:latest' - ports: - - '${FORWARD_DB_PORT:-27017}:27017' - environment: - MONGO_INITDB_ROOT_USERNAME: 'testing' - MONGO_INITDB_ROOT_PASSWORD: 'password' - MONGO_INITDB_DATABASE: 'testing' - volumes: - - 'sail-mongo:/data/db' - # - './docker/create-testing-database-mongo.js:/docker-entrypoint-initdb.d/10-create-testing-database.js' - networks: - - sail - healthcheck: - test: ["CMD", "mongo", "--eval", "db.adminCommand('ping')"] - retries: 3 - timeout: 5s mssql: image: 'mcr.microsoft.com/mssql/server:2022-latest' ports: @@ -114,8 +97,6 @@ networks: sail: driver: bridge volumes: - sail-mongo: - driver: local sail-mssql: driver: local sail-mysql: diff --git a/docker/Dockerfile b/docker/Dockerfile index 3eda3a4..33f785a 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -48,11 +48,7 @@ RUN apt-get update \ && echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc \ && echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> /etc/profile.d/mssql.sh \ && apt-get install -y php-pear php8.2-xml php8.2-dev \ - && apt-get remove --purge -y php8.2-mongodb || true \ && pecl channel-update pecl.php.net \ - && pecl install mongodb-1.15.0 \ - && echo "extension=mongodb.so" > /etc/php/8.2/mods-available/mongodb.ini \ - && phpenmod mongodb \ && pecl install sqlsrv \ && pecl install pdo_sqlsrv \ && echo "extension=sqlsrv.so" > /etc/php/8.2/mods-available/sqlsrv.ini \ diff --git a/phpunit-mongo.xml b/phpunit-mongo.xml deleted file mode 100644 index 1162c9a..0000000 --- a/phpunit-mongo.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - ./tests/Unit - - - ./tests/Feature - - - - - ./app - - - - - - - - - - - - - - - - - - diff --git a/tests/TestCase.php b/tests/TestCase.php index 9d6724e..ea36a21 100644 --- a/tests/TestCase.php +++ b/tests/TestCase.php @@ -53,22 +53,9 @@ protected function defineDatabaseMigrations() protected function getPackageProviders($app) { if (! class_exists('\Workflow\Models\Model')) { - if (env('DB_CONNECTION') === 'mongodb') { - class_alias(\Jenssegers\Mongodb\Eloquent\Model::class, '\Workflow\Models\Model'); - } else { - class_alias(\Illuminate\Database\Eloquent\Model::class, '\Workflow\Models\Model'); - } + class_alias(\Illuminate\Database\Eloquent\Model::class, '\Workflow\Models\Model'); } - $app['config']->set('database.connections.mongodb', [ - 'driver' => 'mongodb', - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', 27017), - 'database' => env('DB_DATABASE', 'homestead'), - 'username' => env('DB_USERNAME', 'homestead'), - 'password' => env('DB_PASSWORD', 'secret'), - ]); - - return ['Jenssegers\Mongodb\MongodbServiceProvider', 'Waterline\WaterlineServiceProvider', 'Waterline\WaterlineApplicationServiceProvider']; + return ['Waterline\WaterlineServiceProvider', 'Waterline\WaterlineApplicationServiceProvider']; } }