<?php
namespace App\Repositories\Eloquent;
use App\Exceptions\GeneralException;
use App\Models\SpamWord;
use App\Repositories\Contracts\SpamWordRepository;
use Exception;
use Illuminate\Support\Arr;
use Illuminate\Support\Facades\DB;
use Throwable;
class EloquentSpamWordRepository extends EloquentBaseRepository implements SpamWordRepository
{
/**
* EloquentSpamWordRepository constructor.
*
* @param SpamWord $spam_word
*/
public function __construct(SpamWord $spam_word)
{
parent::__construct($spam_word);
}
/**
* @param array $input
*
* @return SpamWord
* @throws GeneralException
*/
public function store(array $input): SpamWord
{
/** @var SpamWord $spam_word */
$spam_word = $this->make(Arr::only($input, [
'word',
]));
if ( ! $this->save($spam_word)) {
throw new GeneralException(__('locale.exceptions.something_went_wrong'));
}
return $spam_word;
}
/**
* @param SpamWord $spam_word
*
* @return bool
*/
private function save(SpamWord $spam_word): bool
{
if ( ! $spam_word->save()) {
return false;
}
return true;
}
/**
* @param SpamWord $spamWord
*
* @return bool
* @throws GeneralException
*/
public function destroy(SpamWord $spamWord): bool
{
if ( ! $spamWord->delete()) {
throw new GeneralException(__('locale.exceptions.something_went_wrong'));
}
return true;
}
/**
* @param array $ids
*
* @return mixed
* @throws Exception|Throwable
*
*/
public function batchDestroy(array $ids): bool
{
DB::transaction(function () use ($ids) {
// This wont call eloquent events, change to destroy if needed
if ($this->query()->whereIn('uid', $ids)->delete()) {
return true;
}
throw new GeneralException(__('locale.exceptions.something_went_wrong'));
});
return true;
}
}