Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
80.00% covered (warning)
80.00%
8 / 10
66.67% covered (warning)
66.67%
4 / 6
CRAP
0.00% covered (danger)
0.00%
0 / 1
ParameterRepository
80.00% covered (warning)
80.00%
8 / 10
66.67% covered (warning)
66.67%
4 / 6
7.39
0.00% covered (danger)
0.00%
0 / 1
 getAllPaginated
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
2
 findByName
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 findById
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 create
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 update
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 delete
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2
3namespace App\Http\Repositories;
4
5use App\Http\Models\Parameter;
6use Illuminate\Contracts\Pagination\LengthAwarePaginator;
7
8/**
9 * Repository for parameter data access operations.
10 *
11 * This repository handles all database queries related to parameters,
12 * keeping data access logic separate from business logic.
13 */
14class ParameterRepository
15{
16    /**
17     * Get all parameters with optional filtering and pagination.
18     *
19     * @param  string|null  $filter  Optional search filter for parameter names
20     * @param  int  $perPage  Number of items per page
21     * @return LengthAwarePaginator<Parameter>
22     */
23    public function getAllPaginated(?string $filter = null, int $perPage = 15): LengthAwarePaginator
24    {
25        $query = Parameter::query();
26
27        if ($filter) {
28            $query->where('name', 'like', "%{$filter}%");
29        }
30
31        return $query->orderBy('name')->paginate($perPage);
32    }
33
34    /**
35     * Find a parameter by its name.
36     *
37     * @param  string  $name  The parameter name
38     * @return Parameter|null The parameter or null if not found
39     */
40    public function findByName(string $name): ?Parameter
41    {
42        return Parameter::where('name', $name)->first();
43    }
44
45    /**
46     * Find a parameter by its ID.
47     *
48     * @param  string  $id  The parameter ID
49     * @return Parameter|null The parameter or null if not found
50     */
51    public function findById(string $id): ?Parameter
52    {
53        return Parameter::find($id);
54    }
55
56    /**
57     * Create a new parameter.
58     *
59     * @param  array{name: string, value: mixed}  $data  The parameter data
60     * @return Parameter The created parameter
61     */
62    public function create(array $data): Parameter
63    {
64        return Parameter::create($data);
65    }
66
67    /**
68     * Update an existing parameter.
69     *
70     * @param  Parameter  $parameter  The parameter to update
71     * @param  array{name?: string, value?: mixed}  $data  The update data
72     * @return Parameter The updated parameter
73     */
74    public function update(Parameter $parameter, array $data): Parameter
75    {
76        $parameter->update($data);
77
78        return $parameter->fresh();
79    }
80
81    /**
82     * Delete a parameter.
83     *
84     * @param  Parameter  $parameter  The parameter to delete
85     * @return bool True if deleted successfully
86     */
87    public function delete(Parameter $parameter): bool
88    {
89        return $parameter->delete();
90    }
91}