diff --git a/src/app.module.ts b/src/app.module.ts index 03bbd25..a86bec3 100644 --- a/src/app.module.ts +++ b/src/app.module.ts @@ -14,6 +14,7 @@ import { ConceptInTurn } from './games/entities/concept_in_turn.entity'; import { ConfigService } from '@nestjs/config'; import { WordModule } from './word/words.module'; import { Message } from './games/entities/message.entity'; +import { LobbyModule } from './lobby/lobby.module'; const configService = new ConfigService(); @@ -43,6 +44,7 @@ const configService = new ConfigService(); Word, ], }), + LobbyModule, GamesModule, UsersModule, WordModule, diff --git a/src/games/controllers/games.controller.ts b/src/games/controllers/games.controller.ts index 74049c7..fd4ca77 100644 --- a/src/games/controllers/games.controller.ts +++ b/src/games/controllers/games.controller.ts @@ -10,7 +10,6 @@ import { Sse, UseGuards, } from '@nestjs/common'; -import { LobbyService } from '../services/lobby.service'; import { AuthGuard } from '../../users/guards/auth.guard'; import { ApiBody, ApiOperation, ApiResponse, ApiTags } from '@nestjs/swagger'; import { Game } from '../entities/game.entity'; @@ -23,6 +22,7 @@ import { ConfigService } from '@nestjs/config'; import { SessionData } from 'express-session'; import { WordResponseDTO } from 'events/dto/wordresponse.dto'; import { WordRecieveDTO } from 'src/word/dto/wordrecieve.dto'; +import { LobbyService } from 'src/lobby/lobby.service'; @ApiTags('game') @Controller('games/:id') diff --git a/src/games/games.module.ts b/src/games/games.module.ts index 7c6537d..341831e 100644 --- a/src/games/games.module.ts +++ b/src/games/games.module.ts @@ -1,25 +1,24 @@ -import { Module } from '@nestjs/common'; -import { LobbyService } from './services/lobby.service'; -import { LobbyController } from './controllers/lobby.controller'; +import { Module, forwardRef } from '@nestjs/common'; import { Game } from './entities/game.entity'; import { UsersModule } from 'src/users/users.module'; import { GamesController } from './controllers/games.controller'; import { GameService } from './services/games.service'; import { TypeOrmModule } from '@nestjs/typeorm'; import { Player } from './entities/player.entity'; -import { User } from 'src/users/entities/user.entity'; import { WordModule } from 'src/word/words.module'; import { Message } from './entities/message.entity'; +import { LobbyModule } from 'src/lobby/lobby.module'; @Module({ imports: [ UsersModule, WordModule, + forwardRef(() => LobbyModule), TypeOrmModule.forFeature([Game]), TypeOrmModule.forFeature([Player]), TypeOrmModule.forFeature([Message]), ], - controllers: [LobbyController, GamesController], - providers: [LobbyService, GameService], + controllers: [GamesController], + providers: [GameService], }) export class GamesModule {} diff --git a/src/games/controllers/lobby.controller.spec.ts b/src/lobby/lobby.controller.spec.ts similarity index 75% rename from src/games/controllers/lobby.controller.spec.ts rename to src/lobby/lobby.controller.spec.ts index b98bd8c..e88a843 100644 --- a/src/games/controllers/lobby.controller.spec.ts +++ b/src/lobby/lobby.controller.spec.ts @@ -1,14 +1,14 @@ import { Test, TestingModule } from '@nestjs/testing'; -import { LobbyController } from './lobby.controller'; +import { LobbyController } from '../games/controllers/lobby.controller'; import { LobbyService } from '../services/lobby.service'; -import { Game } from '../entities/game.entity'; +import { Game } from '../games/entities/game.entity'; import { TypeOrmModule } from '@nestjs/typeorm'; -import { Player } from '../entities/player.entity'; -import { GameService } from '../services/games.service'; +import { Player } from '../games/entities/player.entity'; +import { GameService } from '../games/services/games.service'; import { User } from 'src/users/entities/user.entity'; import { EventEmitterModule } from '@nestjs/event-emitter'; -import { Concept } from '../entities/concept.entity'; -import { ConceptInTurn } from '../entities/concept_in_turn.entity'; +import { Concept } from '../games/entities/concept.entity'; +import { ConceptInTurn } from '../games/entities/concept_in_turn.entity'; describe('LobbyController', () => { let controller: LobbyController; diff --git a/src/games/controllers/lobby.controller.ts b/src/lobby/lobby.controller.ts similarity index 92% rename from src/games/controllers/lobby.controller.ts rename to src/lobby/lobby.controller.ts index a568d9e..6be8688 100644 --- a/src/games/controllers/lobby.controller.ts +++ b/src/lobby/lobby.controller.ts @@ -10,14 +10,14 @@ import { HttpStatus, Sse, } from '@nestjs/common'; -import { LobbyService } from '../services/lobby.service'; -import { AuthGuard } from '../../users/guards/auth.guard'; +import { LobbyService } from './lobby.service'; +import { AuthGuard } from '../users/guards/auth.guard'; import { ApiOperation, ApiResponse, ApiTags } from '@nestjs/swagger'; -import { GamePipe } from '../pipe/game.pipe'; -import { Game } from '../entities/game.entity'; +import { GamePipe } from '../games/pipe/game.pipe'; +import { Game } from '../games/entities/game.entity'; import { Observable, fromEvent, map } from 'rxjs'; import { EventEmitter2 } from '@nestjs/event-emitter'; -import { GameResponseDTO } from '../../../events/dto/gameresponse.dto'; +import { GameResponseDTO } from '../../events/dto/gameresponse.dto'; import { GetUser } from 'src/users/user.pipe'; import { User } from 'src/users/entities/user.entity'; diff --git a/src/lobby/lobby.module.ts b/src/lobby/lobby.module.ts new file mode 100644 index 0000000..0db9518 --- /dev/null +++ b/src/lobby/lobby.module.ts @@ -0,0 +1,22 @@ +import { Module, forwardRef } from '@nestjs/common'; +import { UsersModule } from 'src/users/users.module'; +import { WordModule } from 'src/word/words.module'; +import { LobbyController } from './lobby.controller'; +import { LobbyService } from './lobby.service'; +import { GamesModule } from 'src/games/games.module'; +import { TypeOrmModule } from '@nestjs/typeorm'; +import { Game } from 'src/games/entities/game.entity'; +import { Player } from 'src/games/entities/player.entity'; + +@Module({ + imports: [ + UsersModule, + forwardRef(() => GamesModule), + TypeOrmModule.forFeature([Game]), + TypeOrmModule.forFeature([Player]), + ], + controllers: [LobbyController], + providers: [LobbyService], + exports: [LobbyService], +}) +export class LobbyModule {} diff --git a/src/games/services/games.lobby.service.spec.ts b/src/lobby/lobby.service.spec.ts similarity index 75% rename from src/games/services/games.lobby.service.spec.ts rename to src/lobby/lobby.service.spec.ts index a118491..7aafd97 100644 --- a/src/games/services/games.lobby.service.spec.ts +++ b/src/lobby/lobby.service.spec.ts @@ -3,11 +3,11 @@ import { LobbyService } from './lobby.service'; import { TypeOrmModule } from '@nestjs/typeorm'; import { EventEmitterModule } from '@nestjs/event-emitter'; import { User } from 'src/users/entities/user.entity'; -import { Concept } from '../entities/concept.entity'; -import { ConceptInTurn } from '../entities/concept_in_turn.entity'; -import { Game } from '../entities/game.entity'; -import { Player } from '../entities/player.entity'; -import { GameService } from './games.service'; +import { Concept } from '../games/entities/concept.entity'; +import { ConceptInTurn } from '../games/entities/concept_in_turn.entity'; +import { Game } from '../games/entities/game.entity'; +import { Player } from '../games/entities/player.entity'; +import { GameService } from '../games/services/games.service'; describe('LobbyService', () => { let service: LobbyService; diff --git a/src/games/services/lobby.service.ts b/src/lobby/lobby.service.ts similarity index 91% rename from src/games/services/lobby.service.ts rename to src/lobby/lobby.service.ts index 7e4c8df..12df0ed 100644 --- a/src/games/services/lobby.service.ts +++ b/src/lobby/lobby.service.ts @@ -1,11 +1,8 @@ import { Injectable } from '@nestjs/common'; import { EventEmitter2 } from '@nestjs/event-emitter'; -import { GameService } from './games.service'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { Game } from '../entities/game.entity'; import { User } from 'src/users/entities/user.entity'; -import { Player } from '../entities/player.entity'; import { randomUUID } from 'node:crypto'; import { LobbyCreateEvent, @@ -14,13 +11,14 @@ import { } from 'events/lobby.events'; import { GameResponseDTO } from 'events/dto/gameresponse.dto'; import { GameDeleteEvent, GameJoinEvent } from 'events/game.events'; +import { Player } from 'src/games/entities/player.entity'; +import { Game } from 'src/games/entities/game.entity'; @Injectable() export class LobbyService { constructor( @InjectRepository(Game) private gameRepository: Repository, @InjectRepository(Player) private playerRepository: Repository, - private readonly gamesService: GameService, private eventEmitter: EventEmitter2, ) {}