<?php

declare(strict_types=1);

namespace Console\Commands;

use Openguru\OpenCartFramework\Cache\CacheInterface;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Console\Style\SymfonyStyle;

class CacheClearCommand extends TeleCartCommand
{
    protected static $defaultName = 'cache:clear';
    protected static $defaultDescription = 'Очистка кеша модуля TeleCart';

    private CacheInterface $cache;

    public function __construct(CacheInterface $cache)
    {
        parent::__construct();
        $this->cache = $cache;
    }

    protected function execute(InputInterface $input, OutputInterface $output): int
    {
        $io = new SymfonyStyle($input, $output);

        $io->title('Очистка кеша модуля TeleCart');

        try {
            $this->cache->clear();
            $io->success('Кеш успешно очищен!');

            return Command::SUCCESS;
        } catch (\Exception $e) {
            $io->error('Ошибка при очистке кеша: ' . $e->getMessage());

            return Command::FAILURE;
        }
    }
}
