diff --git a/knex/migrations/20211204161156_create_table_room.ts b/knex/migrations/20211204161156_create_table_room.ts index b51ec62..76f0c6c 100644 --- a/knex/migrations/20211204161156_create_table_room.ts +++ b/knex/migrations/20211204161156_create_table_room.ts @@ -1,6 +1,6 @@ import { Knex } from 'knex'; -import { ROOM, RoomStatus } from '../../src/modules/room/constants'; +import { ROOM, RoomStatus } from '../../src/modules/killer/constants'; export async function up(knex: Knex): Promise { return knex.schema.createTable(ROOM, (table) => { diff --git a/knex/migrations/20211204162503_create_table_player.ts b/knex/migrations/20211204162503_create_table_player.ts index 438aab8..f11b36a 100644 --- a/knex/migrations/20211204162503_create_table_player.ts +++ b/knex/migrations/20211204162503_create_table_player.ts @@ -2,10 +2,10 @@ import { Knex } from 'knex'; import { PLAYER, + ROOM, PlayerRole, PlayerStatus, -} from '../../src/modules/player/constants'; -import { ROOM } from '../../src/modules/room/constants'; +} from '../../src/modules/killer/constants'; export async function up(knex: Knex): Promise { return knex.schema.createTable(PLAYER, (table) => { diff --git a/knex/migrations/20211204163342_create_table_mission.ts b/knex/migrations/20211204163342_create_table_mission.ts index c14c3e0..2b48f61 100644 --- a/knex/migrations/20211204163342_create_table_mission.ts +++ b/knex/migrations/20211204163342_create_table_mission.ts @@ -1,6 +1,6 @@ import { Knex } from 'knex'; -import { MISSION } from '../../src/modules/mission/constants'; +import { MISSION } from '../../src/modules/killer/constants'; export async function up(knex: Knex): Promise { return knex.schema.createTable(MISSION, (table) => { diff --git a/knex/migrations/20211204174016_add_target_and_mission_to_player.ts b/knex/migrations/20211204174016_add_target_and_mission_to_player.ts index 190c406..7bb1490 100644 --- a/knex/migrations/20211204174016_add_target_and_mission_to_player.ts +++ b/knex/migrations/20211204174016_add_target_and_mission_to_player.ts @@ -1,7 +1,6 @@ import { Knex } from 'knex'; -import { MISSION } from '../../src/modules/mission/constants'; -import { PLAYER } from '../../src/modules/player/constants'; +import { MISSION, PLAYER } from '../../src/modules/killer/constants'; export async function up(knex: Knex): Promise { return knex.schema.table(PLAYER, (table) => { diff --git a/knex/migrations/20220108121230_room_code_primary_key.ts b/knex/migrations/20220108121230_room_code_primary_key.ts index 7806843..b317cd8 100644 --- a/knex/migrations/20220108121230_room_code_primary_key.ts +++ b/knex/migrations/20220108121230_room_code_primary_key.ts @@ -1,7 +1,6 @@ import { Knex } from 'knex'; -import { PLAYER } from '../../src/modules/player/constants'; -import { ROOM } from '../../src/modules/room/constants'; +import { PLAYER, ROOM } from '../../src/modules/killer/constants'; export async function up(knex: Knex): Promise { await knex.schema.table(PLAYER, (table) => { diff --git a/knex/migrations/20220109142006_player_passcode_string.ts b/knex/migrations/20220109142006_player_passcode_string.ts index 9f8ad84..9640b2f 100644 --- a/knex/migrations/20220109142006_player_passcode_string.ts +++ b/knex/migrations/20220109142006_player_passcode_string.ts @@ -1,6 +1,6 @@ import { Knex } from 'knex'; -import { PLAYER } from '../../src/modules/player/constants'; +import { PLAYER } from '../../src/modules/killer/constants'; export async function up(knex: Knex): Promise { return knex.schema.alterTable(PLAYER, (table) => { diff --git a/knex/migrations/20220122153520_create_mission_room.ts b/knex/migrations/20220122153520_create_mission_room.ts index 46ca979..4db9518 100644 --- a/knex/migrations/20220122153520_create_mission_room.ts +++ b/knex/migrations/20220122153520_create_mission_room.ts @@ -1,6 +1,6 @@ import { Knex } from 'knex'; -import { MISSION_ROOM } from '../../src/modules/mission/constants'; +import { MISSION_ROOM } from '../../src/modules/killer/constants'; export async function up(knex: Knex): Promise { return knex.schema.createTable(MISSION_ROOM, (table) => { diff --git a/knex/migrations/20220205151550_add_mission_author_id.ts b/knex/migrations/20220205151550_add_mission_author_id.ts index afdc744..72d5281 100644 --- a/knex/migrations/20220205151550_add_mission_author_id.ts +++ b/knex/migrations/20220205151550_add_mission_author_id.ts @@ -1,7 +1,6 @@ import { Knex } from 'knex'; -import { MISSION_ROOM } from '../../src/modules/mission/constants'; -import { PLAYER } from '../../src/modules/player/constants'; +import { MISSION_ROOM, PLAYER } from '../../src/modules/killer/constants'; export async function up(knex: Knex): Promise { return knex.schema.alterTable(MISSION_ROOM, (table) => { diff --git a/knex/seeds/seed.ts b/knex/seeds/seed.ts index 0ba6ea2..8fc980e 100644 --- a/knex/seeds/seed.ts +++ b/knex/seeds/seed.ts @@ -1,12 +1,13 @@ import { Knex } from 'knex'; -import { MISSION, MISSION_ROOM } from '../../src/modules/mission/constants'; +import { MISSION, MISSION_ROOM } from '../../src/modules/killer/constants'; import { PLAYER, PlayerRole, PlayerStatus, -} from '../../src/modules/player/constants'; -import { ROOM, RoomStatus } from '../../src/modules/room/constants'; + ROOM, + RoomStatus, +} from '../../src/modules/killer/constants'; export async function seed(knex: Knex): Promise { // Deletes ALL existing entries diff --git a/src/app.module.ts b/src/app.module.ts index c625f44..83e4f8e 100644 --- a/src/app.module.ts +++ b/src/app.module.ts @@ -16,9 +16,7 @@ import { I18nJsonParser, I18nModule } from 'nestjs-i18n'; import { appConfig, databaseConfig, mercureConfig } from './app.config'; import { HttpExceptionFilter } from './exceptions/http-exception.filter'; import { DatabaseModule } from './modules/database/database.module'; -import { MissionModule } from './modules/mission/mission.module'; -import { PlayerModule } from './modules/player/player.module'; -import { RoomModule } from './modules/room/room.module'; +import { KillerModule } from './modules/killer/killer.module'; import { SseModule } from './modules/sse/sse.module'; @Module({ @@ -27,9 +25,6 @@ import { SseModule } from './modules/sse/sse.module'; load: [appConfig, databaseConfig, mercureConfig], isGlobal: true, }), - PlayerModule, - RoomModule, - MissionModule, DatabaseModule, EventEmitterModule.forRoot({ wildcard: true, @@ -43,6 +38,7 @@ import { SseModule } from './modules/sse/sse.module'; }, }), SseModule, + KillerModule, ], providers: [ { diff --git a/src/declarations.d.ts b/src/declarations.d.ts index 3d51ed3..a9a1d12 100644 --- a/src/declarations.d.ts +++ b/src/declarations.d.ts @@ -1,4 +1,4 @@ -import { PlayerModel } from './modules/player/player.model'; +import { PlayerModel } from './modules/killer/models/player.model'; interface Class { new (...args: unknown[]): unknown; diff --git a/src/exceptions/http-exception.filter.ts b/src/exceptions/http-exception.filter.ts index 38853d8..bb77817 100644 --- a/src/exceptions/http-exception.filter.ts +++ b/src/exceptions/http-exception.filter.ts @@ -1,7 +1,7 @@ import { - ExceptionFilter, - Catch, ArgumentsHost, + Catch, + ExceptionFilter, HttpException, } from '@nestjs/common'; import { Response } from 'express'; diff --git a/src/modules/mission/__tests__/mission.controller.spec.ts b/src/modules/killer/__tests__/controllers/mission.controller.spec.ts similarity index 81% rename from src/modules/mission/__tests__/mission.controller.spec.ts rename to src/modules/killer/__tests__/controllers/mission.controller.spec.ts index 4aa4bc9..e10ff1c 100644 --- a/src/modules/mission/__tests__/mission.controller.spec.ts +++ b/src/modules/killer/__tests__/controllers/mission.controller.spec.ts @@ -1,8 +1,8 @@ import { EventEmitter2 } from '@nestjs/event-emitter'; import { Test, TestingModule } from '@nestjs/testing'; -import { MissionController } from '../mission.controller'; -import { MissionService } from '../mission.service'; +import { MissionController } from '../../controllers/mission.controller'; +import { MissionService } from '../../services/mission.service'; describe('MissionController', () => { let controller: MissionController; diff --git a/src/modules/player/__tests__/player.controller.spec.ts b/src/modules/killer/__tests__/controllers/player.controller.spec.ts similarity index 82% rename from src/modules/player/__tests__/player.controller.spec.ts rename to src/modules/killer/__tests__/controllers/player.controller.spec.ts index 2f96610..f99c64b 100644 --- a/src/modules/player/__tests__/player.controller.spec.ts +++ b/src/modules/killer/__tests__/controllers/player.controller.spec.ts @@ -2,8 +2,8 @@ import { ConfigModule } from '@nestjs/config'; import { EventEmitter2 } from '@nestjs/event-emitter'; import { Test } from '@nestjs/testing'; -import { PlayerController } from '../player.controller'; -import { PlayerService } from '../services/player.service'; +import { PlayerController } from '../../controllers/player.controller'; +import { PlayerService } from '../../services/player.service'; describe('PlayerController', () => { let controller: PlayerController; diff --git a/src/modules/room/__tests__/room.controller.spec.ts b/src/modules/killer/__tests__/controllers/room.controller.spec.ts similarity index 82% rename from src/modules/room/__tests__/room.controller.spec.ts rename to src/modules/killer/__tests__/controllers/room.controller.spec.ts index 220ef52..9d7e911 100644 --- a/src/modules/room/__tests__/room.controller.spec.ts +++ b/src/modules/killer/__tests__/controllers/room.controller.spec.ts @@ -1,8 +1,8 @@ import { EventEmitter2 } from '@nestjs/event-emitter'; import { Test, TestingModule } from '@nestjs/testing'; -import { RoomController } from '../room.controller'; -import { RoomService } from '../services/room.service'; +import { RoomController } from '../../controllers/room.controller'; +import { RoomService } from '../../services/room.service'; describe('RoomController', () => { let controller: RoomController; diff --git a/src/modules/mission/__tests__/mission.service.spec.ts b/src/modules/killer/__tests__/services/mission.service.spec.ts similarity index 95% rename from src/modules/mission/__tests__/mission.service.spec.ts rename to src/modules/killer/__tests__/services/mission.service.spec.ts index bfba4da..c954776 100644 --- a/src/modules/mission/__tests__/mission.service.spec.ts +++ b/src/modules/killer/__tests__/services/mission.service.spec.ts @@ -1,10 +1,10 @@ import { NotFoundException } from '@nestjs/common'; import { Test, TestingModule } from '@nestjs/testing'; -import { DatabaseService } from '../../database/database.service'; -import { PlayerRole, PlayerStatus } from '../../player/constants'; -import { MissionRepository } from '../mission.repository'; -import { MissionService } from '../mission.service'; +import { DatabaseService } from '../../../database/database.service'; +import { PlayerRole, PlayerStatus } from '../../constants'; +import { MissionRepository } from '../../repositories/mission.repository'; +import { MissionService } from '../../services/mission.service'; describe('MissionService', () => { let service: MissionService; diff --git a/src/modules/player/__tests__/player.service.spec.ts b/src/modules/killer/__tests__/services/player.service.spec.ts similarity index 97% rename from src/modules/player/__tests__/player.service.spec.ts rename to src/modules/killer/__tests__/services/player.service.spec.ts index ba1b84b..1f18cd6 100644 --- a/src/modules/player/__tests__/player.service.spec.ts +++ b/src/modules/killer/__tests__/services/player.service.spec.ts @@ -3,14 +3,13 @@ import { ConfigModule } from '@nestjs/config'; import { EventEmitter2 } from '@nestjs/event-emitter'; import { Test, TestingModule } from '@nestjs/testing'; -import { DatabaseService } from '../../database/database.service'; -import { MissionRepository } from '../../mission/mission.repository'; -import { MissionService } from '../../mission/mission.service'; -import { RoomStatus } from '../../room/constants'; -import { PlayerRole, PlayerStatus } from '../constants'; -import { PlayerRepository } from '../player.repository'; -import { PlayerKilledService } from '../services/player-killed.service'; -import { PlayerService } from '../services/player.service'; +import { DatabaseService } from '../../../database/database.service'; +import { PlayerRole, PlayerStatus, RoomStatus } from '../../constants'; +import { MissionRepository } from '../../repositories/mission.repository'; +import { PlayerRepository } from '../../repositories/player.repository'; +import { MissionService } from '../../services/mission.service'; +import { PlayerKilledService } from '../../services/player-killed.service'; +import { PlayerService } from '../../services/player.service'; describe('PlayerService', () => { let service: PlayerService; diff --git a/src/modules/room/__tests__/room.service.spec.ts b/src/modules/killer/__tests__/services/room.service.spec.ts similarity index 93% rename from src/modules/room/__tests__/room.service.spec.ts rename to src/modules/killer/__tests__/services/room.service.spec.ts index feee0c5..25ec6c0 100644 --- a/src/modules/room/__tests__/room.service.spec.ts +++ b/src/modules/killer/__tests__/services/room.service.spec.ts @@ -2,15 +2,14 @@ import { BadRequestException, NotFoundException } from '@nestjs/common'; import { EventEmitter2 } from '@nestjs/event-emitter'; import { Test, TestingModule } from '@nestjs/testing'; -import { DatabaseService } from '../../database/database.service'; -import { PlayerRole, PlayerStatus } from '../../player/constants'; -import { PlayerRepository } from '../../player/player.repository'; -import { PlayerKilledService } from '../../player/services/player-killed.service'; -import { PlayerService } from '../../player/services/player.service'; -import { RoomStatus } from '../constants'; -import { RoomRepository } from '../room.repository'; -import { GameStartingService } from '../services/game-starting.service'; -import { RoomService } from '../services/room.service'; +import { DatabaseService } from '../../../database/database.service'; +import { PlayerRole, PlayerStatus, RoomStatus } from '../../constants'; +import { PlayerRepository } from '../../repositories/player.repository'; +import { RoomRepository } from '../../repositories/room.repository'; +import { GameStartingService } from '../../services/game-starting.service'; +import { PlayerKilledService } from '../../services/player-killed.service'; +import { PlayerService } from '../../services/player.service'; +import { RoomService } from '../../services/room.service'; describe('RoomService', () => { let service: RoomService; diff --git a/src/modules/killer/constants.ts b/src/modules/killer/constants.ts new file mode 100644 index 0000000..88a2d1b --- /dev/null +++ b/src/modules/killer/constants.ts @@ -0,0 +1,24 @@ +export const MISSION = 'mission'; +export const MISSION_ROOM = 'mission_room'; + +export enum PlayerStatus { + ALIVE = 'ALIVE', + KILLED = 'KILLED', +} + +export enum PlayerRole { + PLAYER = 'PLAYER', + ADMIN = 'ADMIN', +} + +export const PLAYER = 'player'; + +export enum RoomStatus { + PENDING = 'PENDING', + IN_GAME = 'IN_GAME', + ENDED = 'ENDED', +} + +export const ROOM = 'room'; + +export const MINIMUM_PLAYER_IN_ROOM = 3; diff --git a/src/modules/mission/mission.controller.ts b/src/modules/killer/controllers/mission.controller.ts similarity index 75% rename from src/modules/mission/mission.controller.ts rename to src/modules/killer/controllers/mission.controller.ts index 74ed992..c4b7a48 100644 --- a/src/modules/mission/mission.controller.ts +++ b/src/modules/killer/controllers/mission.controller.ts @@ -11,22 +11,19 @@ import { import { EventEmitter2 } from '@nestjs/event-emitter'; import { ApiOperation } from '@nestjs/swagger'; -import { Serialize } from '../../interceptors/serializer.interceptor'; -import { PlayerRole } from '../player/constants'; -import { Player } from '../player/decorators/player.decorator'; -import { Role } from '../player/decorators/role.decorator'; -import { PlayerModel } from '../player/player.model'; -import { RoomStatus } from '../room/constants'; -import { Status } from '../room/decorators/status.decorator'; -import { MercureEvent } from '../sse/models/mercure-event'; -import { MercureEventType } from '../sse/models/mercure-event-types'; - -import { MISSION } from './constants'; -import { CreateMissionDto } from './dtos/create-mission.dto'; -import { MissionDto } from './dtos/mission.dto'; -import { UpdateMissionDto } from './dtos/update-mission.dto'; -import { MissionModel } from './mission.model'; -import { MissionService } from './mission.service'; +import { Serialize } from '../../../interceptors/serializer.interceptor'; +import { MercureEvent } from '../../sse/models/mercure-event'; +import { MercureEventType } from '../../sse/models/mercure-event-types'; +import { MISSION, PlayerRole, RoomStatus } from '../constants'; +import { Player } from '../decorators/player.decorator'; +import { Role } from '../decorators/role.decorator'; +import { Status } from '../decorators/status.decorator'; +import { CreateMissionDto } from '../dtos/create-mission.dto'; +import { MissionDto } from '../dtos/mission.dto'; +import { UpdateMissionDto } from '../dtos/update-mission.dto'; +import { MissionModel } from '../models/mission.model'; +import { PlayerModel } from '../models/player.model'; +import { MissionService } from '../services/mission.service'; @Controller(MISSION) @Serialize(MissionDto) diff --git a/src/modules/player/player.controller.ts b/src/modules/killer/controllers/player.controller.ts similarity index 74% rename from src/modules/player/player.controller.ts rename to src/modules/killer/controllers/player.controller.ts index f238c0b..8c72004 100644 --- a/src/modules/player/player.controller.ts +++ b/src/modules/killer/controllers/player.controller.ts @@ -14,20 +14,19 @@ import { ConfigService } from '@nestjs/config'; import { EventEmitter2 } from '@nestjs/event-emitter'; import { Response } from 'express'; -import { Serialize } from '../../interceptors/serializer.interceptor'; -import { MercureEvent } from '../sse/models/mercure-event'; -import { MercureEventType } from '../sse/models/mercure-event-types'; - -import { PLAYER, PlayerRole } from './constants'; -import { Player } from './decorators/player.decorator'; -import { Role } from './decorators/role.decorator'; -import { CreatePlayerDto } from './dtos/create-player.dto'; -import { GetMyPlayerDto } from './dtos/get-my-player.dto'; -import { PlayerDto } from './dtos/player.dto'; -import { TargetDto } from './dtos/target.dto'; -import { UpdatePlayerDto } from './dtos/update-player.dto'; -import { PlayerModel } from './player.model'; -import { PlayerService } from './services/player.service'; +import { Serialize } from '../../../interceptors/serializer.interceptor'; +import { MercureEvent } from '../../sse/models/mercure-event'; +import { MercureEventType } from '../../sse/models/mercure-event-types'; +import { PLAYER, PlayerRole } from '../constants'; +import { Player } from '../decorators/player.decorator'; +import { Role } from '../decorators/role.decorator'; +import { CreatePlayerDto } from '../dtos/create-player.dto'; +import { GetMyPlayerDto } from '../dtos/get-my-player.dto'; +import { PlayerDto } from '../dtos/player.dto'; +import { TargetDto } from '../dtos/target.dto'; +import { UpdatePlayerDto } from '../dtos/update-player.dto'; +import { PlayerModel } from '../models/player.model'; +import { PlayerService } from '../services/player.service'; @Controller(PLAYER) @Serialize(PlayerDto) diff --git a/src/modules/room/room.controller.ts b/src/modules/killer/controllers/room.controller.ts similarity index 79% rename from src/modules/room/room.controller.ts rename to src/modules/killer/controllers/room.controller.ts index c0949a1..86d58ed 100644 --- a/src/modules/room/room.controller.ts +++ b/src/modules/killer/controllers/room.controller.ts @@ -9,18 +9,16 @@ import { Post, } from '@nestjs/common'; -import { Serialize } from '../../interceptors/serializer.interceptor'; -import { PlayerRole } from '../player/constants'; -import { Player } from '../player/decorators/player.decorator'; -import { Role } from '../player/decorators/role.decorator'; -import { PlayerListDto } from '../player/dtos/player-list.dto'; -import { PlayerModel } from '../player/player.model'; - -import { ROOM } from './constants'; -import { PatchRoomPlayerDto } from './dtos/patch-room-player.dto'; -import { RoomDto } from './dtos/room.dto'; -import { UpdateRoomDto } from './dtos/update-room.dto'; -import { RoomService } from './services/room.service'; +import { Serialize } from '../../../interceptors/serializer.interceptor'; +import { PlayerRole, ROOM } from '../constants'; +import { Player } from '../decorators/player.decorator'; +import { Role } from '../decorators/role.decorator'; +import { PatchRoomPlayerDto } from '../dtos/patch-room-player.dto'; +import { PlayerListDto } from '../dtos/player-list.dto'; +import { RoomDto } from '../dtos/room.dto'; +import { UpdateRoomDto } from '../dtos/update-room.dto'; +import { PlayerModel } from '../models/player.model'; +import { RoomService } from '../services/room.service'; @Controller(ROOM) export class RoomController { diff --git a/src/modules/player/decorators/player.decorator.ts b/src/modules/killer/decorators/player.decorator.ts similarity index 100% rename from src/modules/player/decorators/player.decorator.ts rename to src/modules/killer/decorators/player.decorator.ts diff --git a/src/modules/player/decorators/role.decorator.ts b/src/modules/killer/decorators/role.decorator.ts similarity index 100% rename from src/modules/player/decorators/role.decorator.ts rename to src/modules/killer/decorators/role.decorator.ts diff --git a/src/modules/room/decorators/status.decorator.ts b/src/modules/killer/decorators/status.decorator.ts similarity index 100% rename from src/modules/room/decorators/status.decorator.ts rename to src/modules/killer/decorators/status.decorator.ts diff --git a/src/modules/mission/dtos/create-mission.dto.ts b/src/modules/killer/dtos/create-mission.dto.ts similarity index 100% rename from src/modules/mission/dtos/create-mission.dto.ts rename to src/modules/killer/dtos/create-mission.dto.ts diff --git a/src/modules/player/dtos/create-player.dto.ts b/src/modules/killer/dtos/create-player.dto.ts similarity index 100% rename from src/modules/player/dtos/create-player.dto.ts rename to src/modules/killer/dtos/create-player.dto.ts diff --git a/src/modules/player/dtos/get-my-player.dto.ts b/src/modules/killer/dtos/get-my-player.dto.ts similarity index 100% rename from src/modules/player/dtos/get-my-player.dto.ts rename to src/modules/killer/dtos/get-my-player.dto.ts diff --git a/src/modules/mission/dtos/mission.dto.ts b/src/modules/killer/dtos/mission.dto.ts similarity index 100% rename from src/modules/mission/dtos/mission.dto.ts rename to src/modules/killer/dtos/mission.dto.ts diff --git a/src/modules/room/dtos/patch-room-player.dto.ts b/src/modules/killer/dtos/patch-room-player.dto.ts similarity index 83% rename from src/modules/room/dtos/patch-room-player.dto.ts rename to src/modules/killer/dtos/patch-room-player.dto.ts index 16a9653..1da3edf 100644 --- a/src/modules/room/dtos/patch-room-player.dto.ts +++ b/src/modules/killer/dtos/patch-room-player.dto.ts @@ -1,7 +1,7 @@ import { ApiProperty } from '@nestjs/swagger'; import { IsOptional, IsString } from 'class-validator'; -import { PlayerRole } from '../../player/constants'; +import { PlayerRole } from '../constants'; export class PatchRoomPlayerDto { @ApiProperty() diff --git a/src/modules/player/dtos/player-list.dto.ts b/src/modules/killer/dtos/player-list.dto.ts similarity index 100% rename from src/modules/player/dtos/player-list.dto.ts rename to src/modules/killer/dtos/player-list.dto.ts diff --git a/src/modules/player/dtos/player.dto.ts b/src/modules/killer/dtos/player.dto.ts similarity index 100% rename from src/modules/player/dtos/player.dto.ts rename to src/modules/killer/dtos/player.dto.ts diff --git a/src/modules/room/dtos/room.dto.ts b/src/modules/killer/dtos/room.dto.ts similarity index 100% rename from src/modules/room/dtos/room.dto.ts rename to src/modules/killer/dtos/room.dto.ts diff --git a/src/modules/player/dtos/target.dto.ts b/src/modules/killer/dtos/target.dto.ts similarity index 100% rename from src/modules/player/dtos/target.dto.ts rename to src/modules/killer/dtos/target.dto.ts diff --git a/src/modules/mission/dtos/update-mission.dto.ts b/src/modules/killer/dtos/update-mission.dto.ts similarity index 100% rename from src/modules/mission/dtos/update-mission.dto.ts rename to src/modules/killer/dtos/update-mission.dto.ts diff --git a/src/modules/player/dtos/update-player.dto.ts b/src/modules/killer/dtos/update-player.dto.ts similarity index 100% rename from src/modules/player/dtos/update-player.dto.ts rename to src/modules/killer/dtos/update-player.dto.ts diff --git a/src/modules/room/dtos/update-room.dto.ts b/src/modules/killer/dtos/update-room.dto.ts similarity index 100% rename from src/modules/room/dtos/update-room.dto.ts rename to src/modules/killer/dtos/update-room.dto.ts diff --git a/src/modules/room/events/game-starting.event.ts b/src/modules/killer/events/game-starting.event.ts similarity index 100% rename from src/modules/room/events/game-starting.event.ts rename to src/modules/killer/events/game-starting.event.ts diff --git a/src/modules/player/guards/player-role.guard.ts b/src/modules/killer/guards/player-role.guard.ts similarity index 100% rename from src/modules/player/guards/player-role.guard.ts rename to src/modules/killer/guards/player-role.guard.ts diff --git a/src/modules/room/guards/room-status.guard.ts b/src/modules/killer/guards/room-status.guard.ts similarity index 100% rename from src/modules/room/guards/room-status.guard.ts rename to src/modules/killer/guards/room-status.guard.ts diff --git a/src/modules/killer/killer.module.ts b/src/modules/killer/killer.module.ts new file mode 100644 index 0000000..d4f4b4e --- /dev/null +++ b/src/modules/killer/killer.module.ts @@ -0,0 +1,53 @@ +import { MiddlewareConsumer, Module } from '@nestjs/common'; +import { APP_GUARD } from '@nestjs/core'; + +import { DatabaseModule } from '../database/database.module'; + +import { MissionController } from './controllers/mission.controller'; +import { PlayerController } from './controllers/player.controller'; +import { RoomController } from './controllers/room.controller'; +import { PlayerRoleGuard } from './guards/player-role.guard'; +import { RoomStatusGuard } from './guards/room-status.guard'; +import { CurrentPlayerMiddleware } from './middlewares/current-player.middleware'; +import { ExtendRoomSessionMiddleware } from './middlewares/extend-room-session.middleware'; +import { MissionRepository } from './repositories/mission.repository'; +import { PlayerRepository } from './repositories/player.repository'; +import { RoomRepository } from './repositories/room.repository'; +import { GameStartingService } from './services/game-starting.service'; +import { MissionService } from './services/mission.service'; +import { PlayerKilledService } from './services/player-killed.service'; +import { PlayerLeaveRoomService } from './services/player-leave-room.service'; +import { PlayerService } from './services/player.service'; +import { RoomService } from './services/room.service'; + +@Module({ + imports: [DatabaseModule], + providers: [ + MissionService, + MissionRepository, + PlayerService, + PlayerRepository, + PlayerKilledService, + RoomService, + RoomRepository, + GameStartingService, + PlayerLeaveRoomService, + { + provide: APP_GUARD, + useClass: PlayerRoleGuard, + }, + { + provide: APP_GUARD, + useClass: RoomStatusGuard, + }, + ], + controllers: [MissionController, PlayerController, RoomController], + exports: [], +}) +export class KillerModule { + configure(consumer: MiddlewareConsumer): void { + consumer + .apply(CurrentPlayerMiddleware, ExtendRoomSessionMiddleware) + .forRoutes('*'); + } +} diff --git a/src/modules/player/middlewares/current-player.middleware.ts b/src/modules/killer/middlewares/current-player.middleware.ts similarity index 100% rename from src/modules/player/middlewares/current-player.middleware.ts rename to src/modules/killer/middlewares/current-player.middleware.ts diff --git a/src/modules/room/middlewares/extend-room-session.middleware.ts b/src/modules/killer/middlewares/extend-room-session.middleware.ts similarity index 93% rename from src/modules/room/middlewares/extend-room-session.middleware.ts rename to src/modules/killer/middlewares/extend-room-session.middleware.ts index 5b3b51f..00cd297 100644 --- a/src/modules/room/middlewares/extend-room-session.middleware.ts +++ b/src/modules/killer/middlewares/extend-room-session.middleware.ts @@ -1,7 +1,7 @@ import { Injectable, NestMiddleware } from '@nestjs/common'; import { NextFunction, Request, Response } from 'express'; -import { PlayerService } from '../../player/services/player.service'; +import { PlayerService } from '../services/player.service'; import { RoomService } from '../services/room.service'; @Injectable() diff --git a/src/modules/mission/requests.http b/src/modules/killer/mission.requests.http similarity index 100% rename from src/modules/mission/requests.http rename to src/modules/killer/mission.requests.http diff --git a/src/modules/mission/mission-room.model.ts b/src/modules/killer/models/mission-room.model.ts similarity index 100% rename from src/modules/mission/mission-room.model.ts rename to src/modules/killer/models/mission-room.model.ts diff --git a/src/modules/mission/mission.model.ts b/src/modules/killer/models/mission.model.ts similarity index 100% rename from src/modules/mission/mission.model.ts rename to src/modules/killer/models/mission.model.ts diff --git a/src/modules/player/player.model.ts b/src/modules/killer/models/player.model.ts similarity index 77% rename from src/modules/player/player.model.ts rename to src/modules/killer/models/player.model.ts index 46c1361..7422404 100644 --- a/src/modules/player/player.model.ts +++ b/src/modules/killer/models/player.model.ts @@ -1,4 +1,4 @@ -import { PlayerRole, PlayerStatus } from './constants'; +import { PlayerRole, PlayerStatus } from '../constants'; export interface PlayerModel { id: number; diff --git a/src/modules/room/room.model.ts b/src/modules/killer/models/room.model.ts similarity index 73% rename from src/modules/room/room.model.ts rename to src/modules/killer/models/room.model.ts index ee37794..2c8a147 100644 --- a/src/modules/room/room.model.ts +++ b/src/modules/killer/models/room.model.ts @@ -1,4 +1,4 @@ -import { RoomStatus } from './constants'; +import { RoomStatus } from '../constants'; export interface RoomModel { code: string; diff --git a/src/modules/player/requests.http b/src/modules/killer/player.requests.http similarity index 100% rename from src/modules/player/requests.http rename to src/modules/killer/player.requests.http diff --git a/src/modules/mission/mission.repository.ts b/src/modules/killer/repositories/mission.repository.ts similarity index 91% rename from src/modules/mission/mission.repository.ts rename to src/modules/killer/repositories/mission.repository.ts index 41b8eb0..e7285c0 100644 --- a/src/modules/mission/mission.repository.ts +++ b/src/modules/killer/repositories/mission.repository.ts @@ -1,12 +1,10 @@ import { Injectable } from '@nestjs/common'; -import { DatabaseService } from '../database/database.service'; -import { PLAYER } from '../player/constants'; -import { PlayerModel } from '../player/player.model'; - -import { MISSION, MISSION_ROOM } from './constants'; -import { MissionRoomModel } from './mission-room.model'; -import { MissionModel } from './mission.model'; +import { DatabaseService } from '../../database/database.service'; +import { MISSION, MISSION_ROOM, PLAYER } from '../constants'; +import { MissionRoomModel } from '../models/mission-room.model'; +import { MissionModel } from '../models/mission.model'; +import { PlayerModel } from '../models/player.model'; @Injectable() export class MissionRepository { diff --git a/src/modules/player/player.repository.ts b/src/modules/killer/repositories/player.repository.ts similarity index 92% rename from src/modules/player/player.repository.ts rename to src/modules/killer/repositories/player.repository.ts index 31908a3..30f5f44 100644 --- a/src/modules/player/player.repository.ts +++ b/src/modules/killer/repositories/player.repository.ts @@ -1,12 +1,10 @@ import { Injectable } from '@nestjs/common'; -import { DatabaseService } from '../database/database.service'; -import { ROOM } from '../room/constants'; -import { RoomModel } from '../room/room.model'; - -import { PLAYER, PlayerRole } from './constants'; -import { GetMyPlayerDto } from './dtos/get-my-player.dto'; -import { PlayerModel } from './player.model'; +import { DatabaseService } from '../../database/database.service'; +import { PLAYER, PlayerRole, ROOM } from '../constants'; +import { GetMyPlayerDto } from '../dtos/get-my-player.dto'; +import { PlayerModel } from '../models/player.model'; +import { RoomModel } from '../models/room.model'; @Injectable() export class PlayerRepository { diff --git a/src/modules/room/room.repository.ts b/src/modules/killer/repositories/room.repository.ts similarity index 82% rename from src/modules/room/room.repository.ts rename to src/modules/killer/repositories/room.repository.ts index 1db0a09..f34070c 100644 --- a/src/modules/room/room.repository.ts +++ b/src/modules/killer/repositories/room.repository.ts @@ -1,12 +1,10 @@ import { Injectable } from '@nestjs/common'; -import { DatabaseService } from '../database/database.service'; -import { PLAYER, PlayerRole } from '../player/constants'; -import { PlayerModel } from '../player/player.model'; - -import { ROOM } from './constants'; -import { UpdateRoomDto } from './dtos/update-room.dto'; -import { RoomModel } from './room.model'; +import { DatabaseService } from '../../database/database.service'; +import { PLAYER, PlayerRole, ROOM } from '../constants'; +import { UpdateRoomDto } from '../dtos/update-room.dto'; +import { PlayerModel } from '../models/player.model'; +import { RoomModel } from '../models/room.model'; @Injectable() export class RoomRepository { diff --git a/src/modules/room/requests.http b/src/modules/killer/room.requests.http similarity index 100% rename from src/modules/room/requests.http rename to src/modules/killer/room.requests.http diff --git a/src/modules/room/services/game-starting.service.ts b/src/modules/killer/services/game-starting.service.ts similarity index 80% rename from src/modules/room/services/game-starting.service.ts rename to src/modules/killer/services/game-starting.service.ts index 9998c65..4f8b8a6 100644 --- a/src/modules/room/services/game-starting.service.ts +++ b/src/modules/killer/services/game-starting.service.ts @@ -1,15 +1,16 @@ import { Injectable, Logger } from '@nestjs/common'; -import { MissionService } from '../../mission/mission.service'; -import { PlayerModel } from '../../player/player.model'; -import { PlayerService } from '../../player/services/player.service'; +import { PlayerModel } from '../models/player.model'; +import { PlayerRepository } from '../repositories/player.repository'; + +import { MissionService } from './mission.service'; @Injectable() export class GameStartingService { private readonly logger = new Logger(); constructor( - private playerService: PlayerService, + private playerRepo: PlayerRepository, private missionService: MissionService, ) {} @@ -22,7 +23,7 @@ export class GameStartingService { private async dispatchMissions(roomCode: string): Promise { const [players, missions] = await Promise.all([ - this.playerService.getAllPlayersInRoom(roomCode), + this.playerRepo.getAllPlayersInRoom(roomCode), this.missionService.getMissions(roomCode), ]); @@ -40,11 +41,11 @@ export class GameStartingService { [], ); - return this.playerService.setMissionIdToPlayers(updatedPlayers); + return this.playerRepo.setMissionIdToPlayers(updatedPlayers); } private async dispatchTargets(roomCode: string): Promise { - const allPlayers = await this.playerService.getAllPlayersInRoom(roomCode); + const allPlayers = await this.playerRepo.getAllPlayersInRoom(roomCode); const targets = allPlayers.slice(); @@ -82,6 +83,6 @@ export class GameStartingService { [], ); - return this.playerService.setTargetIdToPlayers(updatedPlayers); + return this.playerRepo.setTargetIdToPlayers(updatedPlayers); } } diff --git a/src/modules/mission/mission.service.ts b/src/modules/killer/services/mission.service.ts similarity index 91% rename from src/modules/mission/mission.service.ts rename to src/modules/killer/services/mission.service.ts index ca0fa52..d6a1884 100644 --- a/src/modules/mission/mission.service.ts +++ b/src/modules/killer/services/mission.service.ts @@ -1,9 +1,8 @@ import { Injectable, NotFoundException } from '@nestjs/common'; -import { PlayerModel } from '../player/player.model'; - -import { MissionModel } from './mission.model'; -import { MissionRepository } from './mission.repository'; +import { MissionModel } from '../models/mission.model'; +import { PlayerModel } from '../models/player.model'; +import { MissionRepository } from '../repositories/mission.repository'; @Injectable() export class MissionService { diff --git a/src/modules/player/services/player-killed.service.ts b/src/modules/killer/services/player-killed.service.ts similarity index 96% rename from src/modules/player/services/player-killed.service.ts rename to src/modules/killer/services/player-killed.service.ts index 5731179..fe7d3ff 100644 --- a/src/modules/player/services/player-killed.service.ts +++ b/src/modules/killer/services/player-killed.service.ts @@ -1,7 +1,7 @@ import { forwardRef, Inject, Injectable, Logger } from '@nestjs/common'; import { MercureEventType } from '../../sse/models/mercure-event-types'; -import { PlayerModel } from '../player.model'; +import { PlayerModel } from '../models/player.model'; import { PlayerService } from './player.service'; diff --git a/src/modules/room/listeners/player-left-room.listener.ts b/src/modules/killer/services/player-leave-room.service.ts similarity index 64% rename from src/modules/room/listeners/player-left-room.listener.ts rename to src/modules/killer/services/player-leave-room.service.ts index d0d577d..4ffaa14 100644 --- a/src/modules/room/listeners/player-left-room.listener.ts +++ b/src/modules/killer/services/player-leave-room.service.ts @@ -1,21 +1,21 @@ -import { Injectable, Logger } from '@nestjs/common'; -import { OnEvent } from '@nestjs/event-emitter'; +import { forwardRef, Inject, Injectable, Logger } from '@nestjs/common'; -import { PlayerLeftRoomEvent } from '../../player/events/player-left-room.event'; -import { PlayerKilledService } from '../../player/services/player-killed.service'; -import { RoomService } from '../services/room.service'; +import { PlayerModel } from '../models/player.model'; + +import { PlayerKilledService } from './player-killed.service'; +import { RoomService } from './room.service'; @Injectable() -export class PlayerLeftRoomListener { +export class PlayerLeaveRoomService { private readonly logger = new Logger(); constructor( + @Inject(forwardRef(() => RoomService)) private readonly roomService: RoomService, private readonly playerKilledService: PlayerKilledService, ) {} - @OnEvent('player.left-room') - async handlePlayerLeft({ player }: PlayerLeftRoomEvent): Promise { + async handlePlayerLeft(player: PlayerModel): Promise { const playersInRoom = await this.roomService.getAllPlayersInRoom( player.roomCode, ); diff --git a/src/modules/player/services/player.service.ts b/src/modules/killer/services/player.service.ts similarity index 95% rename from src/modules/player/services/player.service.ts rename to src/modules/killer/services/player.service.ts index 809de35..b5a1ffd 100644 --- a/src/modules/player/services/player.service.ts +++ b/src/modules/killer/services/player.service.ts @@ -8,18 +8,17 @@ import { } from '@nestjs/common'; import { EventEmitter2 } from '@nestjs/event-emitter'; -import { MissionService } from '../../mission/mission.service'; -import { RoomStatus } from '../../room/constants'; import { MercureEvent } from '../../sse/models/mercure-event'; import { MercureEventType } from '../../sse/models/mercure-event-types'; -import { PlayerRole, PlayerStatus } from '../constants'; +import { PlayerRole, PlayerStatus, RoomStatus } from '../constants'; import { CreatePlayerDto } from '../dtos/create-player.dto'; import { GetMyPlayerDto } from '../dtos/get-my-player.dto'; -import { PlayerLeftRoomEvent } from '../events/player-left-room.event'; -import { PlayerModel } from '../player.model'; -import { PlayerRepository } from '../player.repository'; +import { PlayerModel } from '../models/player.model'; +import { PlayerRepository } from '../repositories/player.repository'; +import { MissionService } from './mission.service'; import { PlayerKilledService } from './player-killed.service'; +import { PlayerLeaveRoomService } from './player-leave-room.service'; @Injectable() export class PlayerService { @@ -31,6 +30,7 @@ export class PlayerService { private eventEmitter: EventEmitter2, @Inject(forwardRef(() => PlayerKilledService)) private playerKilledService: PlayerKilledService, + private playerLeaveRoomService: PlayerLeaveRoomService, ) {} async createPlayer({ @@ -333,6 +333,6 @@ export class PlayerService { await this.missionService.clearPlayerMissions(player); - this.eventEmitter.emit('player.left-room', new PlayerLeftRoomEvent(player)); + await this.playerLeaveRoomService.handlePlayerLeft(player); } } diff --git a/src/modules/room/services/room.service.ts b/src/modules/killer/services/room.service.ts similarity index 94% rename from src/modules/room/services/room.service.ts rename to src/modules/killer/services/room.service.ts index faf4f2b..ceae4a5 100644 --- a/src/modules/room/services/room.service.ts +++ b/src/modules/killer/services/room.service.ts @@ -1,6 +1,8 @@ import { BadRequestException, ForbiddenException, + forwardRef, + Inject, Injectable, Logger, NotFoundException, @@ -8,17 +10,17 @@ import { import { EventEmitter2 } from '@nestjs/event-emitter'; import randomstring from 'randomstring'; -import { PlayerModel } from '../../player/player.model'; -import { PlayerService } from '../../player/services/player.service'; import { MercureEvent } from '../../sse/models/mercure-event'; import { MercureEventType } from '../../sse/models/mercure-event-types'; import { MINIMUM_PLAYER_IN_ROOM, RoomStatus } from '../constants'; import { PatchRoomPlayerDto } from '../dtos/patch-room-player.dto'; import { UpdateRoomDto } from '../dtos/update-room.dto'; -import { RoomModel } from '../room.model'; -import { RoomRepository } from '../room.repository'; +import { PlayerModel } from '../models/player.model'; +import { RoomModel } from '../models/room.model'; +import { RoomRepository } from '../repositories/room.repository'; import { GameStartingService } from './game-starting.service'; +import { PlayerService } from './player.service'; @Injectable() export class RoomService { @@ -26,6 +28,7 @@ export class RoomService { constructor( private roomRepo: RoomRepository, + @Inject(forwardRef(() => PlayerService)) private playerService: PlayerService, private eventEmitter: EventEmitter2, private gameStartingService: GameStartingService, diff --git a/src/modules/mission/constants.ts b/src/modules/mission/constants.ts deleted file mode 100644 index d3da2e0..0000000 --- a/src/modules/mission/constants.ts +++ /dev/null @@ -1,2 +0,0 @@ -export const MISSION = 'mission'; -export const MISSION_ROOM = 'mission_room'; diff --git a/src/modules/mission/mission.module.ts b/src/modules/mission/mission.module.ts deleted file mode 100644 index 49700ac..0000000 --- a/src/modules/mission/mission.module.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { Module } from '@nestjs/common'; - -import { DatabaseModule } from '../database/database.module'; - -import { MissionController } from './mission.controller'; -import { MissionRepository } from './mission.repository'; -import { MissionService } from './mission.service'; - -@Module({ - imports: [DatabaseModule], - providers: [MissionService, MissionRepository], - controllers: [MissionController], - exports: [MissionService], -}) -export class MissionModule {} diff --git a/src/modules/player/constants.ts b/src/modules/player/constants.ts deleted file mode 100644 index 6d748d4..0000000 --- a/src/modules/player/constants.ts +++ /dev/null @@ -1,11 +0,0 @@ -export enum PlayerStatus { - ALIVE = 'ALIVE', - KILLED = 'KILLED', -} - -export enum PlayerRole { - PLAYER = 'PLAYER', - ADMIN = 'ADMIN', -} - -export const PLAYER = 'player'; diff --git a/src/modules/player/events/player-killed.event.ts b/src/modules/player/events/player-killed.event.ts deleted file mode 100644 index 1133cc6..0000000 --- a/src/modules/player/events/player-killed.event.ts +++ /dev/null @@ -1,8 +0,0 @@ -export class PlayerKilledEvent { - constructor( - public readonly playerId: number, - public readonly targetId: number, - public readonly missionId: number, - public readonly roomCode: string, - ) {} -} diff --git a/src/modules/player/events/player-left-room.event.ts b/src/modules/player/events/player-left-room.event.ts deleted file mode 100644 index decc452..0000000 --- a/src/modules/player/events/player-left-room.event.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { PlayerModel } from '../player.model'; - -export class PlayerLeftRoomEvent { - constructor(public readonly player: PlayerModel) {} -} diff --git a/src/modules/player/player.module.ts b/src/modules/player/player.module.ts deleted file mode 100644 index 573847e..0000000 --- a/src/modules/player/player.module.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { MiddlewareConsumer, Module, NestModule } from '@nestjs/common'; -import { APP_GUARD } from '@nestjs/core'; - -import { DatabaseModule } from '../database/database.module'; -import { MissionModule } from '../mission/mission.module'; - -import { PlayerRoleGuard } from './guards/player-role.guard'; -import { CurrentPlayerMiddleware } from './middlewares/current-player.middleware'; -import { PlayerController } from './player.controller'; -import { PlayerRepository } from './player.repository'; -import { PlayerKilledService } from './services/player-killed.service'; -import { PlayerService } from './services/player.service'; - -@Module({ - imports: [DatabaseModule, MissionModule], - providers: [ - PlayerService, - PlayerRepository, - PlayerKilledService, - { - provide: APP_GUARD, - useClass: PlayerRoleGuard, - }, - ], - controllers: [PlayerController], - exports: [PlayerService, PlayerKilledService], -}) -export class PlayerModule implements NestModule { - configure(consumer: MiddlewareConsumer): void { - consumer.apply(CurrentPlayerMiddleware).forRoutes('*'); - } -} diff --git a/src/modules/room/constants.ts b/src/modules/room/constants.ts deleted file mode 100644 index 2d17940..0000000 --- a/src/modules/room/constants.ts +++ /dev/null @@ -1,9 +0,0 @@ -export enum RoomStatus { - PENDING = 'PENDING', - IN_GAME = 'IN_GAME', - ENDED = 'ENDED', -} - -export const ROOM = 'room'; - -export const MINIMUM_PLAYER_IN_ROOM = 3; diff --git a/src/modules/room/room.module.ts b/src/modules/room/room.module.ts deleted file mode 100644 index 1ba4b6d..0000000 --- a/src/modules/room/room.module.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { MiddlewareConsumer, Module } from '@nestjs/common'; -import { APP_GUARD } from '@nestjs/core'; - -import { DatabaseModule } from '../database/database.module'; -import { MissionModule } from '../mission/mission.module'; -import { PlayerModule } from '../player/player.module'; - -import { RoomStatusGuard } from './guards/room-status.guard'; -import { PlayerLeftRoomListener } from './listeners/player-left-room.listener'; -import { ExtendRoomSessionMiddleware } from './middlewares/extend-room-session.middleware'; -import { RoomController } from './room.controller'; -import { RoomRepository } from './room.repository'; -import { GameStartingService } from './services/game-starting.service'; -import { RoomService } from './services/room.service'; - -@Module({ - imports: [DatabaseModule, PlayerModule, MissionModule], - providers: [ - RoomService, - RoomRepository, - GameStartingService, - PlayerLeftRoomListener, - { - provide: APP_GUARD, - useClass: RoomStatusGuard, - }, - ], - controllers: [RoomController], - exports: [RoomService], -}) -export class RoomModule { - configure(consumer: MiddlewareConsumer): void { - consumer.apply(ExtendRoomSessionMiddleware).forRoutes('*'); - } -}