<?php

namespace App\Tests\Domain\Scraping\Adapter;

use App\Domain\Scraping\Domain\Contract\Repository\ChapterRepositoryInterface;
use App\Domain\Scraping\Domain\Model\Chapter;
use App\Domain\Scraping\Domain\Exception\ChapterNotFoundException;

class InMemoryChapterRepository implements ChapterRepositoryInterface
{
    private array $chapters = [];

    public function getById(string $id): ?Chapter
    {
        return $this->chapters[$id] ?? null;
    }

    public function getByMangaIdAndChapterNumber(string $mangaId, float $chapterNumber): Chapter
    {
        foreach ($this->chapters as $chapter) {
            if ($chapter->mangaId === $mangaId && $chapter->chapterNumber === $chapterNumber) {
                return $chapter;
            }
        }

        throw new ChapterNotFoundException();
    }

    public function save(Chapter $chapter): void
    {
        $this->chapters[$chapter->id] = $chapter;
    }



    public function clear(): void
    {
        $this->chapters = [];
    }
}
