(fix): use adapter ID type to determine tenant value for MongoDB compatibility

This commit is contained in:
Jake Barnby
2026-03-13 19:13:07 +13:00
parent f15f63c0c1
commit d91e3543c8
7 changed files with 74 additions and 22 deletions
+16 -4
View File
@@ -161,9 +161,12 @@ $setResource('getProjectDB', function (Group $pools, Database $dbForPlatform, $c
$sharedTables = \explode(',', System::getEnv('_APP_DATABASE_SHARED_TABLES', ''));
if (\in_array($dsn->getHost(), $sharedTables)) {
$tenant = $database->getIdAttributeType() === Database::VAR_INTEGER
? (int)$project->getSequence()
: $project->getSequence();
$database
->setSharedTables(true)
->setTenant((int)$project->getSequence())
->setTenant($tenant)
->setNamespace($dsn->getParam('namespace'));
} else {
$database
@@ -182,9 +185,12 @@ $setResource('getProjectDB', function (Group $pools, Database $dbForPlatform, $c
$sharedTables = \explode(',', System::getEnv('_APP_DATABASE_SHARED_TABLES', ''));
if (\in_array($dsn->getHost(), $sharedTables)) {
$tenant = $database->getIdAttributeType() === Database::VAR_INTEGER
? (int)$project->getSequence()
: $project->getSequence();
$database
->setSharedTables(true)
->setTenant((int)$project->getSequence())
->setTenant($tenant)
->setNamespace($dsn->getParam('namespace'));
} else {
$database
@@ -208,7 +214,10 @@ $setResource('getLogsDB', function (Group $pools, Cache $cache, Authorization $a
return function (?Document $project = null) use ($pools, $cache, $database, $authorization) {
if ($database !== null && $project !== null && !$project->isEmpty() && $project->getId() !== 'console') {
$database->setTenant((int)$project->getSequence());
$tenant = $database->getIdAttributeType() === Database::VAR_INTEGER
? (int)$project->getSequence()
: $project->getSequence();
$database->setTenant($tenant);
return $database;
}
@@ -225,7 +234,10 @@ $setResource('getLogsDB', function (Group $pools, Cache $cache, Authorization $a
// set tenant
if ($project !== null && !$project->isEmpty() && $project->getId() !== 'console') {
$database->setTenant((int)$project->getSequence());
$tenant = $database->getIdAttributeType() === Database::VAR_INTEGER
? (int)$project->getSequence()
: $project->getSequence();
$database->setTenant($tenant);
}
return $database;
+16 -4
View File
@@ -582,9 +582,12 @@ Http::setResource('dbForProject', function (Group $pools, Database $dbForPlatfor
$sharedTables = \explode(',', System::getEnv('_APP_DATABASE_SHARED_TABLES', ''));
if (\in_array($dsn->getHost(), $sharedTables)) {
$tenant = $database->getIdAttributeType() === Database::VAR_INTEGER
? (int) $project->getSequence()
: $project->getSequence();
$database
->setSharedTables(true)
->setTenant((int) $project->getSequence())
->setTenant($tenant)
->setNamespace($dsn->getParam('namespace'));
} else {
$database
@@ -850,9 +853,12 @@ Http::setResource('getProjectDB', function (Group $pools, Database $dbForPlatfor
$sharedTables = \explode(',', System::getEnv('_APP_DATABASE_SHARED_TABLES', ''));
if (\in_array($dsn->getHost(), $sharedTables)) {
$tenant = $database->getIdAttributeType() === Database::VAR_INTEGER
? (int) $project->getSequence()
: $project->getSequence();
$database
->setSharedTables(true)
->setTenant((int) $project->getSequence())
->setTenant($tenant)
->setNamespace($dsn->getParam('namespace'));
} else {
$database
@@ -882,7 +888,10 @@ Http::setResource('getLogsDB', function (Group $pools, Cache $cache, Authorizati
return function (?Document $project = null) use ($pools, $cache, $authorization, &$database) {
if ($database !== null && $project !== null && !$project->isEmpty() && $project->getId() !== 'console') {
$database->setTenant((int) $project->getSequence());
$tenant = $database->getIdAttributeType() === Database::VAR_INTEGER
? (int) $project->getSequence()
: $project->getSequence();
$database->setTenant($tenant);
return $database;
}
@@ -899,7 +908,10 @@ Http::setResource('getLogsDB', function (Group $pools, Cache $cache, Authorizati
// set tenant
if ($project !== null && !$project->isEmpty() && $project->getId() !== 'console') {
$database->setTenant((int) $project->getSequence());
$tenant = $database->getIdAttributeType() === Database::VAR_INTEGER
? (int) $project->getSequence()
: $project->getSequence();
$database->setTenant($tenant);
}
return $database;
+4 -1
View File
@@ -113,9 +113,12 @@ if (!function_exists('getProjectDB')) {
$sharedTables = \explode(',', System::getEnv('_APP_DATABASE_SHARED_TABLES', ''));
if (\in_array($dsn->getHost(), $sharedTables)) {
$tenant = $database->getIdAttributeType() === Database::VAR_INTEGER
? (int)$project->getSequence()
: $project->getSequence();
$database
->setSharedTables(true)
->setTenant((int)$project->getSequence())
->setTenant($tenant)
->setNamespace($dsn->getParam('namespace'));
} else {
$database
+20 -5
View File
@@ -109,9 +109,12 @@ Server::setResource('dbForProject', function (Cache $cache, Registry $register,
$sharedTables = \explode(',', System::getEnv('_APP_DATABASE_SHARED_TABLES', ''));
if (\in_array($dsn->getHost(), $sharedTables)) {
$tenant = $database->getIdAttributeType() === Database::VAR_INTEGER
? (int)$project->getSequence()
: $project->getSequence();
$database
->setSharedTables(true)
->setTenant((int)$project->getSequence())
->setTenant($tenant)
->setNamespace($dsn->getParam('namespace'));
} else {
$database
@@ -149,9 +152,12 @@ Server::setResource('getProjectDB', function (Group $pools, Database $dbForPlatf
$sharedTables = \explode(',', System::getEnv('_APP_DATABASE_SHARED_TABLES', ''));
if (\in_array($dsn->getHost(), $sharedTables)) {
$tenant = $database->getIdAttributeType() === Database::VAR_INTEGER
? (int)$project->getSequence()
: $project->getSequence();
$database
->setSharedTables(true)
->setTenant((int)$project->getSequence())
->setTenant($tenant)
->setNamespace($dsn->getParam('namespace'));
} else {
$database
@@ -171,9 +177,12 @@ Server::setResource('getProjectDB', function (Group $pools, Database $dbForPlatf
$sharedTables = \explode(',', System::getEnv('_APP_DATABASE_SHARED_TABLES', ''));
if (\in_array($dsn->getHost(), $sharedTables)) {
$tenant = $database->getIdAttributeType() === Database::VAR_INTEGER
? (int)$project->getSequence()
: $project->getSequence();
$database
->setSharedTables(true)
->setTenant((int)$project->getSequence())
->setTenant($tenant)
->setNamespace($dsn->getParam('namespace'));
} else {
$database
@@ -195,7 +204,10 @@ Server::setResource('getLogsDB', function (Group $pools, Cache $cache, Authoriza
$database = null;
return function (?Document $project = null) use ($pools, $cache, $database, $authorization) {
if ($database !== null && $project !== null && !$project->isEmpty() && $project->getId() !== 'console') {
$database->setTenant((int)$project->getSequence());
$tenant = $database->getIdAttributeType() === Database::VAR_INTEGER
? (int)$project->getSequence()
: $project->getSequence();
$database->setTenant($tenant);
return $database;
}
@@ -212,7 +224,10 @@ Server::setResource('getLogsDB', function (Group $pools, Cache $cache, Authoriza
// set tenant
if ($project !== null && !$project->isEmpty() && $project->getId() !== 'console') {
$database->setTenant((int)$project->getSequence());
$tenant = $database->getIdAttributeType() === Database::VAR_INTEGER
? (int)$project->getSequence()
: $project->getSequence();
$database->setTenant($tenant);
}
return $database;
Generated
+6 -6
View File
@@ -3850,16 +3850,16 @@
},
{
"name": "utopia-php/database",
"version": "5.3.9",
"version": "5.3.10",
"source": {
"type": "git",
"url": "https://github.com/utopia-php/database.git",
"reference": "503f13d56c3a76c417f245a9474c0a3ed4c89ed2"
"reference": "1c768ad629984af7f6dbfbbb9e2e922f8cdfb3eb"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/utopia-php/database/zipball/503f13d56c3a76c417f245a9474c0a3ed4c89ed2",
"reference": "503f13d56c3a76c417f245a9474c0a3ed4c89ed2",
"url": "https://api.github.com/repos/utopia-php/database/zipball/1c768ad629984af7f6dbfbbb9e2e922f8cdfb3eb",
"reference": "1c768ad629984af7f6dbfbbb9e2e922f8cdfb3eb",
"shasum": ""
},
"require": {
@@ -3902,9 +3902,9 @@
],
"support": {
"issues": "https://github.com/utopia-php/database/issues",
"source": "https://github.com/utopia-php/database/tree/5.3.9"
"source": "https://github.com/utopia-php/database/tree/5.3.10"
},
"time": "2026-03-12T13:17:43+00:00"
"time": "2026-03-13T06:10:41+00:00"
},
{
"name": "utopia-php/detector",
@@ -218,9 +218,15 @@ class Create extends Action
$dbForProject->setDatabase(APP_DATABASE);
if ($sharedTables) {
$tenant = null;
if ($sharedTablesV1) {
$tenant = $dbForProject->getIdAttributeType() === Database::VAR_INTEGER
? (int)$project->getSequence()
: $project->getSequence();
}
$dbForProject
->setSharedTables(true)
->setTenant($sharedTablesV1 ? (int)$project->getSequence() : null)
->setTenant($tenant)
->setNamespace($dsn->getParam('namespace'));
} else {
$dbForProject
+5 -1
View File
@@ -479,7 +479,11 @@ class StatsUsage extends Action
}
}
$documentClone = clone $stat;
$documentClone->setAttribute('$tenant', (int) $project->getSequence());
$dbForLogs = ($this->getLogsDB)();
$tenant = $dbForLogs->getIdAttributeType() === Database::VAR_INTEGER
? (int) $project->getSequence()
: $project->getSequence();
$documentClone->setAttribute('$tenant', $tenant);
$this->statDocuments[] = $documentClone;
}