refactor : move lobby into its own module

This commit is contained in:
2024-12-31 12:30:29 +01:00
parent d60df06708
commit d968f7b7e6
8 changed files with 48 additions and 27 deletions
+2
View File
@@ -14,6 +14,7 @@ import { ConceptInTurn } from './games/entities/concept_in_turn.entity';
import { ConfigService } from '@nestjs/config'; import { ConfigService } from '@nestjs/config';
import { WordModule } from './word/words.module'; import { WordModule } from './word/words.module';
import { Message } from './games/entities/message.entity'; import { Message } from './games/entities/message.entity';
import { LobbyModule } from './lobby/lobby.module';
const configService = new ConfigService(); const configService = new ConfigService();
@@ -43,6 +44,7 @@ const configService = new ConfigService();
Word, Word,
], ],
}), }),
LobbyModule,
GamesModule, GamesModule,
UsersModule, UsersModule,
WordModule, WordModule,
+1 -1
View File
@@ -10,7 +10,6 @@ import {
Sse, Sse,
UseGuards, UseGuards,
} from '@nestjs/common'; } from '@nestjs/common';
import { LobbyService } from '../services/lobby.service';
import { AuthGuard } from '../../users/guards/auth.guard'; import { AuthGuard } from '../../users/guards/auth.guard';
import { ApiBody, ApiOperation, ApiResponse, ApiTags } from '@nestjs/swagger'; import { ApiBody, ApiOperation, ApiResponse, ApiTags } from '@nestjs/swagger';
import { Game } from '../entities/game.entity'; import { Game } from '../entities/game.entity';
@@ -23,6 +22,7 @@ import { ConfigService } from '@nestjs/config';
import { SessionData } from 'express-session'; import { SessionData } from 'express-session';
import { WordResponseDTO } from 'events/dto/wordresponse.dto'; import { WordResponseDTO } from 'events/dto/wordresponse.dto';
import { WordRecieveDTO } from 'src/word/dto/wordrecieve.dto'; import { WordRecieveDTO } from 'src/word/dto/wordrecieve.dto';
import { LobbyService } from 'src/lobby/lobby.service';
@ApiTags('game') @ApiTags('game')
@Controller('games/:id') @Controller('games/:id')
+5 -6
View File
@@ -1,25 +1,24 @@
import { Module } from '@nestjs/common'; import { Module, forwardRef } from '@nestjs/common';
import { LobbyService } from './services/lobby.service';
import { LobbyController } from './controllers/lobby.controller';
import { Game } from './entities/game.entity'; import { Game } from './entities/game.entity';
import { UsersModule } from 'src/users/users.module'; import { UsersModule } from 'src/users/users.module';
import { GamesController } from './controllers/games.controller'; import { GamesController } from './controllers/games.controller';
import { GameService } from './services/games.service'; import { GameService } from './services/games.service';
import { TypeOrmModule } from '@nestjs/typeorm'; import { TypeOrmModule } from '@nestjs/typeorm';
import { Player } from './entities/player.entity'; import { Player } from './entities/player.entity';
import { User } from 'src/users/entities/user.entity';
import { WordModule } from 'src/word/words.module'; import { WordModule } from 'src/word/words.module';
import { Message } from './entities/message.entity'; import { Message } from './entities/message.entity';
import { LobbyModule } from 'src/lobby/lobby.module';
@Module({ @Module({
imports: [ imports: [
UsersModule, UsersModule,
WordModule, WordModule,
forwardRef(() => LobbyModule),
TypeOrmModule.forFeature([Game]), TypeOrmModule.forFeature([Game]),
TypeOrmModule.forFeature([Player]), TypeOrmModule.forFeature([Player]),
TypeOrmModule.forFeature([Message]), TypeOrmModule.forFeature([Message]),
], ],
controllers: [LobbyController, GamesController], controllers: [GamesController],
providers: [LobbyService, GameService], providers: [GameService],
}) })
export class GamesModule {} export class GamesModule {}
@@ -1,14 +1,14 @@
import { Test, TestingModule } from '@nestjs/testing'; 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 { LobbyService } from '../services/lobby.service';
import { Game } from '../entities/game.entity'; import { Game } from '../games/entities/game.entity';
import { TypeOrmModule } from '@nestjs/typeorm'; import { TypeOrmModule } from '@nestjs/typeorm';
import { Player } from '../entities/player.entity'; import { Player } from '../games/entities/player.entity';
import { GameService } from '../services/games.service'; import { GameService } from '../games/services/games.service';
import { User } from 'src/users/entities/user.entity'; import { User } from 'src/users/entities/user.entity';
import { EventEmitterModule } from '@nestjs/event-emitter'; import { EventEmitterModule } from '@nestjs/event-emitter';
import { Concept } from '../entities/concept.entity'; import { Concept } from '../games/entities/concept.entity';
import { ConceptInTurn } from '../entities/concept_in_turn.entity'; import { ConceptInTurn } from '../games/entities/concept_in_turn.entity';
describe('LobbyController', () => { describe('LobbyController', () => {
let controller: LobbyController; let controller: LobbyController;
@@ -10,14 +10,14 @@ import {
HttpStatus, HttpStatus,
Sse, Sse,
} from '@nestjs/common'; } from '@nestjs/common';
import { LobbyService } from '../services/lobby.service'; import { LobbyService } from './lobby.service';
import { AuthGuard } from '../../users/guards/auth.guard'; import { AuthGuard } from '../users/guards/auth.guard';
import { ApiOperation, ApiResponse, ApiTags } from '@nestjs/swagger'; import { ApiOperation, ApiResponse, ApiTags } from '@nestjs/swagger';
import { GamePipe } from '../pipe/game.pipe'; import { GamePipe } from '../games/pipe/game.pipe';
import { Game } from '../entities/game.entity'; import { Game } from '../games/entities/game.entity';
import { Observable, fromEvent, map } from 'rxjs'; import { Observable, fromEvent, map } from 'rxjs';
import { EventEmitter2 } from '@nestjs/event-emitter'; 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 { GetUser } from 'src/users/user.pipe';
import { User } from 'src/users/entities/user.entity'; import { User } from 'src/users/entities/user.entity';
+22
View File
@@ -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 {}
@@ -3,11 +3,11 @@ import { LobbyService } from './lobby.service';
import { TypeOrmModule } from '@nestjs/typeorm'; import { TypeOrmModule } from '@nestjs/typeorm';
import { EventEmitterModule } from '@nestjs/event-emitter'; import { EventEmitterModule } from '@nestjs/event-emitter';
import { User } from 'src/users/entities/user.entity'; import { User } from 'src/users/entities/user.entity';
import { Concept } from '../entities/concept.entity'; import { Concept } from '../games/entities/concept.entity';
import { ConceptInTurn } from '../entities/concept_in_turn.entity'; import { ConceptInTurn } from '../games/entities/concept_in_turn.entity';
import { Game } from '../entities/game.entity'; import { Game } from '../games/entities/game.entity';
import { Player } from '../entities/player.entity'; import { Player } from '../games/entities/player.entity';
import { GameService } from './games.service'; import { GameService } from '../games/services/games.service';
describe('LobbyService', () => { describe('LobbyService', () => {
let service: LobbyService; let service: LobbyService;
@@ -1,11 +1,8 @@
import { Injectable } from '@nestjs/common'; import { Injectable } from '@nestjs/common';
import { EventEmitter2 } from '@nestjs/event-emitter'; import { EventEmitter2 } from '@nestjs/event-emitter';
import { GameService } from './games.service';
import { InjectRepository } from '@nestjs/typeorm'; import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm'; import { Repository } from 'typeorm';
import { Game } from '../entities/game.entity';
import { User } from 'src/users/entities/user.entity'; import { User } from 'src/users/entities/user.entity';
import { Player } from '../entities/player.entity';
import { randomUUID } from 'node:crypto'; import { randomUUID } from 'node:crypto';
import { import {
LobbyCreateEvent, LobbyCreateEvent,
@@ -14,13 +11,14 @@ import {
} from 'events/lobby.events'; } from 'events/lobby.events';
import { GameResponseDTO } from 'events/dto/gameresponse.dto'; import { GameResponseDTO } from 'events/dto/gameresponse.dto';
import { GameDeleteEvent, GameJoinEvent } from 'events/game.events'; import { GameDeleteEvent, GameJoinEvent } from 'events/game.events';
import { Player } from 'src/games/entities/player.entity';
import { Game } from 'src/games/entities/game.entity';
@Injectable() @Injectable()
export class LobbyService { export class LobbyService {
constructor( constructor(
@InjectRepository(Game) private gameRepository: Repository<Game>, @InjectRepository(Game) private gameRepository: Repository<Game>,
@InjectRepository(Player) private playerRepository: Repository<Player>, @InjectRepository(Player) private playerRepository: Repository<Player>,
private readonly gamesService: GameService,
private eventEmitter: EventEmitter2, private eventEmitter: EventEmitter2,
) {} ) {}