Browse Source

Introduce response typings

pull/4604/head
Thomas Kaul 4 months ago
parent
commit
c95a847700
  1. 13
      apps/api/src/app/endpoints/watchlist/watchlist.controller.ts
  2. 4
      apps/api/src/app/endpoints/watchlist/watchlist.service.ts
  3. 7
      apps/client/src/app/services/data.service.ts
  4. 2
      libs/common/src/lib/interfaces/index.ts
  5. 5
      libs/common/src/lib/interfaces/responses/watchlist-response.interface.ts

13
apps/api/src/app/endpoints/watchlist/watchlist.controller.ts

@ -2,6 +2,7 @@ import { HasPermission } from '@ghostfolio/api/decorators/has-permission.decorat
import { HasPermissionGuard } from '@ghostfolio/api/guards/has-permission.guard';
import { TransformDataSourceInRequestInterceptor } from '@ghostfolio/api/interceptors/transform-data-source-in-request/transform-data-source-in-request.interceptor';
import { TransformDataSourceInResponseInterceptor } from '@ghostfolio/api/interceptors/transform-data-source-in-response/transform-data-source-in-response.interceptor';
import { WatchlistResponse } from '@ghostfolio/common/interfaces';
import { permissions } from '@ghostfolio/common/permissions';
import { RequestWithUser } from '@ghostfolio/common/types';
@ -54,7 +55,7 @@ export class WatchlistController {
) {
const watchlistItem = await this.watchlistService
.getWatchlistItems(this.request.user.id)
.then(({ watchlist }) => {
.then((watchlist) => {
return watchlist.find((item) => {
return item.dataSource === dataSource && item.symbol === symbol;
});
@ -78,7 +79,13 @@ export class WatchlistController {
@HasPermission(permissions.readWatchlist)
@UseGuards(AuthGuard('jwt'), HasPermissionGuard)
@UseInterceptors(TransformDataSourceInResponseInterceptor)
public async getWatchlistItems() {
return this.watchlistService.getWatchlistItems(this.request.user.id);
public async getWatchlistItems(): Promise<WatchlistResponse> {
const watchlist = await this.watchlistService.getWatchlistItems(
this.request.user.id
);
return {
watchlist
};
}
}

4
apps/api/src/app/endpoints/watchlist/watchlist.service.ts

@ -64,7 +64,7 @@ export class WatchlistService {
public async getWatchlistItems(
userId: string
): Promise<{ watchlist: AssetProfileIdentifier[] }> {
): Promise<AssetProfileIdentifier[]> {
const user = await this.prismaService.user.findUnique({
select: {
watchlist: {
@ -74,6 +74,6 @@ export class WatchlistService {
where: { id: userId }
});
return { watchlist: user.watchlist ?? [] };
return user?.watchlist ?? [];
}
}

7
apps/client/src/app/services/data.service.ts

@ -45,7 +45,8 @@ import {
PortfolioPerformanceResponse,
PortfolioReportResponse,
PublicPortfolioResponse,
User
User,
WatchlistResponse
} from '@ghostfolio/common/interfaces';
import { filterGlobalPermissions } from '@ghostfolio/common/permissions';
import type {
@ -688,9 +689,7 @@ export class DataService {
}
public fetchWatchlist() {
return this.http.get<{ watchlist: AssetProfileIdentifier[] }>(
'/api/v1/watchlist'
);
return this.http.get<WatchlistResponse>('/api/v1/watchlist');
}
public generateAccessToken(aUserId: string) {

2
libs/common/src/lib/interfaces/index.ts

@ -57,6 +57,7 @@ import type { PortfolioPerformanceResponse } from './responses/portfolio-perform
import type { PortfolioReportResponse } from './responses/portfolio-report.interface';
import type { PublicPortfolioResponse } from './responses/public-portfolio-response.interface';
import type { QuotesResponse } from './responses/quotes-response.interface';
import type { WatchlistResponse } from './responses/watchlist-response.interface';
import type { ScraperConfiguration } from './scraper-configuration.interface';
import type { Statistics } from './statistics.interface';
import type { SubscriptionOffer } from './subscription-offer.interface';
@ -135,5 +136,6 @@ export {
ToggleOption,
User,
UserSettings,
WatchlistResponse,
XRayRulesSettings
};

5
libs/common/src/lib/interfaces/responses/watchlist-response.interface.ts

@ -0,0 +1,5 @@
import { AssetProfileIdentifier } from '@ghostfolio/common/interfaces';
export interface WatchlistResponse {
watchlist: AssetProfileIdentifier[];
}
Loading…
Cancel
Save