gitlab-telegram-webhook
84 строки · 2.0 Кб
1<?php
2
3namespace App\Repositories;
4
5use App\Models\Hook\HookModel;
6use Illuminate\Support\Collection;
7
8class HookRepository implements HookRepositoryInterface
9{
10/**
11* @param array $data
12*
13* @return HookModel
14*/
15public function store(array $data): HookModel
16{
17return 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*/
34public function findAllBySha(string $hash): Collection
35{
36return 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*/
48public function findOneByEventSha(string $event, string $hash, ?int $messageId = null): ?HookModel
49{
50$model = HookModel::where('event', '=', $event)
51->where('hash', '=', $hash)
52;
53if ($messageId) {
54$model->where('message_id', '=', $messageId);
55}
56
57return $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*/
70public function findAllByEventSha(string $event, string $hash, ?int $messageId = null): Collection
71{
72$model = HookModel::where('event', '=', $event)
73->where('hash', '=', $hash)
74;
75if ($messageId) {
76$model->where('message_id', '=', $messageId);
77}
78
79return $model
80->orderBy('updated_at')
81->get()
82;
83}
84}
85