gitlab-telegram-webhook

Форк
0
84 строки · 2.0 Кб
1
<?php
2

3
namespace App\Repositories;
4

5
use App\Models\Hook\HookModel;
6
use Illuminate\Support\Collection;
7

8
class HookRepository implements HookRepositoryInterface
9
{
10
    /**
11
     * @param array $data
12
     *
13
     * @return HookModel
14
     */
15
    public function store(array $data): HookModel
16
    {
17
        return HookModel::updateOrCreate([
18
            'event' => $data['event'],
19
            'hash' => $data['hash'],
20
            'message_id' => $data['message_id'],
21
            'event_id' => $data['event_id'] ?? null,
22
        ], [
23
            'body' => $data['body'],
24
            'short_body' => $data['short_body'],
25
            'render' => $data['render'],
26
        ]);
27
    }
28

29
    /**
30
     * @param string $hash
31
     *
32
     * @return Collection
33
     */
34
    public function findAllBySha(string $hash): Collection
35
    {
36
        return HookModel::where('hash', '=', $hash)
37
            ->get()
38
        ;
39
    }
40

41
    /**
42
     * @param string $event
43
     * @param string $hash
44
     * @param null|int $messageId
45
     *
46
     * @return null|HookModel
47
     */
48
    public function findOneByEventSha(string $event, string $hash, ?int $messageId = null): ?HookModel
49
    {
50
        $model = HookModel::where('event', '=', $event)
51
            ->where('hash', '=', $hash)
52
        ;
53
        if ($messageId) {
54
            $model->where('message_id', '=', $messageId);
55
        }
56

57
        return $model
58
            ->orderByDesc('updated_at')
59
            ->first()
60
        ;
61
    }
62

63
    /**
64
     * @param string $event
65
     * @param string $hash
66
     * @param null|int $messageId
67
     *
68
     * @return Collection
69
     */
70
    public function findAllByEventSha(string $event, string $hash, ?int $messageId = null): Collection
71
    {
72
        $model = HookModel::where('event', '=', $event)
73
            ->where('hash', '=', $hash)
74
        ;
75
        if ($messageId) {
76
            $model->where('message_id', '=', $messageId);
77
        }
78

79
        return $model
80
            ->orderBy('updated_at')
81
            ->get()
82
        ;
83
    }
84
}
85

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.