chore : remove class-transformer

This commit is contained in:
2024-12-29 23:49:33 +01:00
parent 11a62a694e
commit 895bd2fdac
10 changed files with 57 additions and 33 deletions
+1 -1
Submodule events updated: 49829c8017...e9d5d8d909
+3 -2
View File
@@ -18,7 +18,6 @@
"@nestjs/swagger": "^7.3.1",
"@nestjs/typeorm": "^10.0.2",
"@types/ranjs": "^1.22.7",
"class-transformer": "^0.5.1",
"connect-redis": "^8.0.1",
"express-session": "^1.18.0",
"pg": "^8.13.1",
@@ -4749,7 +4748,9 @@
"version": "0.5.1",
"resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.5.1.tgz",
"integrity": "sha512-SQa1Ws6hUbfC98vKGxZH3KFY0Y1lm5Zm0SY8XX9zbK7FJCyVEac3ATW0RIpwzW+oOfmHE5PMPufDG9hCfoEOMw==",
"license": "MIT"
"license": "MIT",
"optional": true,
"peer": true
},
"node_modules/clean-stack": {
"version": "2.2.0",
-1
View File
@@ -32,7 +32,6 @@
"@nestjs/swagger": "^7.3.1",
"@nestjs/typeorm": "^10.0.2",
"@types/ranjs": "^1.22.7",
"class-transformer": "^0.5.1",
"connect-redis": "^8.0.1",
"express-session": "^1.18.0",
"pg": "^8.13.1",
+9 -6
View File
@@ -8,10 +8,12 @@ import { User } from 'src/users/entities/user.entity';
import { Player } from '../entities/player.entity';
import { randomUUID } from 'node:crypto';
import {
GameCreateEvent,
GameDeleteEvent,
GameJoinEvent,
LobbyCreateEvent,
LobbyDeleteEvent,
LobbyJoinEvent,
} from 'events/lobby.events';
import { GameResponseDTO } from 'events/dto/gameresponse.dto';
import { GameDeleteEvent, GameJoinEvent } from 'events/game.events';
@Injectable()
export class LobbyService {
@@ -28,7 +30,8 @@ export class LobbyService {
createdGame.seed = randomUUID();
await this.gameRepository.save(createdGame);
await this.joinGame(createdGame, owner);
this.eventEmitter.emit('sse.lobby', new GameCreateEvent(createdGame));
const g = new GameResponseDTO(createdGame);
this.eventEmitter.emit('sse.lobby', new LobbyCreateEvent(g));
return createdGame;
}
@@ -37,7 +40,7 @@ export class LobbyService {
player.user = user;
player.game = game;
this.eventEmitter.emit('sse.lobby', new GameJoinEvent(player, game));
this.eventEmitter.emit('sse.lobby', new LobbyJoinEvent(player, game));
this.eventEmitter.emit('sse.game.' + game.id, new GameJoinEvent(player));
await this.playerRepository.save(player);
}
@@ -59,7 +62,7 @@ export class LobbyService {
}
async remove(game: Game) {
this.eventEmitter.emit('sse.lobby', new GameDeleteEvent(game.id));
this.eventEmitter.emit('sse.lobby', new LobbyDeleteEvent(game.id));
this.eventEmitter.emit('sse.game.' + game.id, new GameDeleteEvent());
await this.gameRepository.remove(game);
}
+2 -9
View File
@@ -2,7 +2,6 @@ import { NestFactory, Reflector } from '@nestjs/core';
import * as session from 'express-session';
import { AppModule } from './app.module';
import { SwaggerModule, DocumentBuilder } from '@nestjs/swagger';
import { ClassSerializerInterceptor, INestApplication } from '@nestjs/common';
import { RedisStore } from 'connect-redis';
import { createClient } from 'redis';
@@ -31,13 +30,7 @@ async function bootstrap() {
}),
);
app.useGlobalInterceptors(
new ClassSerializerInterceptor(app.get(Reflector), {
// strategy: 'excludeAll', 👈 we'll talk about this later
excludeExtraneousValues: true,
}),
);
await app.listen(8765);
}
bootstrap();
void bootstrap();
+2
View File
@@ -25,6 +25,8 @@ export class AuthGuard implements CanActivate {
HttpStatus.UNAUTHORIZED,
);
}
request.user = user;
return true;
}
}
+6 -3
View File
@@ -1,17 +1,20 @@
import {
createParamDecorator,
ExecutionContext,
HttpException,
HttpStatus,
} from '@nestjs/common';
import { Request } from 'express';
export const GetUser = createParamDecorator(
(data: unknown, req: Record<string, string>) => {
if (!req.user) {
(data: unknown, ctx: ExecutionContext) => {
const request = ctx.switchToHttp().getRequest<Request>();
if (!request.user) {
throw new HttpException(
'You are not authentified',
HttpStatus.UNAUTHORIZED,
);
}
return req.user;
return request.user;
},
);
+12 -6
View File
@@ -44,7 +44,7 @@ export class WordController {
);
}
@Delete()
@Delete(':id')
@ApiOperation({ summary: 'Delete a word' })
@UseGuards(AuthGuard)
async delete(@Param('id') id: number) {
@@ -78,19 +78,25 @@ export class WordController {
return (await this.wordService.list()).map((w) => new WordResponseDTO(w));
}
@Put('/enable/:id')
@Put(':id/enable')
@ApiOperation({ summary: 'Enable a word' })
@UseGuards(AuthGuard)
async enable(@Param('id', ParseIntPipe, WordPipe) word: Word) {
async enable(
@Param('id', ParseIntPipe) _id: string,
@Param('id', WordPipe) word: Word,
) {
await this.wordService.enable(word);
return new WordResponseDTO(word);
}
@Put('/disable/:id')
@Put(':id/disable')
@ApiOperation({ summary: 'Disable a word' })
@UseGuards(AuthGuard)
async disable(@Param('id', ParseIntPipe, WordPipe) word: Word) {
await this.wordService.enable(word);
async disable(
@Param('id', ParseIntPipe) _id: string,
@Param('id', WordPipe) word: Word,
) {
await this.wordService.disable(word);
return new WordResponseDTO(word);
}
}
+13 -2
View File
@@ -1,4 +1,9 @@
import { Injectable } from '@nestjs/common';
import {
HttpCode,
HttpException,
HttpStatus,
Injectable,
} from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { Word } from '../entities/word.entity';
@@ -10,6 +15,7 @@ import {
WordDisableEvent,
WordEnableEvent,
} from '../../../events/word.events';
import { HttpErrorByCode } from '@nestjs/common/utils/http-error-by-code.util';
@Injectable()
export class WordService {
@@ -24,17 +30,22 @@ export class WordService {
}
async delete(word: Word) {
const wordId = word.id;
await this.wordRepository.remove(word);
this.eventEmitter.emit(this.sse_prefix, new WordDeleteEvent(word.id));
this.eventEmitter.emit(this.sse_prefix, new WordDeleteEvent(wordId));
}
async create(value: string, owner: User) {
const word = this.wordRepository.create();
word.owner = owner;
word.value = value;
try {
await this.wordRepository.save(word);
this.eventEmitter.emit(this.sse_prefix, new WordCreateEvent(word));
return word;
} catch {
throw new HttpException('Word already exists', HttpStatus.CONFLICT);
}
}
async listActive() {
+6
View File
@@ -10,3 +10,9 @@ declare module 'express-session' {
};
}
}
declare module 'express' {
interface Request extends Request {
user: User;
}
}