Passed
Pull Request — master (#12)
by Mostafa
11:54
created

DeleteCacheAction::run()   A

Complexity

Conditions 4
Paths 4

Size

Total Lines 13
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 8
c 1
b 0
f 0
dl 0
loc 13
rs 10
cc 4
nc 4
nop 1
1
<?php
2
3
namespace Mostafaznv\LaraCache\Actions;
4
5
use Mostafaznv\LaraCache\Actions\Support\UpdateDeleteCache;
6
use Mostafaznv\LaraCache\DTOs\CommandData;
7
8
class DeleteCacheAction extends UpdateDeleteCache
9
{
10
    public function run(CommandData $data): void
11
    {
12
        if (count($data->models) > 1) {
13
            foreach ($data->models as $model) {
14
                $this->deleteAll($model);
15
            }
16
        }
17
        else {
18
            $model = $data->models[0];
19
20
            empty($data->entities)
21
                ? $this->deleteAll($model)
22
                : $this->delete($model, $data->entities);
23
        }
24
    }
25
26
    /**
27
     * @param \Mostafaznv\LaraCache\Traits\LaraCache $model
28
     * @return void
29
     */
30
    private function deleteAll(string $model): void
31
    {
32
        $entities = [];
33
34
        foreach ($model::cacheEntities() as $entity) {
35
            $entities[] = $entity->name;
36
        }
37
38
        $this->delete($model, $entities);
39
    }
40
41
    /**
42
     * @param \Mostafaznv\LaraCache\Traits\LaraCache $model
43
     * @param array $entities
44
     * @return void
45
     */
46
    private function delete(string $model, array $entities): void
47
    {
48
        $this->console?->warn(
49
            sprintf('>> Deleting cache entities in [%s] model', class_basename($model))
50
        );
51
52
        foreach ($entities as $entity) {
53
            $this->console?->line('— ' . $this->title($entity));
54
55
            $model::cache()->delete($entity);
56
57
            $this->console?->info('Deleted');
58
        }
59
    }
60
}
61