Browse Source

Task/destructure query parameters in controllers (#7495)

Destructure query parameters in controllers
pull/7505/head
Thomas Kaul 6 days ago
committed by GitHub
parent
commit
d08239f31f
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 66
      apps/api/src/app/activities/activities.controller.ts
  2. 20
      apps/api/src/app/endpoints/data-providers/ghostfolio/ghostfolio.controller.ts
  3. 32
      apps/api/src/app/export/export.controller.ts

66
apps/api/src/app/activities/activities.controller.ts

@ -62,7 +62,16 @@ export class ActivitiesController {
@UseInterceptors(TransformDataSourceInRequestInterceptor)
public async deleteActivities(
@Headers(HEADER_KEY_IMPERSONATION.toLowerCase()) impersonationId: string,
@Query() query: ActivitiesFilterDto
@Query()
{
accounts,
activityTypes,
assetClasses,
dataSource,
range,
symbol,
tags
}: ActivitiesFilterDto
): Promise<number> {
if (impersonationId) {
throw new HttpException(
@ -74,25 +83,25 @@ export class ActivitiesController {
let endDate: Date;
let startDate: Date;
if (query.range) {
if (range) {
({ endDate, startDate } = getIntervalFromDateRange({
dateRange: query.range
dateRange: range
}));
}
const filters = this.apiService.buildFiltersFromQueryParams({
filterByAccounts: query.accounts,
filterByAssetClasses: query.assetClasses,
filterByDataSource: query.dataSource,
filterBySymbol: query.symbol,
filterByTags: query.tags
filterByAccounts: accounts,
filterByAssetClasses: assetClasses,
filterByDataSource: dataSource,
filterBySymbol: symbol,
filterByTags: tags
});
return this.activitiesService.deleteActivities({
endDate,
filters,
startDate,
types: query.activityTypes,
types: activityTypes,
userId: this.request.user.id
});
}
@ -125,23 +134,36 @@ export class ActivitiesController {
@UseInterceptors(TransformDataSourceInResponseInterceptor)
public async getAllActivities(
@Headers(HEADER_KEY_IMPERSONATION.toLowerCase()) impersonationId: string,
@Query() query: GetActivitiesDto
@Query()
{
accounts,
activityTypes,
assetClasses,
dataSource,
range,
skip,
sortColumn,
sortDirection,
symbol,
tags,
take
}: GetActivitiesDto
): Promise<ActivitiesResponse> {
let endDate: Date;
let startDate: Date;
if (query.range) {
if (range) {
({ endDate, startDate } = getIntervalFromDateRange({
dateRange: query.range
dateRange: range
}));
}
const filters = this.apiService.buildFiltersFromQueryParams({
filterByAccounts: query.accounts,
filterByAssetClasses: query.assetClasses,
filterByDataSource: query.dataSource,
filterBySymbol: query.symbol,
filterByTags: query.tags
filterByAccounts: accounts,
filterByAssetClasses: assetClasses,
filterByDataSource: dataSource,
filterBySymbol: symbol,
filterByTags: tags
});
const impersonationUserId =
@ -152,14 +174,14 @@ export class ActivitiesController {
const { activities, count } = await this.activitiesService.getActivities({
endDate,
filters,
skip,
sortColumn,
sortDirection,
startDate,
take,
userCurrency,
includeDrafts: true,
skip: query.skip,
sortColumn: query.sortColumn,
sortDirection: query.sortDirection,
take: query.take,
types: query.activityTypes,
types: activityTypes,
userId: impersonationUserId || this.request.user.id,
withExcludedAccountsAndActivities: true
});

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

@ -90,7 +90,7 @@ export class GhostfolioController {
@Version('2')
public async getDividends(
@Param('symbol') symbol: string,
@Query() query: GetDividendsDto
@Query() { from, granularity, to }: GetDividendsDto
): Promise<DividendsResponse> {
const maxDailyRequests = await this.ghostfolioService.getMaxDailyRequests();
@ -105,10 +105,10 @@ export class GhostfolioController {
try {
const dividends = await this.ghostfolioService.getDividends({
granularity,
symbol,
from: parseDate(query.from),
granularity: query.granularity,
to: parseDate(query.to)
from: parseDate(from),
to: parseDate(to)
});
await this.ghostfolioService.incrementDailyRequests({
@ -130,7 +130,7 @@ export class GhostfolioController {
@Version('2')
public async getHistorical(
@Param('symbol') symbol: string,
@Query() query: GetHistoricalDto
@Query() { from, granularity, to }: GetHistoricalDto
): Promise<HistoricalResponse> {
const maxDailyRequests = await this.ghostfolioService.getMaxDailyRequests();
@ -145,10 +145,10 @@ export class GhostfolioController {
try {
const historicalData = await this.ghostfolioService.getHistorical({
granularity,
symbol,
from: parseDate(query.from),
granularity: query.granularity,
to: parseDate(query.to)
from: parseDate(from),
to: parseDate(to)
});
await this.ghostfolioService.incrementDailyRequests({
@ -247,7 +247,7 @@ export class GhostfolioController {
@UseGuards(AuthGuard('api-key'), HasPermissionGuard)
@Version('2')
public async getQuotes(
@Query() query: GetQuotesDto
@Query() { symbols }: GetQuotesDto
): Promise<QuotesResponse> {
const maxDailyRequests = await this.ghostfolioService.getMaxDailyRequests();
@ -262,7 +262,7 @@ export class GhostfolioController {
try {
const quotes = await this.ghostfolioService.getQuotes({
symbols: query.symbols
symbols
});
await this.ghostfolioService.incrementDailyRequests({

32
apps/api/src/app/export/export.controller.ts

@ -32,30 +32,42 @@ export class ExportController {
@UseGuards(AuthGuard('jwt'), HasPermissionGuard)
@UseInterceptors(TransformDataSourceInRequestInterceptor)
@UseInterceptors(TransformDataSourceInResponseInterceptor)
public async export(@Query() query: GetExportDto): Promise<ExportResponse> {
public async export(
@Query()
{
accounts,
activityIds,
activityTypes,
assetClasses,
dataSource,
range,
symbol,
tags
}: GetExportDto
): Promise<ExportResponse> {
let endDate: Date;
let startDate: Date;
if (query.range) {
if (range) {
({ endDate, startDate } = getIntervalFromDateRange({
dateRange: query.range
dateRange: range
}));
}
const filters = this.apiService.buildFiltersFromQueryParams({
filterByAccounts: query.accounts,
filterByAssetClasses: query.assetClasses,
filterByDataSource: query.dataSource,
filterBySymbol: query.symbol,
filterByTags: query.tags
filterByAccounts: accounts,
filterByAssetClasses: assetClasses,
filterByDataSource: dataSource,
filterBySymbol: symbol,
filterByTags: tags
});
return this.exportService.export({
activityIds,
activityTypes,
endDate,
filters,
startDate,
activityIds: query.activityIds,
activityTypes: query.activityTypes,
userId: this.request.user.id,
userSettings: this.request.user.settings.settings
});

Loading…
Cancel
Save