diff --git a/app/cli.php b/app/cli.php index 09b3dc9413..32e2514abd 100644 --- a/app/cli.php +++ b/app/cli.php @@ -21,6 +21,7 @@ include 'tasks/specs.php'; include 'tasks/ssl.php'; include 'tasks/vars.php'; include 'tasks/usage.php'; +include 'tasks/backup.php'; $cli ->task('version') diff --git a/app/init.php b/app/init.php index 0b6efe52c0..b10eb98c5a 100644 --- a/app/init.php +++ b/app/init.php @@ -633,6 +633,7 @@ $register->set('db', function () { $dbPass = App::getEnv('_APP_DB_PASS', ''); $dbScheme = App::getEnv('_APP_DB_SCHEMA', ''); + var_dump($dbHost, $dbPort, $dbUser, $dbPass, $dbScheme); $pdo = new PDO("mysql:host={$dbHost};port={$dbPort};dbname={$dbScheme};charset=utf8mb4", $dbUser, $dbPass, array( PDO::ATTR_TIMEOUT => 3, // Seconds PDO::ATTR_PERSISTENT => true, diff --git a/app/tasks/backup.php b/app/tasks/backup.php new file mode 100644 index 0000000000..91c0703614 --- /dev/null +++ b/app/tasks/backup.php @@ -0,0 +1,65 @@ +task('backup') + ->param('projectId', '', new UID(), 'Project id to backupo', false) + ->action(function ($projectId) use ($register) { + + var_dump($projectId); + Console::exit(1); + + Authorization::disable(); +// if (!array_key_exists($version, Migration::$versions)) { +// Console::error("Version {$version} not found."); +// Console::exit(1); +// return; +// } + + $app = new App('UTC'); + +// Console::success('Starting Data Migration to version ' . $version); + + $db = $register->get('db', true); + + $cache = new Cache(new None()); + + $projectDB = new Database(new MariaDB($db), $cache); + $projectDB->setDefaultDatabase(App::getEnv('_APP_DB_SCHEMA', 'appwrite')); + + $consoleDB = new Database(new MariaDB($db), $cache); + $consoleDB->setDefaultDatabase(App::getEnv('_APP_DB_SCHEMA', 'appwrite')); + $consoleDB->setNamespace('_project_console'); + + $console = $app->getResource('console'); + //$project = $consoleDB->find('projects', [Query::equal('$uid', [$projectId])]); + $project = Authorization::skip(fn() => $consoleDB->getDocument('projects', $projectId)); + + var_dump($project); + + if ($project->getId() === 'console' && $project->getInternalId() !== 'console') { + // todo: how not to choose console.? + } + +// $migration +// ->setProject($project, $projectDB, $consoleDB) +// ->setPDO($register->get('db')) +// ->execute(); + + Swoole\Event::wait(); // Wait for Coroutines to finish + Console::success('Complete'); + }); diff --git a/bin/backup b/bin/backup new file mode 100755 index 0000000000..97d6dfb156 --- /dev/null +++ b/bin/backup @@ -0,0 +1,3 @@ +#!/bin/sh + +php /usr/src/code/app/cli.php backup $@ \ No newline at end of file