import { GameRepository } from "./domain/interfaces/GameRepository";
import { RuleFactory } from "./application/RuleFactory";
import { GameFactory } from "./application/GameFactory";
import { GameService } from "./application/GameService";
import { GameController } from "./infrastructure/web/controllers/GameController";
import { createGameRoutes } from "./infrastructure/web/routes/gameRoutes";
import { Game } from "./domain/Game";
import { GameType } from "./domain/enums/GameType";
import { Player } from "./domain/entities/Player";
import { GameStatus } from "./domain/enums/GameStatus";

function createRoutes(gameRepository:GameRepository){
    const ruleFactory = new RuleFactory();
    const gameFactory = new GameFactory(gameRepository, ruleFactory);
    const gameService = new GameService(gameFactory, gameRepository, ruleFactory);
    // 控制器初始化
    const gameController = new GameController(gameService);

    // 路由配置
    const routes= createGameRoutes(gameController);

    return routes
}

export {
    GameRepository,
    GameService,
    GameFactory,
    RuleFactory,
    GameController,
    createRoutes,
    Game,
    GameType,
    Player,
    GameStatus
}