Browse Source

Increment daily requests

pull/4016/head
Thomas Kaul 10 months ago
parent
commit
be34243c92
  1. 28
      apps/api/src/app/endpoints/data-providers/ghostfolio/ghostfolio.controller.ts

28
apps/api/src/app/endpoints/data-providers/ghostfolio/ghostfolio.controller.ts

@ -1,15 +1,19 @@
import { LookupItem } from '@ghostfolio/api/app/symbol/interfaces/lookup-item.interface'; import { LookupItem } from '@ghostfolio/api/app/symbol/interfaces/lookup-item.interface';
import { HasPermission } from '@ghostfolio/api/decorators/has-permission.decorator'; import { HasPermission } from '@ghostfolio/api/decorators/has-permission.decorator';
import { HasPermissionGuard } from '@ghostfolio/api/guards/has-permission.guard'; import { HasPermissionGuard } from '@ghostfolio/api/guards/has-permission.guard';
import { PrismaService } from '@ghostfolio/api/services/prisma/prisma.service';
import { permissions } from '@ghostfolio/common/permissions'; import { permissions } from '@ghostfolio/common/permissions';
import { RequestWithUser } from '@ghostfolio/common/types';
import { import {
Controller, Controller,
Get, Get,
HttpException, HttpException,
Inject,
Query, Query,
UseGuards UseGuards
} from '@nestjs/common'; } from '@nestjs/common';
import { REQUEST } from '@nestjs/core';
import { AuthGuard } from '@nestjs/passport'; import { AuthGuard } from '@nestjs/passport';
import { getReasonPhrase, StatusCodes } from 'http-status-codes'; import { getReasonPhrase, StatusCodes } from 'http-status-codes';
@ -17,7 +21,11 @@ import { GhostfolioService } from './ghostfolio.service';
@Controller('data-providers/ghostfolio') @Controller('data-providers/ghostfolio')
export class GhostfolioController { export class GhostfolioController {
public constructor(private readonly ghostfolioService: GhostfolioService) {} public constructor(
private readonly ghostfolioService: GhostfolioService,
private readonly prismaService: PrismaService,
@Inject(REQUEST) private readonly request: RequestWithUser
) {}
@Get('lookup') @Get('lookup')
@HasPermission(permissions.enableDataProviderGhostfolio) @HasPermission(permissions.enableDataProviderGhostfolio)
@ -29,10 +37,16 @@ export class GhostfolioController {
const includeIndices = includeIndicesParam === 'true'; const includeIndices = includeIndicesParam === 'true';
try { try {
return this.ghostfolioService.lookup({ const result = await this.ghostfolioService.lookup({
includeIndices, includeIndices,
query: query.toLowerCase() query: query.toLowerCase()
}); });
await this.incrementDailyRequests({
userId: this.request.user.id
});
return result;
} catch { } catch {
throw new HttpException( throw new HttpException(
getReasonPhrase(StatusCodes.INTERNAL_SERVER_ERROR), getReasonPhrase(StatusCodes.INTERNAL_SERVER_ERROR),
@ -40,4 +54,14 @@ export class GhostfolioController {
); );
} }
} }
private async incrementDailyRequests({ userId }: { userId: string }) {
await this.prismaService.analytics.update({
data: {
dataProviderGhostfolioDailyRequests: { increment: 1 },
lastRequestAt: new Date()
},
where: { userId }
});
}
} }

Loading…
Cancel
Save