Browse Source

Task/harmonize response of update and delete activity endpoints (#8346)

Harmonize response of update and delete activity endpoints
pull/8352/head
Thomas Kaul 4 days ago
committed by GitHub
parent
commit
b633b1fd48
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 31
      apps/api/src/app/endpoints/activities/activities.controller.ts
  2. 6
      libs/common/src/lib/interfaces/index.ts
  3. 2
      libs/common/src/lib/interfaces/responses/delete-or-update-activity-response.interface.ts
  4. 19
      libs/common/src/lib/interfaces/responses/update-activity-response.interface.ts
  5. 7
      libs/ui/src/lib/services/data.service.ts

31
apps/api/src/app/endpoints/activities/activities.controller.ts

@ -22,8 +22,7 @@ import {
ActivitiesResponse, ActivitiesResponse,
ActivityResponse, ActivityResponse,
CreateActivityResponse, CreateActivityResponse,
DeleteActivityResponse, DeleteOrUpdateActivityResponse
UpdateActivityResponse
} from '@ghostfolio/common/interfaces'; } from '@ghostfolio/common/interfaces';
import { permissions } from '@ghostfolio/common/permissions'; import { permissions } from '@ghostfolio/common/permissions';
import { scopes } from '@ghostfolio/common/scopes'; import { scopes } from '@ghostfolio/common/scopes';
@ -41,6 +40,7 @@ import {
Query, Query,
UseInterceptors UseInterceptors
} from '@nestjs/common'; } from '@nestjs/common';
import { Order } from '@prisma/client';
import { parseISO } from 'date-fns'; import { parseISO } from 'date-fns';
import { StatusCodes, getReasonPhrase } from 'http-status-codes'; import { StatusCodes, getReasonPhrase } from 'http-status-codes';
import { omit, pick } from 'lodash-es'; import { omit, pick } from 'lodash-es';
@ -108,7 +108,7 @@ export class ActivitiesController {
public async deleteActivity( public async deleteActivity(
@Impersonation() { userId }: ImpersonationContext, @Impersonation() { userId }: ImpersonationContext,
@Param('id') id: string @Param('id') id: string
): Promise<DeleteActivityResponse> { ): Promise<DeleteOrUpdateActivityResponse> {
const activity = await this.activitiesService.order({ const activity = await this.activitiesService.order({
id, id,
userId userId
@ -125,22 +125,7 @@ export class ActivitiesController {
id id
}); });
return pick(deletedActivity, [ return this.getDeleteOrUpdateActivityResponse(deletedActivity);
'accountId',
'accountUserId',
'comment',
'createdAt',
'currency',
'date',
'fee',
'id',
'quantity',
'symbolProfileId',
'type',
'unitPrice',
'updatedAt',
'userId'
]);
} }
@Get() @Get()
@ -330,7 +315,7 @@ export class ActivitiesController {
userSubscription userSubscription
}: ImpersonationContext, }: ImpersonationContext,
@Param('id') id: string @Param('id') id: string
): Promise<UpdateActivityResponse> { ): Promise<DeleteOrUpdateActivityResponse> {
const originalActivity = await this.activitiesService.order({ const originalActivity = await this.activitiesService.order({
id, id,
userId userId
@ -418,6 +403,12 @@ export class ActivitiesController {
} }
}); });
return this.getDeleteOrUpdateActivityResponse(activity);
}
private getDeleteOrUpdateActivityResponse(
activity: Order
): DeleteOrUpdateActivityResponse {
return pick(activity, [ return pick(activity, [
'accountId', 'accountId',
'accountUserId', 'accountUserId',

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

@ -68,7 +68,7 @@ import type {
DataProviderResponse, DataProviderResponse,
DataProviderHistoricalResponse DataProviderHistoricalResponse
} from './responses/data-provider-response.interface'; } from './responses/data-provider-response.interface';
import type { DeleteActivityResponse } from './responses/delete-activity-response.interface'; import type { DeleteOrUpdateActivityResponse } from './responses/delete-or-update-activity-response.interface';
import type { DividendsResponse } from './responses/dividends-response.interface'; import type { DividendsResponse } from './responses/dividends-response.interface';
import type { ResponseError } from './responses/errors.interface'; import type { ResponseError } from './responses/errors.interface';
import type { ExchangeRateResponse } from './responses/exchange-rate-response.interface'; import type { ExchangeRateResponse } from './responses/exchange-rate-response.interface';
@ -92,7 +92,6 @@ import type { PublicPortfolioResponse } from './responses/public-portfolio-respo
import type { QuotesResponse } from './responses/quotes-response.interface'; import type { QuotesResponse } from './responses/quotes-response.interface';
import type { RedeemCouponResponse } from './responses/redeem-coupon-response.interface'; import type { RedeemCouponResponse } from './responses/redeem-coupon-response.interface';
import type { SymbolResponse } from './responses/symbol-response.interface'; import type { SymbolResponse } from './responses/symbol-response.interface';
import type { UpdateActivityResponse } from './responses/update-activity-response.interface';
import type { WatchlistResponse } from './responses/watchlist-response.interface'; import type { WatchlistResponse } from './responses/watchlist-response.interface';
import type { RuleSettings } from './rule-settings.interface'; import type { RuleSettings } from './rule-settings.interface';
import type { ScraperConfiguration } from './scraper-configuration.interface'; import type { ScraperConfiguration } from './scraper-configuration.interface';
@ -159,7 +158,7 @@ export {
DataProviderHistoricalResponse, DataProviderHistoricalResponse,
DataProviderInfo, DataProviderInfo,
DataProviderResponse, DataProviderResponse,
DeleteActivityResponse, DeleteOrUpdateActivityResponse,
DividendsResponse, DividendsResponse,
EnhancedAssetProfile, EnhancedAssetProfile,
ExchangeRateResponse, ExchangeRateResponse,
@ -213,7 +212,6 @@ export {
SymbolItem, SymbolItem,
SymbolResponse, SymbolResponse,
SystemMessage, SystemMessage,
UpdateActivityResponse,
User, User,
UserItem, UserItem,
UserSettings, UserSettings,

2
libs/common/src/lib/interfaces/responses/delete-activity-response.interface.ts → libs/common/src/lib/interfaces/responses/delete-or-update-activity-response.interface.ts

@ -1,6 +1,6 @@
import type { Order } from '@ghostfolio/prisma/browser'; import type { Order } from '@ghostfolio/prisma/browser';
export interface DeleteActivityResponse extends Pick< export interface DeleteOrUpdateActivityResponse extends Pick<
Order, Order,
| 'accountId' | 'accountId'
| 'accountUserId' | 'accountUserId'

19
libs/common/src/lib/interfaces/responses/update-activity-response.interface.ts

@ -1,19 +0,0 @@
import type { Order } from '@ghostfolio/prisma/browser';
export interface UpdateActivityResponse extends Pick<
Order,
| 'accountId'
| 'accountUserId'
| 'comment'
| 'createdAt'
| 'currency'
| 'date'
| 'fee'
| 'id'
| 'quantity'
| 'symbolProfileId'
| 'type'
| 'unitPrice'
| 'updatedAt'
| 'userId'
> {}

7
libs/ui/src/lib/services/data.service.ts

@ -42,7 +42,7 @@ import {
CreateActivityResponse, CreateActivityResponse,
CreateStripeCheckoutSessionResponse, CreateStripeCheckoutSessionResponse,
DataProviderHealthResponse, DataProviderHealthResponse,
DeleteActivityResponse, DeleteOrUpdateActivityResponse,
ExportResponse, ExportResponse,
Filter, Filter,
ImportResponse, ImportResponse,
@ -62,7 +62,6 @@ import {
PublicPortfolioResponse, PublicPortfolioResponse,
RedeemCouponResponse, RedeemCouponResponse,
SymbolResponse, SymbolResponse,
UpdateActivityResponse,
User, User,
UserItem, UserItem,
WatchlistResponse WatchlistResponse
@ -354,7 +353,7 @@ export class DataService {
} }
public deleteActivity(aId: string) { public deleteActivity(aId: string) {
return this.http.delete<DeleteActivityResponse>( return this.http.delete<DeleteOrUpdateActivityResponse>(
`/api/v1/activities/${aId}` `/api/v1/activities/${aId}`
); );
} }
@ -955,7 +954,7 @@ export class DataService {
} }
public putActivity(aOrder: UpdateOrderDto) { public putActivity(aOrder: UpdateOrderDto) {
return this.http.put<UpdateActivityResponse>( return this.http.put<DeleteOrUpdateActivityResponse>(
`/api/v1/activities/${aOrder.id}`, `/api/v1/activities/${aOrder.id}`,
aOrder aOrder
); );

Loading…
Cancel
Save