Completed
Pull Request — master (#83)
by Sebastian
03:53
created

ArticleRepository::findByTechnicalName()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 9
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 5
nc 1
nop 1
dl 0
loc 9
rs 9.6666
c 0
b 0
f 0
1
<?php
2
3
namespace App\Repositories;
4
5
use App\Models\Article;
6
use App\Models\Enums\SpecialArticle;
7
use Illuminate\Support\Collection;
8
use Illuminate\Support\Facades\Cache;
9
10
class ArticleRepository
11
{
12
    public static function getTopLevel(): Collection
13
    {
14
        return Article::where('parent_id', null)
15
            ->orderBy('order_column')
16
            ->get();
17
    }
18
19
    public static function findByUrl(string $url): Article
20
    {
21
        return Article::online()
22
            ->where('url->'.content_locale(), $url)
23
            ->firstOrFail();
24
    }
25
26
    public static function findSpecialArticle(SpecialArticle $specialArticle): Article
27
    {
28
        return Article::where('technical_name', $specialArticle)->firstOrFail();
29
    }
30
31
    public static function findByTechnicalName(string $technicalName): Article
32
    {
33
        return Cache::rememberForever(
34
            "article.findByTechnicalName.{$technicalName}",
35
            function () use ($technicalName) {
36
                return Article::where('technical_name', $technicalName)->firstOrFail();
37
            }
38
        );
39
    }
40
41
    public static function getWithTechnicalNameLike(string $technicalName): Collection
42
    {
43
        return Cache::rememberForever(
44
            "article.getWithTechnicalNameLike.{$technicalName}",
45
            function () use ($technicalName) {
46
                return Article::where('technical_name', 'like', "{$technicalName}.%")
47
                    ->orderBy('order_column')
48
                    ->get();
49
            }
50
        );
51
    }
52
}
53