parseQueries
This commit is contained in:
parent
6c064430fb
commit
ace75b0786
12 changed files with 200 additions and 45 deletions
|
@ -14,6 +14,7 @@ use Appwrite\Event\Mail;
|
||||||
use Appwrite\Auth\Phrase;
|
use Appwrite\Auth\Phrase;
|
||||||
use Appwrite\Extend\Exception;
|
use Appwrite\Extend\Exception;
|
||||||
use Appwrite\Network\Validator\Email;
|
use Appwrite\Network\Validator\Email;
|
||||||
|
use Utopia\Database\Exception\Query as QueryException;
|
||||||
use Utopia\Validator\Host;
|
use Utopia\Validator\Host;
|
||||||
use Utopia\Validator\URL;
|
use Utopia\Validator\URL;
|
||||||
use Utopia\Validator\Boolean;
|
use Utopia\Validator\Boolean;
|
||||||
|
@ -907,7 +908,11 @@ App::get('/v1/account/identities')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->action(function (array $queries, Response $response, Document $user, Database $dbForProject) {
|
->action(function (array $queries, Response $response, Document $user, Database $dbForProject) {
|
||||||
|
|
||||||
$queries = Query::parseQueries($queries);
|
try {
|
||||||
|
$queries = Query::parseQueries($queries);
|
||||||
|
} catch (QueryException $e) {
|
||||||
|
throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
$queries[] = Query::equal('userInternalId', [$user->getInternalId()]);
|
$queries[] = Query::equal('userInternalId', [$user->getInternalId()]);
|
||||||
|
|
||||||
|
@ -2066,7 +2071,12 @@ App::get('/v1/account/logs')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->action(function (array $queries, Response $response, Document $user, Locale $locale, Reader $geodb, Database $dbForProject) {
|
->action(function (array $queries, Response $response, Document $user, Locale $locale, Reader $geodb, Database $dbForProject) {
|
||||||
|
|
||||||
$queries = Query::parseQueries($queries);
|
try {
|
||||||
|
$queries = Query::parseQueries($queries);
|
||||||
|
} catch (QueryException $e) {
|
||||||
|
throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
$grouped = Query::groupByType($queries);
|
$grouped = Query::groupByType($queries);
|
||||||
$limit = $grouped['limit'] ?? APP_LIMIT_COUNT;
|
$limit = $grouped['limit'] ?? APP_LIMIT_COUNT;
|
||||||
$offset = $grouped['offset'] ?? 0;
|
$offset = $grouped['offset'] ?? 0;
|
||||||
|
|
|
@ -487,7 +487,11 @@ App::get('/v1/databases')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->action(function (array $queries, string $search, Response $response, Database $dbForProject) {
|
->action(function (array $queries, string $search, Response $response, Database $dbForProject) {
|
||||||
|
|
||||||
$queries = Query::parseQueries($queries);
|
try {
|
||||||
|
$queries = Query::parseQueries($queries);
|
||||||
|
} catch (QueryException $e) {
|
||||||
|
throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
if (!empty($search)) {
|
if (!empty($search)) {
|
||||||
$queries[] = Query::search('search', $search);
|
$queries[] = Query::search('search', $search);
|
||||||
|
@ -567,7 +571,12 @@ App::get('/v1/databases/:databaseId/logs')
|
||||||
throw new Exception(Exception::DATABASE_NOT_FOUND);
|
throw new Exception(Exception::DATABASE_NOT_FOUND);
|
||||||
}
|
}
|
||||||
|
|
||||||
$queries = Query::parseQueries($queries);
|
try {
|
||||||
|
$queries = Query::parseQueries($queries);
|
||||||
|
} catch (QueryException $e) {
|
||||||
|
throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
$grouped = Query::groupByType($queries);
|
$grouped = Query::groupByType($queries);
|
||||||
$limit = $grouped['limit'] ?? APP_LIMIT_COUNT;
|
$limit = $grouped['limit'] ?? APP_LIMIT_COUNT;
|
||||||
$offset = $grouped['offset'] ?? 0;
|
$offset = $grouped['offset'] ?? 0;
|
||||||
|
@ -809,7 +818,11 @@ App::get('/v1/databases/:databaseId/collections')
|
||||||
throw new Exception(Exception::DATABASE_NOT_FOUND);
|
throw new Exception(Exception::DATABASE_NOT_FOUND);
|
||||||
}
|
}
|
||||||
|
|
||||||
$queries = Query::parseQueries($queries);
|
try {
|
||||||
|
$queries = Query::parseQueries($queries);
|
||||||
|
} catch (QueryException $e) {
|
||||||
|
throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
if (!empty($search)) {
|
if (!empty($search)) {
|
||||||
$queries[] = Query::search('search', $search);
|
$queries[] = Query::search('search', $search);
|
||||||
|
@ -908,7 +921,12 @@ App::get('/v1/databases/:databaseId/collections/:collectionId/logs')
|
||||||
throw new Exception(Exception::COLLECTION_NOT_FOUND);
|
throw new Exception(Exception::COLLECTION_NOT_FOUND);
|
||||||
}
|
}
|
||||||
|
|
||||||
$queries = Query::parseQueries($queries);
|
try {
|
||||||
|
$queries = Query::parseQueries($queries);
|
||||||
|
} catch (QueryException $e) {
|
||||||
|
throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
$grouped = Query::groupByType($queries);
|
$grouped = Query::groupByType($queries);
|
||||||
$limit = $grouped['limit'] ?? APP_LIMIT_COUNT;
|
$limit = $grouped['limit'] ?? APP_LIMIT_COUNT;
|
||||||
$offset = $grouped['offset'] ?? 0;
|
$offset = $grouped['offset'] ?? 0;
|
||||||
|
@ -1662,7 +1680,11 @@ App::get('/v1/databases/:databaseId/collections/:collectionId/attributes')
|
||||||
throw new Exception(Exception::COLLECTION_NOT_FOUND);
|
throw new Exception(Exception::COLLECTION_NOT_FOUND);
|
||||||
}
|
}
|
||||||
|
|
||||||
$queries = Query::parseQueries($queries);
|
try {
|
||||||
|
$queries = Query::parseQueries($queries);
|
||||||
|
} catch (QueryException $e) {
|
||||||
|
throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
\array_push(
|
\array_push(
|
||||||
$queries,
|
$queries,
|
||||||
|
@ -2513,7 +2535,12 @@ App::get('/v1/databases/:databaseId/collections/:collectionId/indexes')
|
||||||
throw new Exception(Exception::COLLECTION_NOT_FOUND);
|
throw new Exception(Exception::COLLECTION_NOT_FOUND);
|
||||||
}
|
}
|
||||||
|
|
||||||
$queries = Query::parseQueries($queries);
|
try {
|
||||||
|
$queries = Query::parseQueries($queries);
|
||||||
|
} catch (QueryException $e) {
|
||||||
|
throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
\array_push($queries, Query::equal('collectionId', [$collectionId]), Query::equal('databaseId', [$databaseId]));
|
\array_push($queries, Query::equal('collectionId', [$collectionId]), Query::equal('databaseId', [$databaseId]));
|
||||||
|
|
||||||
// Get cursor document if there was a cursor query
|
// Get cursor document if there was a cursor query
|
||||||
|
@ -2922,10 +2949,8 @@ App::get('/v1/databases/:databaseId/collections/:collectionId/documents')
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$queries = Query::parseQueries($queries); // todo: make this to all parseQueries places?
|
$queries = Query::parseQueries($queries);
|
||||||
} catch (QueryException $e) {
|
} catch (QueryException $e) {
|
||||||
// question: should this throw GENERAL_ARGUMENT_INVALID like all QueryException and get 500 ?
|
|
||||||
// or GENERAL_QUERY_INVALID and get 400?
|
|
||||||
throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage());
|
throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2954,7 +2979,7 @@ App::get('/v1/databases/:databaseId/collections/:collectionId/documents')
|
||||||
} catch (AuthorizationException) {
|
} catch (AuthorizationException) {
|
||||||
throw new Exception(Exception::USER_UNAUTHORIZED);
|
throw new Exception(Exception::USER_UNAUTHORIZED);
|
||||||
} catch (QueryException $e) {
|
} catch (QueryException $e) {
|
||||||
throw new Exception(Exception::GENERAL_ARGUMENT_INVALID, $e->getMessage()); // Should this be GENERAL_QUERY_INVALID? or 500 is ok?
|
throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add $collectionId and $databaseId for all documents
|
// Add $collectionId and $databaseId for all documents
|
||||||
|
@ -3052,14 +3077,18 @@ App::get('/v1/databases/:databaseId/collections/:collectionId/documents/:documen
|
||||||
throw new Exception(Exception::COLLECTION_NOT_FOUND);
|
throw new Exception(Exception::COLLECTION_NOT_FOUND);
|
||||||
}
|
}
|
||||||
|
|
||||||
$queries = Query::parseQueries($queries);
|
try {
|
||||||
|
$queries = Query::parseQueries($queries);
|
||||||
|
} catch (QueryException $e) {
|
||||||
|
throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$document = $dbForProject->getDocument('database_' . $database->getInternalId() . '_collection_' . $collection->getInternalId(), $documentId, $queries);
|
$document = $dbForProject->getDocument('database_' . $database->getInternalId() . '_collection_' . $collection->getInternalId(), $documentId, $queries);
|
||||||
} catch (AuthorizationException) {
|
} catch (AuthorizationException) {
|
||||||
throw new Exception(Exception::USER_UNAUTHORIZED);
|
throw new Exception(Exception::USER_UNAUTHORIZED);
|
||||||
} catch (QueryException $e) {
|
} catch (QueryException $e) {
|
||||||
throw new Exception(Exception::GENERAL_ARGUMENT_INVALID, $e->getMessage());
|
throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($document->isEmpty()) {
|
if ($document->isEmpty()) {
|
||||||
|
@ -3148,7 +3177,12 @@ App::get('/v1/databases/:databaseId/collections/:collectionId/documents/:documen
|
||||||
throw new Exception(Exception::DOCUMENT_NOT_FOUND);
|
throw new Exception(Exception::DOCUMENT_NOT_FOUND);
|
||||||
}
|
}
|
||||||
|
|
||||||
$queries = Query::parseQueries($queries);
|
try {
|
||||||
|
$queries = Query::parseQueries($queries);
|
||||||
|
} catch (QueryException $e) {
|
||||||
|
throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
$grouped = Query::groupByType($queries);
|
$grouped = Query::groupByType($queries);
|
||||||
$limit = $grouped['limit'] ?? APP_LIMIT_COUNT;
|
$limit = $grouped['limit'] ?? APP_LIMIT_COUNT;
|
||||||
$offset = $grouped['offset'] ?? 0;
|
$offset = $grouped['offset'] ?? 0;
|
||||||
|
|
|
@ -12,6 +12,7 @@ use Appwrite\Utopia\Response\Model\Rule;
|
||||||
use Appwrite\Extend\Exception;
|
use Appwrite\Extend\Exception;
|
||||||
use Appwrite\Utopia\Database\Validator\CustomId;
|
use Appwrite\Utopia\Database\Validator\CustomId;
|
||||||
use Appwrite\Messaging\Adapter\Realtime;
|
use Appwrite\Messaging\Adapter\Realtime;
|
||||||
|
use Utopia\Database\Exception\Query as QueryException;
|
||||||
use Utopia\Validator\Assoc;
|
use Utopia\Validator\Assoc;
|
||||||
use Utopia\Database\Helpers\ID;
|
use Utopia\Database\Helpers\ID;
|
||||||
use Utopia\Database\Helpers\Permission;
|
use Utopia\Database\Helpers\Permission;
|
||||||
|
@ -366,7 +367,11 @@ App::get('/v1/functions')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->action(function (array $queries, string $search, Response $response, Database $dbForProject) {
|
->action(function (array $queries, string $search, Response $response, Database $dbForProject) {
|
||||||
|
|
||||||
$queries = Query::parseQueries($queries);
|
try {
|
||||||
|
$queries = Query::parseQueries($queries);
|
||||||
|
} catch (QueryException $e) {
|
||||||
|
throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
if (!empty($search)) {
|
if (!empty($search)) {
|
||||||
$queries[] = Query::search('search', $search);
|
$queries[] = Query::search('search', $search);
|
||||||
|
@ -1256,7 +1261,11 @@ App::get('/v1/functions/:functionId/deployments')
|
||||||
throw new Exception(Exception::FUNCTION_NOT_FOUND);
|
throw new Exception(Exception::FUNCTION_NOT_FOUND);
|
||||||
}
|
}
|
||||||
|
|
||||||
$queries = Query::parseQueries($queries);
|
try {
|
||||||
|
$queries = Query::parseQueries($queries);
|
||||||
|
} catch (QueryException $e) {
|
||||||
|
throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
if (!empty($search)) {
|
if (!empty($search)) {
|
||||||
$queries[] = Query::search('search', $search);
|
$queries[] = Query::search('search', $search);
|
||||||
|
@ -1794,7 +1803,11 @@ App::get('/v1/functions/:functionId/executions')
|
||||||
throw new Exception(Exception::FUNCTION_NOT_FOUND);
|
throw new Exception(Exception::FUNCTION_NOT_FOUND);
|
||||||
}
|
}
|
||||||
|
|
||||||
$queries = Query::parseQueries($queries);
|
try {
|
||||||
|
$queries = Query::parseQueries($queries);
|
||||||
|
} catch (QueryException $e) {
|
||||||
|
throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
if (!empty($search)) {
|
if (!empty($search)) {
|
||||||
$queries[] = Query::search('search', $search);
|
$queries[] = Query::search('search', $search);
|
||||||
|
|
|
@ -22,6 +22,7 @@ use Utopia\Audit\Audit;
|
||||||
use Utopia\Database\Database;
|
use Utopia\Database\Database;
|
||||||
use Utopia\Database\Document;
|
use Utopia\Database\Document;
|
||||||
use Utopia\Database\Exception\Duplicate as DuplicateException;
|
use Utopia\Database\Exception\Duplicate as DuplicateException;
|
||||||
|
use Utopia\Database\Exception\Query as QueryException;
|
||||||
use Utopia\Database\Helpers\ID;
|
use Utopia\Database\Helpers\ID;
|
||||||
use Utopia\Database\Query;
|
use Utopia\Database\Query;
|
||||||
use Utopia\Database\Validator\Authorization;
|
use Utopia\Database\Validator\Authorization;
|
||||||
|
@ -837,7 +838,11 @@ App::get('/v1/messaging/providers')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->action(function (array $queries, string $search, Database $dbForProject, Response $response) {
|
->action(function (array $queries, string $search, Database $dbForProject, Response $response) {
|
||||||
$queries = Query::parseQueries($queries);
|
try {
|
||||||
|
$queries = Query::parseQueries($queries);
|
||||||
|
} catch (QueryException $e) {
|
||||||
|
throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
if (!empty($search)) {
|
if (!empty($search)) {
|
||||||
$queries[] = Query::search('search', $search);
|
$queries[] = Query::search('search', $search);
|
||||||
|
@ -888,7 +893,12 @@ App::get('/v1/messaging/providers/:providerId/logs')
|
||||||
throw new Exception(Exception::PROVIDER_NOT_FOUND);
|
throw new Exception(Exception::PROVIDER_NOT_FOUND);
|
||||||
}
|
}
|
||||||
|
|
||||||
$queries = Query::parseQueries($queries);
|
try {
|
||||||
|
$queries = Query::parseQueries($queries);
|
||||||
|
} catch (QueryException $e) {
|
||||||
|
throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
$grouped = Query::groupByType($queries);
|
$grouped = Query::groupByType($queries);
|
||||||
$limit = $grouped['limit'] ?? APP_LIMIT_COUNT;
|
$limit = $grouped['limit'] ?? APP_LIMIT_COUNT;
|
||||||
$offset = $grouped['offset'] ?? 0;
|
$offset = $grouped['offset'] ?? 0;
|
||||||
|
@ -1944,7 +1954,11 @@ App::get('/v1/messaging/topics')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->action(function (array $queries, string $search, Database $dbForProject, Response $response) {
|
->action(function (array $queries, string $search, Database $dbForProject, Response $response) {
|
||||||
$queries = Query::parseQueries($queries);
|
try {
|
||||||
|
$queries = Query::parseQueries($queries);
|
||||||
|
} catch (QueryException $e) {
|
||||||
|
throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
if (!empty($search)) {
|
if (!empty($search)) {
|
||||||
$queries[] = Query::search('search', $search);
|
$queries[] = Query::search('search', $search);
|
||||||
|
@ -1995,7 +2009,12 @@ App::get('/v1/messaging/topics/:topicId/logs')
|
||||||
throw new Exception(Exception::TOPIC_NOT_FOUND);
|
throw new Exception(Exception::TOPIC_NOT_FOUND);
|
||||||
}
|
}
|
||||||
|
|
||||||
$queries = Query::parseQueries($queries);
|
try {
|
||||||
|
$queries = Query::parseQueries($queries);
|
||||||
|
} catch (QueryException $e) {
|
||||||
|
throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
$grouped = Query::groupByType($queries);
|
$grouped = Query::groupByType($queries);
|
||||||
$limit = $grouped['limit'] ?? APP_LIMIT_COUNT;
|
$limit = $grouped['limit'] ?? APP_LIMIT_COUNT;
|
||||||
$offset = $grouped['offset'] ?? 0;
|
$offset = $grouped['offset'] ?? 0;
|
||||||
|
@ -2258,7 +2277,11 @@ App::get('/v1/messaging/topics/:topicId/subscribers')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->action(function (string $topicId, array $queries, string $search, Database $dbForProject, Response $response) {
|
->action(function (string $topicId, array $queries, string $search, Database $dbForProject, Response $response) {
|
||||||
$queries = Query::parseQueries($queries);
|
try {
|
||||||
|
$queries = Query::parseQueries($queries);
|
||||||
|
} catch (QueryException $e) {
|
||||||
|
throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
if (!empty($search)) {
|
if (!empty($search)) {
|
||||||
$queries[] = Query::search('search', $search);
|
$queries[] = Query::search('search', $search);
|
||||||
|
@ -2331,7 +2354,12 @@ App::get('/v1/messaging/subscribers/:subscriberId/logs')
|
||||||
throw new Exception(Exception::SUBSCRIBER_NOT_FOUND);
|
throw new Exception(Exception::SUBSCRIBER_NOT_FOUND);
|
||||||
}
|
}
|
||||||
|
|
||||||
$queries = Query::parseQueries($queries);
|
try {
|
||||||
|
$queries = Query::parseQueries($queries);
|
||||||
|
} catch (QueryException $e) {
|
||||||
|
throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
$grouped = Query::groupByType($queries);
|
$grouped = Query::groupByType($queries);
|
||||||
$limit = $grouped['limit'] ?? APP_LIMIT_COUNT;
|
$limit = $grouped['limit'] ?? APP_LIMIT_COUNT;
|
||||||
$offset = $grouped['offset'] ?? 0;
|
$offset = $grouped['offset'] ?? 0;
|
||||||
|
@ -2845,7 +2873,11 @@ App::get('/v1/messaging/messages')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->action(function (array $queries, string $search, Database $dbForProject, Response $response) {
|
->action(function (array $queries, string $search, Database $dbForProject, Response $response) {
|
||||||
$queries = Query::parseQueries($queries);
|
try {
|
||||||
|
$queries = Query::parseQueries($queries);
|
||||||
|
} catch (QueryException $e) {
|
||||||
|
throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
if (!empty($search)) {
|
if (!empty($search)) {
|
||||||
$queries[] = Query::search('search', $search);
|
$queries[] = Query::search('search', $search);
|
||||||
|
@ -2896,7 +2928,12 @@ App::get('/v1/messaging/messages/:messageId/logs')
|
||||||
throw new Exception(Exception::MESSAGE_NOT_FOUND);
|
throw new Exception(Exception::MESSAGE_NOT_FOUND);
|
||||||
}
|
}
|
||||||
|
|
||||||
$queries = Query::parseQueries($queries);
|
try {
|
||||||
|
$queries = Query::parseQueries($queries);
|
||||||
|
} catch (QueryException $e) {
|
||||||
|
throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
$grouped = Query::groupByType($queries);
|
$grouped = Query::groupByType($queries);
|
||||||
$limit = $grouped['limit'] ?? APP_LIMIT_COUNT;
|
$limit = $grouped['limit'] ?? APP_LIMIT_COUNT;
|
||||||
$offset = $grouped['offset'] ?? 0;
|
$offset = $grouped['offset'] ?? 0;
|
||||||
|
@ -2990,7 +3027,11 @@ App::get('/v1/messaging/messages/:messageId/targets')
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$queries = Query::parseQueries($queries);
|
try {
|
||||||
|
$queries = Query::parseQueries($queries);
|
||||||
|
} catch (QueryException $e) {
|
||||||
|
throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
$queries[] = Query::equal('$id', $targetIDs);
|
$queries[] = Query::equal('$id', $targetIDs);
|
||||||
|
|
||||||
|
|
|
@ -14,6 +14,7 @@ use Utopia\App;
|
||||||
use Utopia\Database\Database;
|
use Utopia\Database\Database;
|
||||||
use Utopia\Database\DateTime;
|
use Utopia\Database\DateTime;
|
||||||
use Utopia\Database\Document;
|
use Utopia\Database\Document;
|
||||||
|
use Utopia\Database\Exception\Query as QueryException;
|
||||||
use Utopia\Database\Helpers\ID;
|
use Utopia\Database\Helpers\ID;
|
||||||
use Utopia\Database\Query;
|
use Utopia\Database\Query;
|
||||||
use Utopia\Database\Validator\UID;
|
use Utopia\Database\Validator\UID;
|
||||||
|
@ -384,7 +385,11 @@ App::get('/v1/migrations')
|
||||||
->inject('response')
|
->inject('response')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->action(function (array $queries, string $search, Response $response, Database $dbForProject) {
|
->action(function (array $queries, string $search, Response $response, Database $dbForProject) {
|
||||||
$queries = Query::parseQueries($queries);
|
try {
|
||||||
|
$queries = Query::parseQueries($queries);
|
||||||
|
} catch (QueryException $e) {
|
||||||
|
throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
if (!empty($search)) {
|
if (!empty($search)) {
|
||||||
$queries[] = Query::search('search', $search);
|
$queries[] = Query::search('search', $search);
|
||||||
|
|
|
@ -18,20 +18,18 @@ use Utopia\Audit\Audit;
|
||||||
use Utopia\Cache\Cache;
|
use Utopia\Cache\Cache;
|
||||||
use Utopia\Config\Config;
|
use Utopia\Config\Config;
|
||||||
use Utopia\Database\Database;
|
use Utopia\Database\Database;
|
||||||
use Utopia\Database\DateTime;
|
|
||||||
use Utopia\Database\Document;
|
use Utopia\Database\Document;
|
||||||
use Utopia\Database\Exception\Duplicate;
|
use Utopia\Database\Exception\Duplicate;
|
||||||
|
use Utopia\Database\Exception\Query as QueryException;
|
||||||
use Utopia\Database\Helpers\ID;
|
use Utopia\Database\Helpers\ID;
|
||||||
use Utopia\Database\Helpers\Permission;
|
use Utopia\Database\Helpers\Permission;
|
||||||
use Utopia\Database\Helpers\Role;
|
use Utopia\Database\Helpers\Role;
|
||||||
use Utopia\Database\Query;
|
use Utopia\Database\Query;
|
||||||
use Utopia\Database\Validator\Authorization;
|
|
||||||
use Utopia\Database\Validator\Datetime as DatetimeValidator;
|
use Utopia\Database\Validator\Datetime as DatetimeValidator;
|
||||||
use Utopia\Database\Validator\UID;
|
use Utopia\Database\Validator\UID;
|
||||||
use Utopia\Domains\Validator\PublicDomain;
|
use Utopia\Domains\Validator\PublicDomain;
|
||||||
use Utopia\Locale\Locale;
|
use Utopia\Locale\Locale;
|
||||||
use Utopia\Pools\Group;
|
use Utopia\Pools\Group;
|
||||||
use Utopia\Registry\Registry;
|
|
||||||
use Utopia\Validator\ArrayList;
|
use Utopia\Validator\ArrayList;
|
||||||
use Utopia\Validator\Boolean;
|
use Utopia\Validator\Boolean;
|
||||||
use Utopia\Validator\Hostname;
|
use Utopia\Validator\Hostname;
|
||||||
|
@ -241,7 +239,11 @@ App::get('/v1/projects')
|
||||||
->inject('dbForConsole')
|
->inject('dbForConsole')
|
||||||
->action(function (array $queries, string $search, Response $response, Database $dbForConsole) {
|
->action(function (array $queries, string $search, Response $response, Database $dbForConsole) {
|
||||||
|
|
||||||
$queries = Query::parseQueries($queries);
|
try {
|
||||||
|
$queries = Query::parseQueries($queries);
|
||||||
|
} catch (QueryException $e) {
|
||||||
|
throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
if (!empty($search)) {
|
if (!empty($search)) {
|
||||||
$queries[] = Query::search('search', $search);
|
$queries[] = Query::search('search', $search);
|
||||||
|
|
|
@ -10,6 +10,7 @@ use Appwrite\Utopia\Response;
|
||||||
use Utopia\App;
|
use Utopia\App;
|
||||||
use Utopia\Database\Database;
|
use Utopia\Database\Database;
|
||||||
use Utopia\Database\Document;
|
use Utopia\Database\Document;
|
||||||
|
use Utopia\Database\Exception\Query as QueryException;
|
||||||
use Utopia\Database\Helpers\ID;
|
use Utopia\Database\Helpers\ID;
|
||||||
use Utopia\Database\Query;
|
use Utopia\Database\Query;
|
||||||
use Utopia\Database\Validator\UID;
|
use Utopia\Database\Validator\UID;
|
||||||
|
@ -156,7 +157,11 @@ App::get('/v1/proxy/rules')
|
||||||
->inject('project')
|
->inject('project')
|
||||||
->inject('dbForConsole')
|
->inject('dbForConsole')
|
||||||
->action(function (array $queries, string $search, Response $response, Document $project, Database $dbForConsole) {
|
->action(function (array $queries, string $search, Response $response, Document $project, Database $dbForConsole) {
|
||||||
$queries = Query::parseQueries($queries);
|
try {
|
||||||
|
$queries = Query::parseQueries($queries);
|
||||||
|
} catch (QueryException $e) {
|
||||||
|
throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
if (!empty($search)) {
|
if (!empty($search)) {
|
||||||
$queries[] = Query::search('search', $search);
|
$queries[] = Query::search('search', $search);
|
||||||
|
|
|
@ -12,10 +12,10 @@ use Utopia\App;
|
||||||
use Utopia\Config\Config;
|
use Utopia\Config\Config;
|
||||||
use Utopia\Database\Database;
|
use Utopia\Database\Database;
|
||||||
use Utopia\Database\Document;
|
use Utopia\Database\Document;
|
||||||
use Utopia\Database\DateTime;
|
|
||||||
use Utopia\Database\Exception\Duplicate;
|
use Utopia\Database\Exception\Duplicate;
|
||||||
use Utopia\Database\Exception\Authorization as AuthorizationException;
|
use Utopia\Database\Exception\Authorization as AuthorizationException;
|
||||||
use Utopia\Database\Exception\Duplicate as DuplicateException;
|
use Utopia\Database\Exception\Duplicate as DuplicateException;
|
||||||
|
use Utopia\Database\Exception\Query as QueryException;
|
||||||
use Utopia\Database\Exception\Structure as StructureException;
|
use Utopia\Database\Exception\Structure as StructureException;
|
||||||
use Utopia\Database\Helpers\ID;
|
use Utopia\Database\Helpers\ID;
|
||||||
use Utopia\Database\Helpers\Permission;
|
use Utopia\Database\Helpers\Permission;
|
||||||
|
@ -42,7 +42,6 @@ use Utopia\Validator\HexColor;
|
||||||
use Utopia\Validator\Range;
|
use Utopia\Validator\Range;
|
||||||
use Utopia\Validator\Text;
|
use Utopia\Validator\Text;
|
||||||
use Utopia\Validator\WhiteList;
|
use Utopia\Validator\WhiteList;
|
||||||
use Utopia\DSN\DSN;
|
|
||||||
use Utopia\Swoole\Request;
|
use Utopia\Swoole\Request;
|
||||||
use Utopia\Storage\Compression\Compression;
|
use Utopia\Storage\Compression\Compression;
|
||||||
|
|
||||||
|
@ -161,7 +160,11 @@ App::get('/v1/storage/buckets')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->action(function (array $queries, string $search, Response $response, Database $dbForProject) {
|
->action(function (array $queries, string $search, Response $response, Database $dbForProject) {
|
||||||
|
|
||||||
$queries = Query::parseQueries($queries);
|
try {
|
||||||
|
$queries = Query::parseQueries($queries);
|
||||||
|
} catch (QueryException $e) {
|
||||||
|
throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
if (!empty($search)) {
|
if (!empty($search)) {
|
||||||
$queries[] = Query::search('search', $search);
|
$queries[] = Query::search('search', $search);
|
||||||
|
@ -737,7 +740,11 @@ App::get('/v1/storage/buckets/:bucketId/files')
|
||||||
throw new Exception(Exception::USER_UNAUTHORIZED);
|
throw new Exception(Exception::USER_UNAUTHORIZED);
|
||||||
}
|
}
|
||||||
|
|
||||||
$queries = Query::parseQueries($queries);
|
try {
|
||||||
|
$queries = Query::parseQueries($queries);
|
||||||
|
} catch (QueryException $e) {
|
||||||
|
throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
if (!empty($search)) {
|
if (!empty($search)) {
|
||||||
$queries[] = Query::search('search', $search);
|
$queries[] = Query::search('search', $search);
|
||||||
|
|
|
@ -9,6 +9,7 @@ use Appwrite\Event\Mail;
|
||||||
use Appwrite\Event\Messaging;
|
use Appwrite\Event\Messaging;
|
||||||
use Appwrite\Extend\Exception;
|
use Appwrite\Extend\Exception;
|
||||||
use Appwrite\Network\Validator\Email;
|
use Appwrite\Network\Validator\Email;
|
||||||
|
use Utopia\Database\Exception\Query as QueryException;
|
||||||
use Utopia\Validator\Host;
|
use Utopia\Validator\Host;
|
||||||
use Appwrite\Template\Template;
|
use Appwrite\Template\Template;
|
||||||
use Appwrite\Utopia\Database\Validator\CustomId;
|
use Appwrite\Utopia\Database\Validator\CustomId;
|
||||||
|
@ -146,7 +147,11 @@ App::get('/v1/teams')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->action(function (array $queries, string $search, Response $response, Database $dbForProject) {
|
->action(function (array $queries, string $search, Response $response, Database $dbForProject) {
|
||||||
|
|
||||||
$queries = Query::parseQueries($queries);
|
try {
|
||||||
|
$queries = Query::parseQueries($queries);
|
||||||
|
} catch (QueryException $e) {
|
||||||
|
throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
if (!empty($search)) {
|
if (!empty($search)) {
|
||||||
$queries[] = Query::search('search', $search);
|
$queries[] = Query::search('search', $search);
|
||||||
|
@ -699,7 +704,11 @@ App::get('/v1/teams/:teamId/memberships')
|
||||||
throw new Exception(Exception::TEAM_NOT_FOUND);
|
throw new Exception(Exception::TEAM_NOT_FOUND);
|
||||||
}
|
}
|
||||||
|
|
||||||
$queries = Query::parseQueries($queries);
|
try {
|
||||||
|
$queries = Query::parseQueries($queries);
|
||||||
|
} catch (QueryException $e) {
|
||||||
|
throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
if (!empty($search)) {
|
if (!empty($search)) {
|
||||||
$queries[] = Query::search('search', $search);
|
$queries[] = Query::search('search', $search);
|
||||||
|
@ -1100,7 +1109,12 @@ App::get('/v1/teams/:teamId/logs')
|
||||||
throw new Exception(Exception::TEAM_NOT_FOUND);
|
throw new Exception(Exception::TEAM_NOT_FOUND);
|
||||||
}
|
}
|
||||||
|
|
||||||
$queries = Query::parseQueries($queries);
|
try {
|
||||||
|
$queries = Query::parseQueries($queries);
|
||||||
|
} catch (QueryException $e) {
|
||||||
|
throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
$grouped = Query::groupByType($queries);
|
$grouped = Query::groupByType($queries);
|
||||||
$limit = $grouped['limit'] ?? APP_LIMIT_COUNT;
|
$limit = $grouped['limit'] ?? APP_LIMIT_COUNT;
|
||||||
$offset = $grouped['offset'] ?? 0;
|
$offset = $grouped['offset'] ?? 0;
|
||||||
|
|
|
@ -11,6 +11,7 @@ use Appwrite\Network\Validator\Email;
|
||||||
use Appwrite\Utopia\Database\Validator\CustomId;
|
use Appwrite\Utopia\Database\Validator\CustomId;
|
||||||
use Appwrite\Utopia\Database\Validator\Queries\Identities;
|
use Appwrite\Utopia\Database\Validator\Queries\Identities;
|
||||||
use Appwrite\Utopia\Database\Validator\Queries\Targets;
|
use Appwrite\Utopia\Database\Validator\Queries\Targets;
|
||||||
|
use Utopia\Database\Exception\Query as QueryException;
|
||||||
use Utopia\Database\Validator\Queries;
|
use Utopia\Database\Validator\Queries;
|
||||||
use Appwrite\Utopia\Database\Validator\Queries\Users;
|
use Appwrite\Utopia\Database\Validator\Queries\Users;
|
||||||
use Utopia\Database\Validator\Query\Limit;
|
use Utopia\Database\Validator\Query\Limit;
|
||||||
|
@ -536,7 +537,11 @@ App::get('/v1/users')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->action(function (array $queries, string $search, Response $response, Database $dbForProject) {
|
->action(function (array $queries, string $search, Response $response, Database $dbForProject) {
|
||||||
|
|
||||||
$queries = Query::parseQueries($queries);
|
try {
|
||||||
|
$queries = Query::parseQueries($queries);
|
||||||
|
} catch (QueryException $e) {
|
||||||
|
throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
if (!empty($search)) {
|
if (!empty($search)) {
|
||||||
$queries[] = Query::search('search', $search);
|
$queries[] = Query::search('search', $search);
|
||||||
|
@ -756,7 +761,12 @@ App::get('/v1/users/:userId/logs')
|
||||||
throw new Exception(Exception::USER_NOT_FOUND);
|
throw new Exception(Exception::USER_NOT_FOUND);
|
||||||
}
|
}
|
||||||
|
|
||||||
$queries = Query::parseQueries($queries);
|
try {
|
||||||
|
$queries = Query::parseQueries($queries);
|
||||||
|
} catch (QueryException $e) {
|
||||||
|
throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
$grouped = Query::groupByType($queries);
|
$grouped = Query::groupByType($queries);
|
||||||
$limit = $grouped['limit'] ?? APP_LIMIT_COUNT;
|
$limit = $grouped['limit'] ?? APP_LIMIT_COUNT;
|
||||||
$offset = $grouped['offset'] ?? 0;
|
$offset = $grouped['offset'] ?? 0;
|
||||||
|
@ -834,7 +844,11 @@ App::get('/v1/users/:userId/targets')
|
||||||
throw new Exception(Exception::USER_NOT_FOUND);
|
throw new Exception(Exception::USER_NOT_FOUND);
|
||||||
}
|
}
|
||||||
|
|
||||||
$queries = Query::parseQueries($queries);
|
try {
|
||||||
|
$queries = Query::parseQueries($queries);
|
||||||
|
} catch (QueryException $e) {
|
||||||
|
throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
$queries[] = Query::equal('userId', [$userId]);
|
$queries[] = Query::equal('userId', [$userId]);
|
||||||
|
|
||||||
|
@ -876,7 +890,11 @@ App::get('/v1/users/identities')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->action(function (array $queries, string $search, Response $response, Database $dbForProject) {
|
->action(function (array $queries, string $search, Response $response, Database $dbForProject) {
|
||||||
|
|
||||||
$queries = Query::parseQueries($queries);
|
try {
|
||||||
|
$queries = Query::parseQueries($queries);
|
||||||
|
} catch (QueryException $e) {
|
||||||
|
throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
if (!empty($search)) {
|
if (!empty($search)) {
|
||||||
$queries[] = Query::search('search', $search);
|
$queries[] = Query::search('search', $search);
|
||||||
|
|
|
@ -4,6 +4,7 @@ use Appwrite\Auth\OAuth2\Github as OAuth2Github;
|
||||||
use Utopia\App;
|
use Utopia\App;
|
||||||
use Appwrite\Event\Build;
|
use Appwrite\Event\Build;
|
||||||
use Appwrite\Event\Delete;
|
use Appwrite\Event\Delete;
|
||||||
|
use Utopia\Database\Exception\Query as QueryException;
|
||||||
use Utopia\Validator\Host;
|
use Utopia\Validator\Host;
|
||||||
use Utopia\Database\Database;
|
use Utopia\Database\Database;
|
||||||
use Utopia\Database\Document;
|
use Utopia\Database\Document;
|
||||||
|
@ -969,7 +970,11 @@ App::get('/v1/vcs/installations')
|
||||||
->inject('dbForProject')
|
->inject('dbForProject')
|
||||||
->inject('dbForConsole')
|
->inject('dbForConsole')
|
||||||
->action(function (array $queries, string $search, Response $response, Document $project, Database $dbForProject, Database $dbForConsole) {
|
->action(function (array $queries, string $search, Response $response, Document $project, Database $dbForProject, Database $dbForConsole) {
|
||||||
$queries = Query::parseQueries($queries);
|
try {
|
||||||
|
$queries = Query::parseQueries($queries);
|
||||||
|
} catch (QueryException $e) {
|
||||||
|
throw new Exception(Exception::GENERAL_QUERY_INVALID, $e->getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
$queries[] = Query::equal('projectInternalId', [$project->getInternalId()]);
|
$queries[] = Query::equal('projectInternalId', [$project->getInternalId()]);
|
||||||
|
|
||||||
|
|
|
@ -35,6 +35,7 @@ use Appwrite\OpenSSL\OpenSSL;
|
||||||
use Appwrite\URL\URL as AppwriteURL;
|
use Appwrite\URL\URL as AppwriteURL;
|
||||||
use Utopia\App;
|
use Utopia\App;
|
||||||
use Utopia\Database\Adapter\SQL;
|
use Utopia\Database\Adapter\SQL;
|
||||||
|
use Utopia\Database\Exception\Query as QueryException;
|
||||||
use Utopia\Logger\Logger;
|
use Utopia\Logger\Logger;
|
||||||
use Utopia\Cache\Adapter\Redis as RedisCache;
|
use Utopia\Cache\Adapter\Redis as RedisCache;
|
||||||
use Utopia\Cache\Cache;
|
use Utopia\Cache\Cache;
|
||||||
|
|
Loading…
Reference in a new issue