diff --git a/composer.json b/composer.json index 844a10d7e8..a3db644676 100644 --- a/composer.json +++ b/composer.json @@ -64,7 +64,7 @@ "utopia-php/locale": "0.8.*", "utopia-php/logger": "0.6.*", "utopia-php/messaging": "0.20.*", - "utopia-php/migration": "1.3.*", + "utopia-php/migration": "dev-cleanup-hook as 1.3.9", "utopia-php/orchestration": "0.9.*", "utopia-php/platform": "0.7.*", "utopia-php/pools": "0.8.*", diff --git a/composer.lock b/composer.lock index c678d1c01e..a13e80acda 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": "b873febd2b03c32ec61a57b690cc44a2", + "content-hash": "8c0e85fcc3d892a54e6d63bac68e2c8d", "packages": [ { "name": "adhocore/jwt", @@ -4515,16 +4515,16 @@ }, { "name": "utopia-php/migration", - "version": "1.3.9", + "version": "dev-cleanup-hook", "source": { "type": "git", "url": "https://github.com/utopia-php/migration.git", - "reference": "c55ec67c74663190cda10fd79297422147be7e85" + "reference": "3236527485034fd14352597ea5b63a9f1c69e9d5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/utopia-php/migration/zipball/c55ec67c74663190cda10fd79297422147be7e85", - "reference": "c55ec67c74663190cda10fd79297422147be7e85", + "url": "https://api.github.com/repos/utopia-php/migration/zipball/3236527485034fd14352597ea5b63a9f1c69e9d5", + "reference": "3236527485034fd14352597ea5b63a9f1c69e9d5", "shasum": "" }, "require": { @@ -4564,9 +4564,9 @@ ], "support": { "issues": "https://github.com/utopia-php/migration/issues", - "source": "https://github.com/utopia-php/migration/tree/1.3.9" + "source": "https://github.com/utopia-php/migration/tree/cleanup-hook" }, - "time": "2025-12-08T08:45:09+00:00" + "time": "2026-01-06T08:31:17+00:00" }, { "name": "utopia-php/mongo", @@ -5438,16 +5438,16 @@ "packages-dev": [ { "name": "appwrite/sdk-generator", - "version": "1.8.6", + "version": "1.8.9", "source": { "type": "git", "url": "https://github.com/appwrite/sdk-generator.git", - "reference": "b6cc29d3bd247e193f3c06b4168dc69d884645f0" + "reference": "5fc210f7403f9ecfa068cd2a74210ec6e2a3cec1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/appwrite/sdk-generator/zipball/b6cc29d3bd247e193f3c06b4168dc69d884645f0", - "reference": "b6cc29d3bd247e193f3c06b4168dc69d884645f0", + "url": "https://api.github.com/repos/appwrite/sdk-generator/zipball/5fc210f7403f9ecfa068cd2a74210ec6e2a3cec1", + "reference": "5fc210f7403f9ecfa068cd2a74210ec6e2a3cec1", "shasum": "" }, "require": { @@ -5483,9 +5483,9 @@ "description": "Appwrite PHP library for generating API SDKs for multiple programming languages and platforms", "support": { "issues": "https://github.com/appwrite/sdk-generator/issues", - "source": "https://github.com/appwrite/sdk-generator/tree/1.8.6" + "source": "https://github.com/appwrite/sdk-generator/tree/1.8.9" }, - "time": "2025-12-31T10:22:17+00:00" + "time": "2026-01-02T12:09:51+00:00" }, { "name": "doctrine/annotations", @@ -5566,30 +5566,29 @@ }, { "name": "doctrine/instantiator", - "version": "2.0.0", + "version": "2.1.0", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0" + "reference": "23da848e1a2308728fe5fdddabf4be17ff9720c7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/c6222283fa3f4ac679f8b9ced9a4e23f163e80d0", - "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/23da848e1a2308728fe5fdddabf4be17ff9720c7", + "reference": "23da848e1a2308728fe5fdddabf4be17ff9720c7", "shasum": "" }, "require": { - "php": "^8.1" + "php": "^8.4" }, "require-dev": { - "doctrine/coding-standard": "^11", + "doctrine/coding-standard": "^14", "ext-pdo": "*", "ext-phar": "*", "phpbench/phpbench": "^1.2", - "phpstan/phpstan": "^1.9.4", - "phpstan/phpstan-phpunit": "^1.3", - "phpunit/phpunit": "^9.5.27", - "vimeo/psalm": "^5.4" + "phpstan/phpstan": "^2.1", + "phpstan/phpstan-phpunit": "^2.0", + "phpunit/phpunit": "^10.5.58" }, "type": "library", "autoload": { @@ -5616,7 +5615,7 @@ ], "support": { "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/2.0.0" + "source": "https://github.com/doctrine/instantiator/tree/2.1.0" }, "funding": [ { @@ -5632,7 +5631,7 @@ "type": "tidelift" } ], - "time": "2022-12-30T00:23:10+00:00" + "time": "2026-01-05T06:47:08+00:00" }, { "name": "doctrine/lexer", @@ -5713,16 +5712,16 @@ }, { "name": "laravel/pint", - "version": "v1.26.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/laravel/pint.git", - "reference": "69dcca060ecb15e4b564af63d1f642c81a241d6f" + "reference": "c67b4195b75491e4dfc6b00b1c78b68d86f54c90" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/pint/zipball/69dcca060ecb15e4b564af63d1f642c81a241d6f", - "reference": "69dcca060ecb15e4b564af63d1f642c81a241d6f", + "url": "https://api.github.com/repos/laravel/pint/zipball/c67b4195b75491e4dfc6b00b1c78b68d86f54c90", + "reference": "c67b4195b75491e4dfc6b00b1c78b68d86f54c90", "shasum": "" }, "require": { @@ -5733,9 +5732,9 @@ "php": "^8.2.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^3.90.0", - "illuminate/view": "^12.40.1", - "larastan/larastan": "^3.8.0", + "friendsofphp/php-cs-fixer": "^3.92.4", + "illuminate/view": "^12.44.0", + "larastan/larastan": "^3.8.1", "laravel-zero/framework": "^12.0.4", "mockery/mockery": "^1.6.12", "nunomaduro/termwind": "^2.3.3", @@ -5776,7 +5775,7 @@ "issues": "https://github.com/laravel/pint/issues", "source": "https://github.com/laravel/pint" }, - "time": "2025-11-25T21:15:52+00:00" + "time": "2026-01-05T16:49:17+00:00" }, { "name": "matthiasmullie/minify", @@ -8562,16 +8561,16 @@ }, { "name": "symfony/process", - "version": "v8.0.0", + "version": "v8.0.3", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "a0a750500c4ce900d69ba4e9faf16f82c10ee149" + "reference": "0cbbd88ec836f8757641c651bb995335846abb78" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/a0a750500c4ce900d69ba4e9faf16f82c10ee149", - "reference": "a0a750500c4ce900d69ba4e9faf16f82c10ee149", + "url": "https://api.github.com/repos/symfony/process/zipball/0cbbd88ec836f8757641c651bb995335846abb78", + "reference": "0cbbd88ec836f8757641c651bb995335846abb78", "shasum": "" }, "require": { @@ -8603,7 +8602,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v8.0.0" + "source": "https://github.com/symfony/process/tree/v8.0.3" }, "funding": [ { @@ -8623,7 +8622,7 @@ "type": "tidelift" } ], - "time": "2025-10-16T16:25:44+00:00" + "time": "2025-12-19T10:01:18+00:00" }, { "name": "symfony/string", @@ -8943,10 +8942,18 @@ "time": "2024-03-07T20:33:40+00:00" } ], - "aliases": [], + "aliases": [ + { + "package": "utopia-php/migration", + "version": "dev-cleanup-hook", + "alias": "1.3.9", + "alias_normalized": "1.3.9.0" + } + ], "minimum-stability": "stable", "stability-flags": { - "utopia-php/audit": 5 + "utopia-php/audit": 5, + "utopia-php/migration": 20 }, "prefer-stable": false, "prefer-lowest": false, @@ -8971,5 +8978,5 @@ "platform-overrides": { "php": "8.3" }, - "plugin-api-version": "2.9.0" + "plugin-api-version": "2.6.0" } diff --git a/src/Appwrite/Platform/Workers/Migrations.php b/src/Appwrite/Platform/Workers/Migrations.php index 972757408e..f04617e899 100644 --- a/src/Appwrite/Platform/Workers/Migrations.php +++ b/src/Appwrite/Platform/Workers/Migrations.php @@ -110,10 +110,18 @@ class Migrations extends Action $events = $payload['events'] ?? []; $migration = new Document($payload['migration'] ?? []); + if ($migration->isEmpty()) { + throw new \Exception("Migration not found"); + } + if ($project->getId() === 'console') { return; } + if ($project->isEmpty()) { + throw new \Exception("Project not found"); + } + $this->dbForProject = $dbForProject; $this->dbForPlatform = $dbForPlatform; $this->project = $project; @@ -312,7 +320,12 @@ class Migrations extends Action Mail $queueForMails, array $platform, ): void { - $project = $this->dbForPlatform->getDocument('projects', $this->project->getId()); + $project = $this->project; + + if ($project->isEmpty()) { + throw new \Exception("Project not found"); + } + $tempAPIKey = $this->generateAPIKey($project); $transfer = $source = $destination = null; @@ -439,6 +452,9 @@ class Migrations extends Action } } + $source?->cleanUp(); + $destination?->cleanUp(); + $transfer = null; $source = null; $destination = null;