mirror of
https://github.com/appwrite/appwrite
synced 2026-05-23 17:08:45 +00:00
project creation fix
This commit is contained in:
parent
c3a8db0ea4
commit
36bff12939
2 changed files with 40 additions and 52 deletions
|
|
@ -31,7 +31,6 @@ use Utopia\Database\Helpers\Permission;
|
|||
use Utopia\Database\Helpers\Role;
|
||||
use Utopia\Database\Query;
|
||||
use Utopia\Database\Validator\Datetime as DatetimeValidator;
|
||||
use Utopia\Database\Validator\Query\Cursor;
|
||||
use Utopia\Database\Validator\UID;
|
||||
use Utopia\Domains\Validator\PublicDomain;
|
||||
use Utopia\DSN\DSN;
|
||||
|
|
@ -201,8 +200,7 @@ App::post('/v1/projects')
|
|||
if (\in_array($dsn->getHost(), $sharedTables)) {
|
||||
$dbForProject
|
||||
->setSharedTables(true)
|
||||
->setTenant($project->getInternalId())
|
||||
//->setTenant($globalCollections ? null : $project->getInternalId())
|
||||
->setTenant($globalCollections ? null : $project->getInternalId())
|
||||
->setNamespace($dsn->getParam('namespace'));
|
||||
} else {
|
||||
$dbForProject
|
||||
|
|
@ -213,50 +211,46 @@ App::post('/v1/projects')
|
|||
|
||||
$create = true;
|
||||
|
||||
// try {
|
||||
try {
|
||||
$dbForProject->create();
|
||||
// } catch (Duplicate) {
|
||||
// $create = false;
|
||||
//}
|
||||
} catch (Duplicate) {
|
||||
$create = false;
|
||||
}
|
||||
|
||||
$audit = new Audit($dbForProject);
|
||||
$audit->setup();
|
||||
if ($create || !$globalCollections) {
|
||||
$audit = new Audit($dbForProject);
|
||||
$audit->setup();
|
||||
|
||||
$abuse = new TimeLimit('', 0, 1, $dbForProject);
|
||||
$abuse->setup();
|
||||
$abuse = new TimeLimit('', 0, 1, $dbForProject);
|
||||
$abuse->setup();
|
||||
|
||||
/** @var array $collections */
|
||||
$collections = Config::getParam('collections', [])['projects'] ?? [];
|
||||
/** @var array $collections */
|
||||
$collections = Config::getParam('collections', [])['projects'] ?? [];
|
||||
|
||||
foreach ($collections as $key => $collection) {
|
||||
if (($collection['$collection'] ?? '') !== Database::METADATA) {
|
||||
continue;
|
||||
}
|
||||
foreach ($collections as $key => $collection) {
|
||||
if (($collection['$collection'] ?? '') !== Database::METADATA) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$attributes = \array_map(function (array $attribute) {
|
||||
return new Document($attribute);
|
||||
}, $collection['attributes']);
|
||||
|
||||
$indexes = \array_map(function (array $index) {
|
||||
return new Document($index);
|
||||
}, $collection['indexes']);
|
||||
$attributes = \array_map(fn ($attribute) => new Document($attribute), $collection['attributes']);
|
||||
$indexes = \array_map(fn (array $index) => new Document($index), $collection['indexes']);
|
||||
|
||||
try {
|
||||
$dbForProject->createCollection($key, $attributes, $indexes);
|
||||
} catch (Duplicate) {
|
||||
// if (!$globalCollections) {
|
||||
// $dbForProject->createDocument(Database::METADATA, new Document([
|
||||
// '$id' => ID::custom($key),
|
||||
// '$permissions' => [Permission::create(Role::any())],
|
||||
// 'name' => $key,
|
||||
// 'attributes' => $attributes,
|
||||
// 'indexes' => $indexes,
|
||||
// 'documentSecurity' => true
|
||||
// ]));
|
||||
// }
|
||||
if (!$globalCollections) {
|
||||
$dbForProject->createDocument(Database::METADATA, new Document([
|
||||
'$id' => ID::custom($key),
|
||||
'$permissions' => [Permission::create(Role::any())],
|
||||
'name' => $key,
|
||||
'attributes' => $attributes,
|
||||
'indexes' => $indexes,
|
||||
'documentSecurity' => true
|
||||
]));
|
||||
}
|
||||
}
|
||||
}
|
||||
// }
|
||||
}
|
||||
|
||||
// Hook allowing instant project mirroring during migration
|
||||
// Outside of migration, hook is not registered and has no effect
|
||||
|
|
@ -302,12 +296,6 @@ App::get('/v1/projects')
|
|||
$cursor = reset($cursor);
|
||||
if ($cursor) {
|
||||
/** @var Query $cursor */
|
||||
|
||||
$validator = new Cursor();
|
||||
if (!$validator->isValid($cursor)) {
|
||||
throw new Exception(Exception::GENERAL_QUERY_INVALID, $validator->getDescription());
|
||||
}
|
||||
|
||||
$projectId = $cursor->getValue();
|
||||
$cursorDocument = $dbForConsole->getDocument('projects', $projectId);
|
||||
|
||||
|
|
@ -1082,7 +1070,7 @@ App::get('/v1/projects/:projectId/webhooks/:webhookId')
|
|||
Query::equal('projectInternalId', [$project->getInternalId()]),
|
||||
]);
|
||||
|
||||
if ($webhook->isEmpty()) {
|
||||
if ($webhook === false || $webhook->isEmpty()) {
|
||||
throw new Exception(Exception::WEBHOOK_NOT_FOUND);
|
||||
}
|
||||
|
||||
|
|
@ -1125,7 +1113,7 @@ App::put('/v1/projects/:projectId/webhooks/:webhookId')
|
|||
Query::equal('projectInternalId', [$project->getInternalId()]),
|
||||
]);
|
||||
|
||||
if ($webhook->isEmpty()) {
|
||||
if ($webhook === false || $webhook->isEmpty()) {
|
||||
throw new Exception(Exception::WEBHOOK_NOT_FOUND);
|
||||
}
|
||||
|
||||
|
|
@ -1175,7 +1163,7 @@ App::patch('/v1/projects/:projectId/webhooks/:webhookId/signature')
|
|||
Query::equal('projectInternalId', [$project->getInternalId()]),
|
||||
]);
|
||||
|
||||
if ($webhook->isEmpty()) {
|
||||
if ($webhook === false || $webhook->isEmpty()) {
|
||||
throw new Exception(Exception::WEBHOOK_NOT_FOUND);
|
||||
}
|
||||
|
||||
|
|
@ -1213,7 +1201,7 @@ App::delete('/v1/projects/:projectId/webhooks/:webhookId')
|
|||
Query::equal('projectInternalId', [$project->getInternalId()]),
|
||||
]);
|
||||
|
||||
if ($webhook->isEmpty()) {
|
||||
if ($webhook === false || $webhook->isEmpty()) {
|
||||
throw new Exception(Exception::WEBHOOK_NOT_FOUND);
|
||||
}
|
||||
|
||||
|
|
@ -1335,7 +1323,7 @@ App::get('/v1/projects/:projectId/keys/:keyId')
|
|||
Query::equal('projectInternalId', [$project->getInternalId()]),
|
||||
]);
|
||||
|
||||
if ($key->isEmpty()) {
|
||||
if ($key === false || $key->isEmpty()) {
|
||||
throw new Exception(Exception::KEY_NOT_FOUND);
|
||||
}
|
||||
|
||||
|
|
@ -1372,7 +1360,7 @@ App::put('/v1/projects/:projectId/keys/:keyId')
|
|||
Query::equal('projectInternalId', [$project->getInternalId()]),
|
||||
]);
|
||||
|
||||
if ($key->isEmpty()) {
|
||||
if ($key === false || $key->isEmpty()) {
|
||||
throw new Exception(Exception::KEY_NOT_FOUND);
|
||||
}
|
||||
|
||||
|
|
@ -1414,7 +1402,7 @@ App::delete('/v1/projects/:projectId/keys/:keyId')
|
|||
Query::equal('projectInternalId', [$project->getInternalId()]),
|
||||
]);
|
||||
|
||||
if ($key->isEmpty()) {
|
||||
if ($key === false || $key->isEmpty()) {
|
||||
throw new Exception(Exception::KEY_NOT_FOUND);
|
||||
}
|
||||
|
||||
|
|
@ -1572,7 +1560,7 @@ App::get('/v1/projects/:projectId/platforms/:platformId')
|
|||
Query::equal('projectInternalId', [$project->getInternalId()]),
|
||||
]);
|
||||
|
||||
if ($platform->isEmpty()) {
|
||||
if ($platform === false || $platform->isEmpty()) {
|
||||
throw new Exception(Exception::PLATFORM_NOT_FOUND);
|
||||
}
|
||||
|
||||
|
|
@ -1609,7 +1597,7 @@ App::put('/v1/projects/:projectId/platforms/:platformId')
|
|||
Query::equal('projectInternalId', [$project->getInternalId()]),
|
||||
]);
|
||||
|
||||
if ($platform->isEmpty()) {
|
||||
if ($platform === false || $platform->isEmpty()) {
|
||||
throw new Exception(Exception::PLATFORM_NOT_FOUND);
|
||||
}
|
||||
|
||||
|
|
@ -1653,7 +1641,7 @@ App::delete('/v1/projects/:projectId/platforms/:platformId')
|
|||
Query::equal('projectInternalId', [$project->getInternalId()]),
|
||||
]);
|
||||
|
||||
if ($platform->isEmpty()) {
|
||||
if ($platform === false || $platform->isEmpty()) {
|
||||
throw new Exception(Exception::PLATFORM_NOT_FOUND);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@
|
|||
"utopia-php/cache": "dev-feat-redis-sync as 0.10.2",
|
||||
"utopia-php/cli": "0.15.*",
|
||||
"utopia-php/config": "0.2.*",
|
||||
"utopia-php/database": "0.53.9",
|
||||
"utopia-php/database": "dev-feat-migrations as 0.53.9",
|
||||
"utopia-php/domains": "0.5.*",
|
||||
"utopia-php/dsn": "0.2.1",
|
||||
"utopia-php/framework": "0.33.*",
|
||||
|
|
|
|||
Loading…
Reference in a new issue