diff --git a/app/cli.php b/app/cli.php index b5e639ef11..ff096c2906 100644 --- a/app/cli.php +++ b/app/cli.php @@ -5,19 +5,9 @@ require_once __DIR__ . '/controllers/general.php'; use Appwrite\Event\Certificate; use Appwrite\Event\Delete; -use Appwrite\Event\Func; use Appwrite\Event\Hamster; use Appwrite\Platform\Appwrite; -use Appwrite\Utopia\Queue\Connections; -use Utopia\Cache\Adapter\None; -use Utopia\Cache\Adapter\Sharding; -use Utopia\Cache\Cache; use Utopia\CLI\Console; -use Utopia\Queue\Connection\Redis; -use Utopia\Database\Adapter\MariaDB; -use Utopia\Database\Adapter\MySQL; -use Utopia\Database\Database; -use Utopia\Database\Document; use Utopia\Database\Validator\Authorization; use Utopia\DI\Dependency; use Utopia\Logger\Log; @@ -33,119 +23,16 @@ global $global, $container; Runtime::enableCoroutine(SWOOLE_HOOK_ALL); -$registry = new Dependency(); -$registry - ->setName('register') - ->setCallback(fn() => $global); - -$connections = new Dependency(); -$connections - ->setName('connections') - ->setCallback(fn() => new Connections()); - -$cache = new Dependency(); -$cache - ->setName('cache') - ->setCallback(function () { - return new Cache(new None()); - }); -$container->set($cache); - -$pools = new Dependency(); -$pools - ->setName('pools') - ->inject('register') - ->setCallback(function (Registry $register) { - return $register->get('pools'); - }); - -$dbForConsole = new Dependency(); -$dbForConsole - ->setName('dbForConsole') - ->inject('pools') - ->inject('cache') - ->inject('auth') - ->inject('connections') - ->setCallback(function ($pools, $cache, $auth, Connections $connections) { - $pool = $pools['pools-console-main']['pool']; - $dsn = $pools['pools-console-main']['dsn']; - $connection = $pool->get(); - $connections->add($connection, $pool); - - $adapter = match ($dsn->getScheme()) { - 'mariadb' => new MariaDB($connection), - 'mysql' => new MySQL($connection), - default => null - }; - - $adapter->setDatabase($dsn->getPath()); - - $database = new Database($adapter, $cache); - $database->setAuthorization($auth); - $database->setNamespace('_console'); - - return $database; - }); - -$getProjectDB = new Dependency(); -$getProjectDB - ->setName('getProjectDB') - ->inject('pools') - ->inject('dbForConsole') - ->inject('cache') - ->inject('auth') - ->inject('connections') - ->setCallback(function (array $pools, Database $dbForConsole, Cache $cache, Authorization $auth, Connections $connections) { - return function (Document $project) use ($pools, $dbForConsole, $cache, &$databases, $auth, $connections): Database { - if ($project->isEmpty() || $project->getId() === 'console') { - return $dbForConsole; - } - - $databaseName = $project->getAttribute('database'); - - $pool = $pools['pools-database-' . $databaseName]['pool']; - $dsn = $pools['pools-database-' . $databaseName]['dsn']; - - $connection = $pool->get(); - $connections->add($connection, $pool); - $adapter = match ($dsn->getScheme()) { - 'mariadb' => new MariaDB($connection), - 'mysql' => new MySQL($connection), - default => null - }; - $adapter->setDatabase($dsn->getPath()); - - $database = new Database($adapter, $cache); - $database->setAuthorization($auth); - $database->setNamespace('_' . $project->getInternalId()); - - return $database; - }; - }); - -$queue = new Dependency(); -$queue - ->setName('queue') - ->inject('pools') - ->inject('connections') - ->setCallback(function (array $pools, Connections $connections) { - $pool = $pools['pools-queue-main']['pool']; - $dsn = $pools['pools-queue-main']['dsn']; - $connection = $pool->get(); - $connections->add($connection, $pool); - - return new Redis($dsn->getHost(), $dsn->getPort()); - }); - -$queueForFunctions = new Dependency(); -$queueForFunctions - ->setName('queueForFunctions') - ->inject('queue') - ->setCallback(function (Connection $queue) { - return new Func($queue); - }); - +/** + * @var Registry $global + * @var Container $container + */ +$auth = new Dependency(); +$logError = new Dependency(); +$queueForDeletes = new Dependency(); $queueForHamster = new Dependency(); +$queueForCertificates = new Dependency(); + $queueForHamster ->setName('queueForHamster') ->inject('queue') @@ -153,7 +40,6 @@ $queueForHamster return new Hamster($queue); }); -$queueForDeletes = new Dependency(); $queueForDeletes ->setName('queueForDeletes') ->inject('queue') @@ -161,7 +47,6 @@ $queueForDeletes return new Delete($queue); }); -$queueForCertificates = new Dependency(); $queueForCertificates ->setName('queueForCertificates') ->inject('queue') @@ -169,15 +54,6 @@ $queueForCertificates return new Certificate($queue); }); -$queueForCertificates = new Dependency(); -$queueForCertificates - ->setName('queueForCertificates') - ->inject('queue') - ->setCallback(function (Connection $queue) { - return new Certificate($queue); - }); - -$logError = new Dependency(); $logError ->setName('logError') ->inject('register') @@ -218,24 +94,16 @@ $logError }; }); -$auth = new Dependency(); + $auth ->setName('auth') ->setCallback(fn() => new Authorization()); -$container->set($registry); -$container->set($connections); -$container->set($cache); -$container->set($pools); -$container->set($dbForConsole); -$container->set($getProjectDB); -$container->set($queue); -$container->set($queueForFunctions); +$container->set($auth); +$container->set($logError); $container->set($queueForHamster); $container->set($queueForDeletes); $container->set($queueForCertificates); -$container->set($logError); -$container->set($auth); $platform = new Appwrite(); $platform->init(Service::TYPE_CLI, ['adapter' => new SwooleCLI(1)]);