Browse Source

Reuse interfaces

pull/4016/head
Thomas Kaul 10 months ago
parent
commit
d0652c36b5
  1. 8
      apps/api/src/app/endpoints/data-providers/ghostfolio/ghostfolio.controller.ts
  2. 11
      apps/api/src/app/endpoints/data-providers/ghostfolio/ghostfolio.service.ts
  3. 14
      apps/client/src/app/pages/api/api-page.component.ts

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

@ -1,10 +1,12 @@
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 { PrismaService } from '@ghostfolio/api/services/prisma/prisma.service';
import { PropertyService } from '@ghostfolio/api/services/property/property.service'; import { PropertyService } from '@ghostfolio/api/services/property/property.service';
import { PROPERTY_DATA_SOURCES_GHOSTFOLIO_DATA_PROVIDER_MAX_REQUESTS } from '@ghostfolio/common/config'; import { PROPERTY_DATA_SOURCES_GHOSTFOLIO_DATA_PROVIDER_MAX_REQUESTS } from '@ghostfolio/common/config';
import { DataProviderGhostfolioStatusResponse } from '@ghostfolio/common/interfaces'; import {
DataProviderGhostfolioStatusResponse,
LookupResponse
} from '@ghostfolio/common/interfaces';
import { permissions } from '@ghostfolio/common/permissions'; import { permissions } from '@ghostfolio/common/permissions';
import { RequestWithUser } from '@ghostfolio/common/types'; import { RequestWithUser } from '@ghostfolio/common/types';
@ -37,7 +39,7 @@ export class GhostfolioController {
public async lookupSymbol( public async lookupSymbol(
@Query('includeIndices') includeIndicesParam = 'false', @Query('includeIndices') includeIndicesParam = 'false',
@Query('query') query = '' @Query('query') query = ''
): Promise<{ items: LookupItem[] }> { ): Promise<LookupResponse> {
const includeIndices = includeIndicesParam === 'true'; const includeIndices = includeIndicesParam === 'true';
const maxDailyRequests = await this.getMaxDailyRequests(); const maxDailyRequests = await this.getMaxDailyRequests();

11
apps/api/src/app/endpoints/data-providers/ghostfolio/ghostfolio.service.ts

@ -1,7 +1,10 @@
import { LookupItem } from '@ghostfolio/api/app/symbol/interfaces/lookup-item.interface';
import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service'; import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service';
import { DataProviderService } from '@ghostfolio/api/services/data-provider/data-provider.service'; import { DataProviderService } from '@ghostfolio/api/services/data-provider/data-provider.service';
import { DataProviderInfo } from '@ghostfolio/common/interfaces'; import {
DataProviderInfo,
LookupItem,
LookupResponse
} from '@ghostfolio/common/interfaces';
import { Injectable, Logger } from '@nestjs/common'; import { Injectable, Logger } from '@nestjs/common';
import { DataSource } from '@prisma/client'; import { DataSource } from '@prisma/client';
@ -19,8 +22,8 @@ export class GhostfolioService {
}: { }: {
includeIndices?: boolean; includeIndices?: boolean;
query: string; query: string;
}): Promise<{ items: LookupItem[] }> { }): Promise<LookupResponse> {
const results: { items: LookupItem[] } = { items: [] }; const results: LookupResponse = { items: [] };
if (!query) { if (!query) {
return results; return results;

14
apps/client/src/app/pages/api/api-page.component.ts

@ -1,5 +1,7 @@
import { LookupItem } from '@ghostfolio/api/app/symbol/interfaces/lookup-item.interface'; import {
import { DataProviderGhostfolioStatusResponse } from '@ghostfolio/common/interfaces'; DataProviderGhostfolioStatusResponse,
LookupResponse
} from '@ghostfolio/common/interfaces';
import { CommonModule } from '@angular/common'; import { CommonModule } from '@angular/common';
import { HttpClient, HttpParams } from '@angular/common/http'; import { HttpClient, HttpParams } from '@angular/common/http';
@ -16,7 +18,7 @@ import { map, Observable, Subject, takeUntil } from 'rxjs';
}) })
export class GfApiPageComponent implements OnInit { export class GfApiPageComponent implements OnInit {
public status$: Observable<DataProviderGhostfolioStatusResponse>; public status$: Observable<DataProviderGhostfolioStatusResponse>;
public symbols$: Observable<LookupItem[]>; public symbols$: Observable<LookupResponse['items']>;
private unsubscribeSubject = new Subject<void>(); private unsubscribeSubject = new Subject<void>();
@ -54,9 +56,9 @@ export class GfApiPageComponent implements OnInit {
} }
return this.http return this.http
.get<{ .get<LookupResponse>('/api/v1/data-providers/ghostfolio/lookup', {
items: LookupItem[]; params
}>('/api/v1/data-providers/ghostfolio/lookup', { params }) })
.pipe( .pipe(
map(({ items }) => { map(({ items }) => {
return items; return items;

Loading…
Cancel
Save