diff --git a/app/cli.php b/app/cli.php index 0780ee5e5a..e246101e1c 100644 --- a/app/cli.php +++ b/app/cli.php @@ -104,17 +104,17 @@ CLI::setResource('getProjectDB', function (Group $pools, Database $dbForConsole, if (isset($databases[$databaseName])) { $database = $databases[$databaseName]; -// if ($project->getAttribute('database') === DATABASE_SHARED_TABLES) { + if ($project->getAttribute('database') === DATABASE_SHARED_TABLES) { $database ->setShareTables(true) ->setTenant($project->getInternalId()) ->setNamespace(''); -// } else { -// $database -// ->setShareTables(false) -// ->setTenant(null) -// ->setNamespace('_' . $project->getInternalId()); -// } + } else { + $database + ->setShareTables(false) + ->setTenant(null) + ->setNamespace('_' . $project->getInternalId()); + } return $database; } @@ -128,17 +128,17 @@ CLI::setResource('getProjectDB', function (Group $pools, Database $dbForConsole, $databases[$databaseName] = $database; -// if ($project->getAttribute('database') === DATABASE_SHARED_TABLES) { + if ($project->getAttribute('database') === DATABASE_SHARED_TABLES) { $database ->setShareTables(true) ->setTenant($project->getInternalId()) ->setNamespace(''); -// } else { -// $database -// ->setShareTables(false) -// ->setTenant(null) -// ->setNamespace('_' . $project->getInternalId()); -// } + } else { + $database + ->setShareTables(false) + ->setTenant(null) + ->setNamespace('_' . $project->getInternalId()); + } $database ->setMetadata('host', \gethostname()) diff --git a/app/controllers/api/projects.php b/app/controllers/api/projects.php index 20f8f16c11..89ca9e15fe 100644 --- a/app/controllers/api/projects.php +++ b/app/controllers/api/projects.php @@ -130,7 +130,7 @@ App::post('/v1/projects') } $databaseOverride = App::getEnv('_APP_DATABASE_OVERRIDE'); - $index = array_search($databaseOverride, $databases); + $index = \array_search($databaseOverride, $databases); if ($index !== false) { $database = $databases[$index]; } else { @@ -199,17 +199,17 @@ App::post('/v1/projects') $dbForProject = new Database($pools->get($database)->pop()->getResource(), $cache); -// if ($database === DATABASE_SHARED_TABLES) { + if ($database === DATABASE_SHARED_TABLES) { $dbForProject ->setShareTables(true) ->setTenant($project->getInternalId()) ->setNamespace(''); -// } else { -// $dbForProject -// ->setShareTables(false) -// ->setTenant(null) -// ->setNamespace('_' . $project->getInternalId()); -// } + } else { + $dbForProject + ->setShareTables(false) + ->setTenant(null) + ->setNamespace('_' . $project->getInternalId()); + } $dbForProject->create(); diff --git a/app/init.php b/app/init.php index b5ebd4bb9f..a7ffcc5154 100644 --- a/app/init.php +++ b/app/init.php @@ -1135,19 +1135,19 @@ App::setResource('dbForProject', function (Group $pools, Database $dbForConsole, ->setMetadata('project', $project->getId()) ->setTimeout(APP_DATABASE_TIMEOUT_MILLISECONDS); - //if ($project->getAttribute('database') === DATABASE_SHARED_TABLES) { + if ($project->getAttribute('database') === DATABASE_SHARED_TABLES) { $database ->setShareTables(true) ->setTenant($project->getInternalId()) ->setNamespace(''); -// } else { -// $database -// ->setShareTables(false) -// ->setTenant(null) -// ->setNamespace('_' . $project->getInternalId()); -// } - return null; -// return $database; + } else { + $database + ->setShareTables(false) + ->setTenant(null) + ->setNamespace('_' . $project->getInternalId()); + } + + return $database; }, ['pools', 'dbForConsole', 'cache', 'project']); App::setResource('dbForConsole', function (Group $pools, Cache $cache) { @@ -1183,17 +1183,17 @@ App::setResource('getProjectDB', function (Group $pools, Database $dbForConsole, ->setMetadata('project', $project->getId()) ->setTimeout(APP_DATABASE_TIMEOUT_MILLISECONDS); -// if ($project->getAttribute('database') === DATABASE_SHARED_TABLES) { + if ($project->getAttribute('database') === DATABASE_SHARED_TABLES) { $database ->setShareTables(true) ->setTenant($project->getInternalId()) ->setNamespace(''); -// } else { -// $database -// ->setShareTables(false) -// ->setTenant(null) -// ->setNamespace('_' . $project->getInternalId()); -// } + } else { + $database + ->setShareTables(false) + ->setTenant(null) + ->setNamespace('_' . $project->getInternalId()); + } }); if (isset($databases[$databaseName])) { @@ -1210,8 +1210,8 @@ App::setResource('getProjectDB', function (Group $pools, Database $dbForConsole, $database = new Database($dbAdapter, $cache); $databases[$databaseName] = $database; $configure($database); - return null; -// return $database; + + return $database; }; }, ['pools', 'dbForConsole', 'cache']); diff --git a/app/realtime.php b/app/realtime.php index 4f0ba634e7..80c5a4fbaf 100644 --- a/app/realtime.php +++ b/app/realtime.php @@ -78,17 +78,17 @@ function getProjectDB(Document $project): Database $database = new Database($dbAdapter, getCache()); -// if ($project->getAttribute('database') === DATABASE_SHARED_TABLES) { + if ($project->getAttribute('database') === DATABASE_SHARED_TABLES) { $database ->setShareTables(true) ->setTenant($project->getInternalId()) ->setNamespace(''); -// } else { -// $database -// ->setShareTables(false) -// ->setTenant(null) -// ->setNamespace('_' . $project->getInternalId()); -// } + } else { + $database + ->setShareTables(false) + ->setTenant(null) + ->setNamespace('_' . $project->getInternalId()); + } return $database; } diff --git a/app/worker.php b/app/worker.php index a3ff06f9a5..989f1223af 100644 --- a/app/worker.php +++ b/app/worker.php @@ -75,17 +75,17 @@ Server::setResource('dbForProject', function (Cache $cache, Registry $register, ->setMetadata('host', \gethostname()) ->setMetadata('project', $project->getId()); -// if ($project->getAttribute('database') === DATABASE_SHARED_TABLES) { + if ($project->getAttribute('database') === DATABASE_SHARED_TABLES) { $database ->setShareTables(true) ->setTenant($project->getInternalId()) ->setNamespace(''); -// } else { -// $database -// ->setShareTables(false) -// ->setTenant(null) -// ->setNamespace('_' . $project->getInternalId()); -// } + } else { + $database + ->setShareTables(false) + ->setTenant(null) + ->setNamespace('_' . $project->getInternalId()); + } return $database; }, ['cache', 'register', 'message', 'dbForConsole']); @@ -114,17 +114,17 @@ Server::setResource('getProjectDB', function (Group $pools, Database $dbForConso if (isset($databases[$databaseName])) { $database = $databases[$databaseName]; -// if ($project->getAttribute('database') === DATABASE_SHARED_TABLES) { + if ($project->getAttribute('database') === DATABASE_SHARED_TABLES) { $database ->setShareTables(true) ->setTenant($project->getInternalId()) ->setNamespace(''); -// } else { -// $database -// ->setShareTables(false) -// ->setTenant(null) -// ->setNamespace('_' . $project->getInternalId()); -// } + } else { + $database + ->setShareTables(false) + ->setTenant(null) + ->setNamespace('_' . $project->getInternalId()); + } return $database; } @@ -138,17 +138,17 @@ Server::setResource('getProjectDB', function (Group $pools, Database $dbForConso $databases[$databaseName] = $database; -// if ($project->getAttribute('database') === DATABASE_SHARED_TABLES) { + if ($project->getAttribute('database') === DATABASE_SHARED_TABLES) { $database ->setShareTables(true) ->setTenant($project->getInternalId()) ->setNamespace(''); -// } else { -// $database -// ->setShareTables(false) -// ->setTenant(null) -// ->setNamespace('_' . $project->getInternalId()); -// } + } else { + $database + ->setShareTables(false) + ->setTenant(null) + ->setNamespace('_' . $project->getInternalId()); + } return $database; }; diff --git a/src/Appwrite/Platform/Tasks/DeleteOrphanedProjects.php b/src/Appwrite/Platform/Tasks/DeleteOrphanedProjects.php index 860cc3a8a2..5fe4b10472 100644 --- a/src/Appwrite/Platform/Tasks/DeleteOrphanedProjects.php +++ b/src/Appwrite/Platform/Tasks/DeleteOrphanedProjects.php @@ -83,15 +83,26 @@ class DeleteOrphanedProjects extends Action } try { - $db = $project->getAttribute('database'); + $database = $project->getAttribute('database'); $adapter = $pools - ->get($db) + ->get($database) ->pop() ->getResource(); $dbForProject = new Database($adapter, $cache); $dbForProject->setDatabase('appwrite'); - $dbForProject->setNamespace('_' . $project->getInternalId()); + + if ($database === DATABASE_SHARED_TABLES) { + $dbForProject + ->setShareTables(true) + ->setTenant($project->getInternalId()) + ->setNamespace(''); + } else { + $dbForProject + ->setShareTables(false) + ->setTenant(null) + ->setNamespace('_' . $project->getInternalId()); + } $collectionsCreated = 0; $cnt++; diff --git a/src/Appwrite/Platform/Tasks/GetMigrationStats.php b/src/Appwrite/Platform/Tasks/GetMigrationStats.php index a8d88e1459..fa47c27c6d 100644 --- a/src/Appwrite/Platform/Tasks/GetMigrationStats.php +++ b/src/Appwrite/Platform/Tasks/GetMigrationStats.php @@ -95,15 +95,26 @@ class GetMigrationStats extends Action Console::info("Getting stats for {$project->getId()}"); try { - $db = $project->getAttribute('database'); + $database = $project->getAttribute('database'); $adapter = $pools - ->get($db) + ->get($database) ->pop() ->getResource(); $dbForProject = new Database($adapter, $cache); $dbForProject->setDatabase('appwrite'); - $dbForProject->setNamespace('_' . $project->getInternalId()); + + if ($database === DATABASE_SHARED_TABLES) { + $dbForProject + ->setShareTables(true) + ->setTenant($project->getInternalId()) + ->setNamespace(''); + } else { + $dbForProject + ->setShareTables(false) + ->setTenant(null) + ->setNamespace('_' . $project->getInternalId()); + } /** Get Project ID */ $stats['Project ID'] = $project->getId(); diff --git a/src/Appwrite/Platform/Workers/Hamster.php b/src/Appwrite/Platform/Workers/Hamster.php index 98bc56ee14..167e4d7fe7 100644 --- a/src/Appwrite/Platform/Workers/Hamster.php +++ b/src/Appwrite/Platform/Workers/Hamster.php @@ -115,15 +115,26 @@ class Hamster extends Action Console::log("Getting stats for Project {$project->getId()}"); try { - $db = $project->getAttribute('database'); + $database = $project->getAttribute('database'); $adapter = $pools - ->get($db) + ->get($database) ->pop() ->getResource(); $dbForProject = new Database($adapter, $cache); $dbForProject->setDatabase('appwrite'); - $dbForProject->setNamespace('_' . $project->getInternalId()); + + if ($database === DATABASE_SHARED_TABLES) { + $dbForProject + ->setShareTables(true) + ->setTenant($project->getInternalId()) + ->setNamespace(''); + } else { + $dbForProject + ->setShareTables(false) + ->setTenant(null) + ->setNamespace('_' . $project->getInternalId()); + } $statsPerProject = [];