From 274df744d57c19432b59b61510b7ab8ca036095e Mon Sep 17 00:00:00 2001 From: Mateus Machado Luna Date: Fri, 4 Oct 2019 15:43:57 -0300 Subject: [PATCH] First version of schema for filter repository. #290. --- ...class-tainacan-rest-filters-controller.php | 35 +++++++++++++++++-- ...lass-tainacan-rest-metadata-controller.php | 5 --- .../repositories/class-tainacan-filters.php | 2 +- .../repositories/class-tainacan-metadata.php | 2 +- 4 files changed, 34 insertions(+), 10 deletions(-) diff --git a/src/api/endpoints/class-tainacan-rest-filters-controller.php b/src/api/endpoints/class-tainacan-rest-filters-controller.php index e3709a478..6f265721a 100644 --- a/src/api/endpoints/class-tainacan-rest-filters-controller.php +++ b/src/api/endpoints/class-tainacan-rest-filters-controller.php @@ -44,6 +44,7 @@ public function register_routes() { 'permission_callback' => array($this, 'create_item_permissions_check'), 'args' => $this->get_endpoint_args_for_item_schema(\WP_REST_Server::CREATABLE) ), + 'schema' => [$this, 'get_schema'] )); register_rest_route($this->namespace, '/collection/(?P[\d]+)/' . $this->rest_base, array( array( @@ -57,7 +58,8 @@ public function register_routes() { 'callback' => array($this, 'create_item'), 'permission_callback' => array($this, 'create_item_permissions_check'), 'args' => $this->get_endpoint_args_for_item_schema(\WP_REST_Server::CREATABLE) - ) + ), + 'schema' => [$this, 'get_schema'] )); register_rest_route($this->namespace, '/' . $this->rest_base, array( array( @@ -71,7 +73,8 @@ public function register_routes() { 'callback' => array($this, 'create_item'), 'permission_callback' => array($this, 'create_item_permissions_check'), 'args' => $this->get_endpoint_args_for_item_schema(\WP_REST_Server::CREATABLE) - ) + ), + 'schema' => [$this, 'get_schema'] )); register_rest_route($this->namespace, '/' . $this->rest_base . '/(?P[\d]+)', array( array( @@ -96,7 +99,8 @@ public function register_routes() { 'callback' => array($this, 'get_item'), 'permission_callback' => array($this, 'get_item_permissions_check'), 'args' => $this->get_endpoint_args_for_item_schema(\WP_REST_Server::READABLE) - ) + ), + 'schema' => [$this, 'get_schema'] )); } @@ -509,5 +513,30 @@ public function get_wp_query_params() { return $query_params; } + + function get_schema() { + $schema = [ + '$schema' => 'http://json-schema.org/draft-04/schema#', + 'title' => 'filter', + 'type' => 'object' + ]; + + $main_schema = parent::get_repository_schema( $this->filter_repository ); + $permissions_schema = parent::get_permissions_schema(); + + // $collection_scheme = parent::get_repository_schema( $this->collection_repository ); + // $metadatum_scheme = parent::get_repository_schema( $this->metadatum_repository ); + + $schema['properties'] = array_merge( + parent::get_base_properties_schema(), + $main_schema, + $permissions_schema + // $collection_scheme, + // $metadatum_scheme + ); + + return $schema; + + } } ?> \ No newline at end of file diff --git a/src/api/endpoints/class-tainacan-rest-metadata-controller.php b/src/api/endpoints/class-tainacan-rest-metadata-controller.php index c5abc44d1..7d6cd7f21 100644 --- a/src/api/endpoints/class-tainacan-rest-metadata-controller.php +++ b/src/api/endpoints/class-tainacan-rest-metadata-controller.php @@ -63,7 +63,6 @@ public function register_routes() { 'args' => $this->get_endpoint_args_for_item_schema(\WP_REST_Server::READABLE), ), 'schema' => [$this, 'get_schema'] - ) ); register_rest_route($this->namespace, '/collection/(?P[\d]+)/' . $this->rest_base, @@ -603,10 +602,6 @@ function get_schema() { // $item_scheme = parent::get_repository_schema( $this->item_repository ); // $collection_scheme = parent::get_repository_schema( $this->collection_repository ); - // transformation done in $this->prepare_item_for_response() - $main_schema['moderators'] = $main_schema['moderators_ids']; - $main_schema['moderators']['contex'] = 'edit'; - $schema['properties'] = array_merge( parent::get_base_properties_schema(), $main_schema, diff --git a/src/classes/repositories/class-tainacan-filters.php b/src/classes/repositories/class-tainacan-filters.php index 54e815467..f8fbf7ef1 100644 --- a/src/classes/repositories/class-tainacan-filters.php +++ b/src/classes/repositories/class-tainacan-filters.php @@ -64,7 +64,7 @@ protected function _get_map() { 'map' => 'meta', 'title' => __( 'Type', 'tainacan' ), 'type' => 'string', - 'description' => __( 'The filter type', 'tainacan' ), + 'description' => __( 'The filter type class name, such as filter_type: Tainacan\Filter_Types\Checkbox', 'tainacan' ), 'validation' => '' ], 'collection_id' => [ diff --git a/src/classes/repositories/class-tainacan-metadata.php b/src/classes/repositories/class-tainacan-metadata.php index 80de4c7ab..f1b5f3a6d 100644 --- a/src/classes/repositories/class-tainacan-metadata.php +++ b/src/classes/repositories/class-tainacan-metadata.php @@ -93,7 +93,7 @@ protected function _get_map() { 'map' => 'meta', 'title' => __( 'Type', 'tainacan' ), 'type' => 'string', - 'description' => __( 'The metadata type', 'tainacan' ), + 'description' => __( 'The metadata type class name, such as Tainacan\Metadata_Types\Core_Title', 'tainacan' ), 'on_error' => __( 'Metadata type is empty', 'tainacan' ), 'validation' => v::stringType()->notEmpty(), ],