Fixes on the tokens magement
parent
a95601bc34
commit
797a8bbfda
|
|
@ -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,
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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) {
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue