Update permissions and queries for 1.0
This commit is contained in:
parent
fbcaa1f60a
commit
bf0b416183
3 changed files with 28 additions and 55 deletions
|
@ -7,6 +7,7 @@ use Appwrite\Utopia\Request;
|
||||||
use Appwrite\Utopia\Response;
|
use Appwrite\Utopia\Response;
|
||||||
use Utopia\App;
|
use Utopia\App;
|
||||||
use Utopia\Database\Database;
|
use Utopia\Database\Database;
|
||||||
|
use Utopia\Database\ID;
|
||||||
use Utopia\Exception;
|
use Utopia\Exception;
|
||||||
use Utopia\Route;
|
use Utopia\Route;
|
||||||
|
|
||||||
|
@ -114,12 +115,7 @@ class Resolvers
|
||||||
$swoole->post = [
|
$swoole->post = [
|
||||||
'databaseId' => $databaseId,
|
'databaseId' => $databaseId,
|
||||||
'collectionId' => $collectionId,
|
'collectionId' => $collectionId,
|
||||||
'limit' => $args['limit'],
|
'queries' => $args['queries'],
|
||||||
'offset' => $args['offset'],
|
|
||||||
'cursor' => $args['cursor'],
|
|
||||||
'cursorDirection' => $args['cursorDirection'],
|
|
||||||
'orderAttributes' => $args['orderAttributes'],
|
|
||||||
'orderType' => $args['orderType'],
|
|
||||||
];
|
];
|
||||||
$swoole->server['request_method'] = 'GET';
|
$swoole->server['request_method'] = 'GET';
|
||||||
$swoole->server['request_uri'] = "/v1/databases/$databaseId/collections/$collectionId/documents";
|
$swoole->server['request_uri'] = "/v1/databases/$databaseId/collections/$collectionId/documents";
|
||||||
|
@ -154,13 +150,11 @@ class Resolvers
|
||||||
$response = $utopia->getResource('response', true);
|
$response = $utopia->getResource('response', true);
|
||||||
$swoole = $request->getSwoole();
|
$swoole = $request->getSwoole();
|
||||||
|
|
||||||
$id = $args['id'] ?? 'unique()';
|
$id = $args['id'] ?? ID::unique();
|
||||||
$read = $args['read'];
|
$permissions = $args['permissions'];
|
||||||
$write = $args['write'];
|
|
||||||
|
|
||||||
unset($args['id']);
|
unset($args['id']);
|
||||||
unset($args['read']);
|
unset($args['permissions']);
|
||||||
unset($args['write']);
|
|
||||||
|
|
||||||
// Order must be the same as the route params
|
// Order must be the same as the route params
|
||||||
$swoole->post = [
|
$swoole->post = [
|
||||||
|
@ -168,8 +162,7 @@ class Resolvers
|
||||||
'documentId' => $id,
|
'documentId' => $id,
|
||||||
'collectionId' => $collectionId,
|
'collectionId' => $collectionId,
|
||||||
'data' => $args,
|
'data' => $args,
|
||||||
'read' => $read,
|
'permissions' => $permissions,
|
||||||
'write' => $write,
|
|
||||||
];
|
];
|
||||||
$swoole->server['request_method'] = $method;
|
$swoole->server['request_method'] = $method;
|
||||||
$swoole->server['request_uri'] = "/v1/databases/$databaseId/collections/$collectionId/documents";
|
$swoole->server['request_uri'] = "/v1/databases/$databaseId/collections/$collectionId/documents";
|
||||||
|
@ -256,9 +249,9 @@ class Resolvers
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (\array_key_exists('$id', $payload)) {
|
$payload = \array_map(function ($property) {
|
||||||
$payload['_id'] = $payload['$id'];
|
return \str_replace('$', '_', $property);
|
||||||
}
|
}, $payload);
|
||||||
|
|
||||||
$resolve($payload);
|
$resolve($payload);
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,6 +10,7 @@ use Swoole\Coroutine\WaitGroup;
|
||||||
use Swoole\Http\Response as SwooleResponse;
|
use Swoole\Http\Response as SwooleResponse;
|
||||||
use Utopia\App;
|
use Utopia\App;
|
||||||
use Utopia\Database\Database;
|
use Utopia\Database\Database;
|
||||||
|
use Utopia\Database\Query;
|
||||||
use Utopia\Database\Validator\Authorization;
|
use Utopia\Database\Validator\Authorization;
|
||||||
use Utopia\Registry\Registry;
|
use Utopia\Registry\Registry;
|
||||||
use Utopia\Route;
|
use Utopia\Route;
|
||||||
|
@ -124,7 +125,7 @@ class SchemaBuilder
|
||||||
foreach ($responseModels as $responseModel) {
|
foreach ($responseModels as $responseModel) {
|
||||||
$type = TypeRegistry::get($responseModel->getType());
|
$type = TypeRegistry::get($responseModel->getType());
|
||||||
$description = $route->getDesc();
|
$description = $route->getDesc();
|
||||||
$args = [];
|
$params = [];
|
||||||
|
|
||||||
foreach ($route->getParams() as $key => $value) {
|
foreach ($route->getParams() as $key => $value) {
|
||||||
$argType = TypeMapper::typeFromParameter(
|
$argType = TypeMapper::typeFromParameter(
|
||||||
|
@ -133,7 +134,7 @@ class SchemaBuilder
|
||||||
!$value['optional'],
|
!$value['optional'],
|
||||||
$value['injections']
|
$value['injections']
|
||||||
);
|
);
|
||||||
$args[$key] = [
|
$params[$key] = [
|
||||||
'type' => $argType,
|
'type' => $argType,
|
||||||
'description' => $value['description'],
|
'description' => $value['description'],
|
||||||
'defaultValue' => $value['default']
|
'defaultValue' => $value['default']
|
||||||
|
@ -143,7 +144,7 @@ class SchemaBuilder
|
||||||
$field = [
|
$field = [
|
||||||
'type' => $type,
|
'type' => $type,
|
||||||
'description' => $description,
|
'description' => $description,
|
||||||
'args' => $args,
|
'args' => $params,
|
||||||
'resolve' => Resolvers::resolveAPIRequest($utopia, $route)
|
'resolve' => Resolvers::resolveAPIRequest($utopia, $route)
|
||||||
];
|
];
|
||||||
|
|
||||||
|
@ -196,9 +197,11 @@ class SchemaBuilder
|
||||||
|
|
||||||
while (
|
while (
|
||||||
!empty($attrs = Authorization::skip(fn() => $dbForProject->find(
|
!empty($attrs = Authorization::skip(fn() => $dbForProject->find(
|
||||||
'attributes',
|
collection: 'attributes',
|
||||||
limit: $limit,
|
queries: [
|
||||||
offset: $offset
|
Query::limit($limit),
|
||||||
|
Query::offset($offset),
|
||||||
|
]
|
||||||
)))
|
)))
|
||||||
) {
|
) {
|
||||||
$wg->add();
|
$wg->add();
|
||||||
|
@ -223,10 +226,12 @@ class SchemaBuilder
|
||||||
foreach ($collections as $collectionId => $attributes) {
|
foreach ($collections as $collectionId => $attributes) {
|
||||||
$objectType = new ObjectType([
|
$objectType = new ObjectType([
|
||||||
'name' => $collectionId,
|
'name' => $collectionId,
|
||||||
'fields' => \array_merge(
|
'fields' => [
|
||||||
["_id" => ['type' => Type::string()]],
|
"_id" => [
|
||||||
$attributes
|
'type' => Type::string()
|
||||||
),
|
],
|
||||||
|
...$attributes
|
||||||
|
],
|
||||||
]);
|
]);
|
||||||
$attributes = \array_merge(
|
$attributes = \array_merge(
|
||||||
$attributes,
|
$attributes,
|
||||||
|
|
|
@ -44,40 +44,15 @@ class TypeRegistry
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
'list' => [
|
'list' => [
|
||||||
'limit' => [
|
'queries' => [
|
||||||
'type' => Type::int(),
|
|
||||||
'defaultValue' => 25,
|
|
||||||
],
|
|
||||||
'offset' => [
|
|
||||||
'type' => Type::int(),
|
|
||||||
'defaultValue' => 0,
|
|
||||||
],
|
|
||||||
'cursor' => [
|
|
||||||
'type' => Type::string(),
|
|
||||||
'defaultValue' => '',
|
|
||||||
],
|
|
||||||
'cursorDirection' => [
|
|
||||||
'type' => Type::string(),
|
|
||||||
'defaultValue' => Database::CURSOR_AFTER,
|
|
||||||
],
|
|
||||||
'orderAttributes' => [
|
|
||||||
'type' => Type::listOf(Type::string()),
|
'type' => Type::listOf(Type::string()),
|
||||||
'defaultValue' => [],
|
|
||||||
],
|
|
||||||
'orderTypes' => [
|
|
||||||
'type' => Type::listOf(Type::string()),
|
|
||||||
'defaultValue' => [],
|
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
'mutate' => [
|
'mutate' => [
|
||||||
'read' => [
|
'permissions' => [
|
||||||
'type' => Type::listOf(Type::string()),
|
'type' => Type::listOf(Type::string()),
|
||||||
'defaultValue' => ['role:member'],
|
'defaultValue' => [],
|
||||||
],
|
]
|
||||||
'write' => [
|
|
||||||
'type' => Type::listOf(Type::string()),
|
|
||||||
'defaultValue' => ['role:member'],
|
|
||||||
],
|
|
||||||
],
|
],
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue