From 797a8bbfda4d316bfaddedd484f591fe1191464c Mon Sep 17 00:00:00 2001 From: MiguelMLorente Date: Sat, 6 Dec 2025 11:30:01 +0100 Subject: [PATCH] Fixes on the tokens magement --- src/app.module.ts | 5 +++-- src/controller/session.controller.ts | 1 + src/controller/tokens.controller.ts | 13 +++++++++++-- src/dto/user.ts | 2 +- src/service/token.service.ts | 5 ++--- src/service/user.service.ts | 5 +++++ 6 files changed, 23 insertions(+), 8 deletions(-) diff --git a/src/app.module.ts b/src/app.module.ts index 20aca7a..de70dd7 100644 --- a/src/app.module.ts +++ b/src/app.module.ts @@ -12,6 +12,7 @@ import { SessionController } from './controller/session.controller'; import { Session } from './dto/session'; import { TokensController } from './controller/tokens.controller'; import { TokenService } from './service/token.service'; +import { Token } from './dto/token'; @Module({ imports: [ @@ -23,10 +24,10 @@ import { TokenService } from './service/token.service'; username: process.env.DB_USER || 'postgres', password: process.env.DB_PASSWORD || 'postgres', database: process.env.DB_NAME || 'appdb', - entities: [User, Purchase, Session], + entities: [User, Purchase, Session, Token], synchronize: true, }), - TypeOrmModule.forFeature([User, Purchase, Session]), + TypeOrmModule.forFeature([User, Purchase, Session, Token]), ], controllers: [ AccessController, diff --git a/src/controller/session.controller.ts b/src/controller/session.controller.ts index 2753cff..ca641ee 100644 --- a/src/controller/session.controller.ts +++ b/src/controller/session.controller.ts @@ -27,6 +27,7 @@ export class SessionController { userCount: session.users.length, includesRequester: session.users.find((u) => u.id === userId), date: session.date, + status: session.status, })); } diff --git a/src/controller/tokens.controller.ts b/src/controller/tokens.controller.ts index b6e3bf8..99092ec 100644 --- a/src/controller/tokens.controller.ts +++ b/src/controller/tokens.controller.ts @@ -1,9 +1,11 @@ -import { Controller, Get, Query } from '@nestjs/common'; +import { Controller, Get, Logger, Query } from '@nestjs/common'; import { TokenService } from 'src/service/token.service'; import { UserService } from 'src/service/user.service'; @Controller('/tokens') export class TokensController { + private readonly logger = new Logger(TokensController.name); + constructor( private readonly userService: UserService, private readonly tokenService: TokenService, @@ -11,7 +13,14 @@ export class TokensController { @Get() public async getTokenCount(@Query('userId') userId: string) { + this.logger.debug(`Finding tokens for user: ${userId}`); const user = await this.userService.getUserById(userId); - return await this.tokenService.getAvailableTokens(user); + const token = await this.tokenService.getTokens(user); + return { + available: token.availableTokens, + purchased: token.purchasedTokens, + consumed: token.consumedTokens, + used: token.lockedTokens, + }; } } diff --git a/src/dto/user.ts b/src/dto/user.ts index ad59c1e..085f270 100644 --- a/src/dto/user.ts +++ b/src/dto/user.ts @@ -29,6 +29,6 @@ export class User { @JoinTable() joinedSessions: Session[]; - @OneToOne(() => Token, (token) => token.user) + @OneToOne(() => Token, (token) => token.user, { cascade: true }) token: Token; } diff --git a/src/service/token.service.ts b/src/service/token.service.ts index 6672d84..d520e8a 100644 --- a/src/service/token.service.ts +++ b/src/service/token.service.ts @@ -22,9 +22,8 @@ export class TokenService { await this.tokenRepo.save(token); } - public async getAvailableTokens(user: User) { - const token = await this.tokenRepo.findOneOrFail({ where: { user: user } }); - return token.availableTokens; + public getTokens(user: User) { + return this.tokenRepo.findOneOrFail({ where: { user: user } }); } public async consumeToken(user: User) { diff --git a/src/service/user.service.ts b/src/service/user.service.ts index 5521482..0b6b6df 100644 --- a/src/service/user.service.ts +++ b/src/service/user.service.ts @@ -41,6 +41,11 @@ export class UserService { password, purchases: [], joinedSessions: [], + token: { + purchasedTokens: 0, + lockedTokens: 0, + consumedTokens: 0, + }, }); return this.userRepo.save(user); }