Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
83.33% covered (warning)
83.33%
5 / 6
80.00% covered (warning)
80.00%
4 / 5
CRAP
0.00% covered (danger)
0.00%
0 / 1
PromptPersonalMilestoneRepository
83.33% covered (warning)
83.33%
5 / 6
80.00% covered (warning)
80.00%
4 / 5
5.12
0.00% covered (danger)
0.00%
0 / 1
 getAll
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 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\PromptPersonalMilestone;
6use App\Http\Repositories\interfaces\IPromptPersonalMilestoneRepository;
7use Illuminate\Support\Collection;
8
9/**
10 * Repository for prompt personal milestone data access operations.
11 *
12 * Handles all database queries related to prompt personal milestones,
13 * keeping data access logic separate from business logic.
14 */
15class PromptPersonalMilestoneRepository implements IPromptPersonalMilestoneRepository
16{
17    /**
18     * Get all prompt personal milestones ordered by newest first.
19     *
20     * @return Collection<int, PromptPersonalMilestone> Collection of milestones
21     */
22    public function getAll(): Collection
23    {
24        return PromptPersonalMilestone::query()->orderBy('created_at', 'desc')->get();
25    }
26
27    /**
28     * Find a prompt personal milestone by its ID.
29     *
30     * @param  string  $id  The milestone ID
31     * @return PromptPersonalMilestone|null The milestone or null if not found
32     */
33    public function findById(string $id): ?PromptPersonalMilestone
34    {
35        return PromptPersonalMilestone::find($id);
36    }
37
38    /**
39     * Create a new prompt personal milestone.
40     *
41     * @param  array  $data  The milestone data
42     * @return PromptPersonalMilestone The created milestone
43     */
44    public function create(array $data): PromptPersonalMilestone
45    {
46        return PromptPersonalMilestone::create($data);
47    }
48
49    /**
50     * Update an existing prompt personal milestone.
51     *
52     * @param  PromptPersonalMilestone  $promptPersonalMilestone  The milestone to update
53     * @param  array  $data  The update data
54     * @return PromptPersonalMilestone The updated milestone
55     */
56    public function update(PromptPersonalMilestone $promptPersonalMilestone, array $data): PromptPersonalMilestone
57    {
58        $promptPersonalMilestone->update($data);
59
60        return $promptPersonalMilestone->fresh();
61    }
62
63    /**
64     * Delete a prompt personal milestone.
65     *
66     * @param  PromptPersonalMilestone  $promptPersonalMilestone  The milestone to delete
67     * @return bool True if deleted successfully
68     */
69    public function delete(PromptPersonalMilestone $promptPersonalMilestone): bool
70    {
71        return $promptPersonalMilestone->delete();
72    }
73}