<?php

declare(strict_types=1);

namespace App\Framework\Pagination;

use App\Framework\Database\EntityManager;
use App\Framework\DI\Container;
use App\Framework\DI\Initializer;

/**
 * Initializer for the Pagination service
 */
final readonly class PaginationServiceInitializer
{
    public function __construct(
        private Container $container
    ) {
    }

    #[Initializer]
    public function __invoke(): PaginationService
    {
        // Create PaginationService with EntityManager dependency
        $paginationService = new PaginationService(
            entityManager: $this->container->get(EntityManager::class)
        );

        // Register the service in container for future use
        $this->container->singleton(PaginationService::class, $paginationService);

        return $paginationService;
    }
}
