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 { Session } from './dto/session';
import { TokensController } from './controller/tokens.controller'; import { TokensController } from './controller/tokens.controller';
import { TokenService } from './service/token.service'; import { TokenService } from './service/token.service';
import { Token } from './dto/token';
@Module({ @Module({
imports: [ imports: [
@ -23,10 +24,10 @@ import { TokenService } from './service/token.service';
username: process.env.DB_USER || 'postgres', username: process.env.DB_USER || 'postgres',
password: process.env.DB_PASSWORD || 'postgres', password: process.env.DB_PASSWORD || 'postgres',
database: process.env.DB_NAME || 'appdb', database: process.env.DB_NAME || 'appdb',
entities: [User, Purchase, Session], entities: [User, Purchase, Session, Token],
synchronize: true, synchronize: true,
}), }),
TypeOrmModule.forFeature([User, Purchase, Session]), TypeOrmModule.forFeature([User, Purchase, Session, Token]),
], ],
controllers: [ controllers: [
AccessController, AccessController,

View File

@ -27,6 +27,7 @@ export class SessionController {
userCount: session.users.length, userCount: session.users.length,
includesRequester: session.users.find((u) => u.id === userId), includesRequester: session.users.find((u) => u.id === userId),
date: session.date, 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 { TokenService } from 'src/service/token.service';
import { UserService } from 'src/service/user.service'; import { UserService } from 'src/service/user.service';
@Controller('/tokens') @Controller('/tokens')
export class TokensController { export class TokensController {
private readonly logger = new Logger(TokensController.name);
constructor( constructor(
private readonly userService: UserService, private readonly userService: UserService,
private readonly tokenService: TokenService, private readonly tokenService: TokenService,
@ -11,7 +13,14 @@ export class TokensController {
@Get() @Get()
public async getTokenCount(@Query('userId') userId: string) { public async getTokenCount(@Query('userId') userId: string) {
this.logger.debug(`Finding tokens for user: ${userId}`);
const user = await this.userService.getUserById(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() @JoinTable()
joinedSessions: Session[]; joinedSessions: Session[];
@OneToOne(() => Token, (token) => token.user) @OneToOne(() => Token, (token) => token.user, { cascade: true })
token: Token; token: Token;
} }

View File

@ -22,9 +22,8 @@ export class TokenService {
await this.tokenRepo.save(token); await this.tokenRepo.save(token);
} }
public async getAvailableTokens(user: User) { public getTokens(user: User) {
const token = await this.tokenRepo.findOneOrFail({ where: { user: user } }); return this.tokenRepo.findOneOrFail({ where: { user: user } });
return token.availableTokens;
} }
public async consumeToken(user: User) { public async consumeToken(user: User) {

View File

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