Fixes on the tokens magement

main
MiguelMLorente 2025-12-06 11:30:01 +01:00
parent a95601bc34
commit 797a8bbfda
6 changed files with 23 additions and 8 deletions

View File

@ -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,

View File

@ -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,
}));
}

View File

@ -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,
};
}
}

View File

@ -29,6 +29,6 @@ export class User {
@JoinTable()
joinedSessions: Session[];
@OneToOne(() => Token, (token) => token.user)
@OneToOne(() => Token, (token) => token.user, { cascade: true })
token: Token;
}

View File

@ -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) {

View File

@ -41,6 +41,11 @@ export class UserService {
password,
purchases: [],
joinedSessions: [],
token: {
purchasedTokens: 0,
lockedTokens: 0,
consumedTokens: 0,
},
});
return this.userRepo.save(user);
}