<?php
declare(strict_types=1);
// @responsibility: Bootstrap DI container using modular ServiceProviders
/**
* Service Definitions for DI Container.
*
* All repositories and services are registered via ServiceProviders
* to ensure proper separation of concerns by bounded context.
*
* @param Framework\Container $container
*/
use Framework\Container;
use Infrastructure\Config\DatabaseFactory;
use ServiceProvider\ChatServiceProvider;
use ServiceProvider\ContentServiceProvider;
use ServiceProvider\CrawlerServiceProvider;
use ServiceProvider\InfrastructureServiceProvider;
use ServiceProvider\TaskServiceProvider;
// NOTE: UseCases are NOT explicitly registered here.
// They are resolved via Container::autowire() automatically.
// Only register: Interfaces, Services with special config, Repositories.
return function (Container $container): void {
// =========================================================================
// DATABASE CONNECTIONS
// =========================================================================
// ki_dev database connection
$container->set('pdo.dev', fn () => DatabaseFactory::dev());
// ki_content database connection
$container->set('pdo.content', fn () => DatabaseFactory::content());
// =========================================================================
// SERVICE PROVIDERS - Modular Registration by Bounded Context
// =========================================================================
$providers = [
new ChatServiceProvider(),
new TaskServiceProvider(),
new ContentServiceProvider(),
new InfrastructureServiceProvider(),
];
foreach ($providers as $provider) {
$provider->register($container);
}
};