Code Duplication    Length = 52-52 lines in 3 locations

app/GraphQL/Queries/TagsQuery.php 1 location

@@ 25-76 (lines=52) @@
22
/**
23
 * Class TagsQuery.
24
 */
25
class TagsQuery extends Query
26
{
27
    use QueryLimit;
28
29
    /**
30
     * @var array
31
     */
32
    protected $attributes = [
33
        'name'        => 'Tags list query',
34
        'description' => 'Returns a list of available tags',
35
    ];
36
37
    /**
38
     * @return ListOfType
39
     */
40
    public function type(): ListOfType
41
    {
42
        return Type::listOf(\GraphQL::type(TagType::getName()));
43
    }
44
45
    /**
46
     * @return array
47
     */
48
    public function args(): array
49
    {
50
        return $this->argumentsWithLimit([
51
            'id' => [
52
                'type'        => Type::id(),
53
                'description' => 'Tag identifier',
54
            ],
55
        ]);
56
    }
57
58
    /**
59
     * @param $root
60
     * @param  array      $args
61
     * @return Collection
62
     */
63
    public function resolve($root, array $args = []): Collection
64
    {
65
        $query = Tag::query();
66
67
        $query = $this->paginate($query, $args);
68
69
        foreach ($args as $field => $value) {
70
            $query = $query->where($field, $value);
71
        }
72
73
        return TagSerializer::collection($query->get());
74
    }
75
}
76

app/GraphQL/Queries/UsersQuery.php 1 location

@@ 25-76 (lines=52) @@
22
/**
23
 * Class UsersQuery.
24
 */
25
class UsersQuery extends Query
26
{
27
    use QueryLimit;
28
29
    /**
30
     * @var array
31
     */
32
    protected $attributes = [
33
        'name'        => 'Users list query',
34
        'description' => 'Returns a list of users',
35
    ];
36
37
    /**
38
     * @return ListOfType
39
     */
40
    public function type(): ListOfType
41
    {
42
        return Type::listOf(\GraphQL::type(UserType::getName()));
43
    }
44
45
    /**
46
     * @return array
47
     */
48
    public function args(): array
49
    {
50
        return $this->argumentsWithLimit([
51
            'id' => [
52
                'type'        => Type::id(),
53
                'description' => 'User identifier',
54
            ],
55
        ]);
56
    }
57
58
    /**
59
     * @param $root
60
     * @param  array      $args
61
     * @return Collection
62
     */
63
    public function resolve($root, array $args = []): Collection
64
    {
65
        $query = User::query();
66
67
        $query = $this->paginate($query, $args);
68
69
        foreach ($args as $field => $value) {
70
            $query = $query->where($field, $value);
71
        }
72
73
        return UserSerializer::collection($query->get());
74
    }
75
}
76

app/GraphQL/Queries/TipsQuery.php 1 location

@@ 25-76 (lines=52) @@
22
/**
23
 * Class TipsQuery.
24
 */
25
class TipsQuery extends Query
26
{
27
    use QueryLimit;
28
29
    /**
30
     * @var array
31
     */
32
    protected $attributes = [
33
        'name'        => 'Tips list query',
34
        'description' => 'Returns a list of available tips',
35
    ];
36
37
    /**
38
     * @return ListOfType
39
     */
40
    public function type(): ListOfType
41
    {
42
        return Type::listOf(\GraphQL::type(TipType::getName()));
43
    }
44
45
    /**
46
     * @return array
47
     */
48
    public function args(): array
49
    {
50
        return $this->argumentsWithLimit([
51
            'id' => [
52
                'type'        => Type::id(),
53
                'description' => 'Tip identifier',
54
            ],
55
        ]);
56
    }
57
58
    /**
59
     * @param        $root
60
     * @param  array $args
61
     * @return Collection
62
     */
63
    public function resolve($root, array $args = []): Collection
64
    {
65
        /** @var Builder $query */
66
        $query = Tip::with('likes', 'dislikes', 'user');
67
68
        $query = $this->paginate($query, $args);
69
70
        foreach ($args as $field => $value) {
71
            $query = $query->where($field, $value);
72
        }
73
74
        return TipSerializer::collection($query->get());
75
    }
76
}
77