74 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			74 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
namespace dominion\api;
 | 
						|
 | 
						|
use GraphQL\Type\Definition\ObjectType;
 | 
						|
use GraphQL\Type\Definition\Type;
 | 
						|
use dominion\api\GraphQLPagination;
 | 
						|
 | 
						|
class GraphQLSchemaPagination extends ObjectType
 | 
						|
{
 | 
						|
    public $isPagination = false;
 | 
						|
    public function getCustomFields()
 | 
						|
    {
 | 
						|
        return [
 | 
						|
            'totalCount' => [
 | 
						|
                'type' => Type::int(),
 | 
						|
                'description' => 'Количество элементов',
 | 
						|
            ],
 | 
						|
            'pageCount' => [
 | 
						|
                'type' => Type::int(),
 | 
						|
                'description' => 'Количество страниц',
 | 
						|
            ],
 | 
						|
            'currentPage' => [
 | 
						|
                'type' => Type::int(),
 | 
						|
                'description' => 'Текущая страница',
 | 
						|
            ],
 | 
						|
            'perPage' => [
 | 
						|
                'type' => Type::int(),
 | 
						|
                'description' => 'Элементов на странице',
 | 
						|
            ],
 | 
						|
        ];
 | 
						|
    }
 | 
						|
 | 
						|
    public function getCustomResolve($root, $args)
 | 
						|
    {
 | 
						|
        $model = new GraphQLPagination;
 | 
						|
        $model->parentRoot = $root;
 | 
						|
        $model->page = isset($args['page']) && $args['page'] > 1 ? $args['page'] : 1;
 | 
						|
        $model->perPage = isset($args['perPage']) && $args['perPage'] > 0 ? $args['perPage'] : 50;
 | 
						|
        $model->offset = isset($args['offset']) && $args['offset'] > 0 ? $args['offset'] : 0;
 | 
						|
        $model->addArgs = isset($args['addArgs']) ? (array)$args['addArgs'] : [];
 | 
						|
 | 
						|
        return $model;//['totalCount' =>0, 'pageCount' => 0, 'currentPage' => 0, 'perPage'=> 0, 'data' => []];
 | 
						|
    }
 | 
						|
    public function getCustomArgs()
 | 
						|
    {
 | 
						|
        return [
 | 
						|
            'page' => [
 | 
						|
                'type' =>  Type::int(),
 | 
						|
                'description' => 'Номер страницы (по умолчанию 1)',
 | 
						|
            ],
 | 
						|
            'perPage' => [
 | 
						|
                'type' =>  Type::int(),
 | 
						|
                'description' => 'Количество элементов на странице (по умолчанию 50)',
 | 
						|
            ],
 | 
						|
            'offset' => [
 | 
						|
                'type' =>  Type::int(),
 | 
						|
                'description' => 'Смещение от начала выборки',
 | 
						|
            ],
 | 
						|
        ];
 | 
						|
    }
 | 
						|
 | 
						|
    public function resultArguments($args)
 | 
						|
    {
 | 
						|
        $output = [];
 | 
						|
        foreach ($args as $key => $value)
 | 
						|
        {
 | 
						|
            $output[$key] = json_decode($value, true);
 | 
						|
        }
 | 
						|
        return $output;
 | 
						|
 | 
						|
    }
 | 
						|
 | 
						|
} |