Browse Source

Deprecate order endpoints in favor of activities endpoints

pull/6446/head
Thomas Kaul 4 weeks ago
parent
commit
c00ca96409
  1. 25
      apps/api/src/app/activities/activities.controller.ts
  2. 42
      apps/api/src/app/activities/activities.service.ts

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

@ -62,7 +62,7 @@ export class ActivitiesController {
@HasPermission(permissions.deleteOrder) @HasPermission(permissions.deleteOrder)
@UseGuards(AuthGuard('jwt'), HasPermissionGuard) @UseGuards(AuthGuard('jwt'), HasPermissionGuard)
@UseInterceptors(TransformDataSourceInRequestInterceptor) @UseInterceptors(TransformDataSourceInRequestInterceptor)
public async deleteOrders( public async deleteActivities(
@Query('accounts') filterByAccounts?: string, @Query('accounts') filterByAccounts?: string,
@Query('assetClasses') filterByAssetClasses?: string, @Query('assetClasses') filterByAssetClasses?: string,
@Query('dataSource') filterByDataSource?: string, @Query('dataSource') filterByDataSource?: string,
@ -86,13 +86,13 @@ export class ActivitiesController {
@Delete(':id') @Delete(':id')
@HasPermission(permissions.deleteOrder) @HasPermission(permissions.deleteOrder)
@UseGuards(AuthGuard('jwt'), HasPermissionGuard) @UseGuards(AuthGuard('jwt'), HasPermissionGuard)
public async deleteOrder(@Param('id') id: string): Promise<OrderModel> { public async deleteActivity(@Param('id') id: string): Promise<OrderModel> {
const order = await this.activitiesService.order({ const activity = await this.activitiesService.order({
id, id,
userId: this.request.user.id userId: this.request.user.id
}); });
if (!order) { if (!activity) {
throw new HttpException( throw new HttpException(
getReasonPhrase(StatusCodes.FORBIDDEN), getReasonPhrase(StatusCodes.FORBIDDEN),
StatusCodes.FORBIDDEN StatusCodes.FORBIDDEN
@ -109,7 +109,7 @@ export class ActivitiesController {
@UseInterceptors(RedactValuesInResponseInterceptor) @UseInterceptors(RedactValuesInResponseInterceptor)
@UseInterceptors(TransformDataSourceInRequestInterceptor) @UseInterceptors(TransformDataSourceInRequestInterceptor)
@UseInterceptors(TransformDataSourceInResponseInterceptor) @UseInterceptors(TransformDataSourceInResponseInterceptor)
public async getAllOrders( public async getAllActivities(
@Headers(HEADER_KEY_IMPERSONATION.toLowerCase()) impersonationId: string, @Headers(HEADER_KEY_IMPERSONATION.toLowerCase()) impersonationId: string,
@Query('accounts') filterByAccounts?: string, @Query('accounts') filterByAccounts?: string,
@Query('assetClasses') filterByAssetClasses?: string, @Query('assetClasses') filterByAssetClasses?: string,
@ -162,7 +162,7 @@ export class ActivitiesController {
@UseGuards(AuthGuard('jwt'), HasPermissionGuard) @UseGuards(AuthGuard('jwt'), HasPermissionGuard)
@UseInterceptors(RedactValuesInResponseInterceptor) @UseInterceptors(RedactValuesInResponseInterceptor)
@UseInterceptors(TransformDataSourceInResponseInterceptor) @UseInterceptors(TransformDataSourceInResponseInterceptor)
public async getOrderById( public async getActivityById(
@Headers(HEADER_KEY_IMPERSONATION.toLowerCase()) impersonationId: string, @Headers(HEADER_KEY_IMPERSONATION.toLowerCase()) impersonationId: string,
@Param('id') id: string @Param('id') id: string
): Promise<ActivityResponse> { ): Promise<ActivityResponse> {
@ -195,7 +195,9 @@ export class ActivitiesController {
@Post() @Post()
@UseGuards(AuthGuard('jwt'), HasPermissionGuard) @UseGuards(AuthGuard('jwt'), HasPermissionGuard)
@UseInterceptors(TransformDataSourceInRequestInterceptor) @UseInterceptors(TransformDataSourceInRequestInterceptor)
public async createOrder(@Body() data: CreateOrderDto): Promise<OrderModel> { public async createActivity(
@Body() data: CreateOrderDto
): Promise<OrderModel> {
try { try {
await this.dataProviderService.validateActivities({ await this.dataProviderService.validateActivities({
activitiesDto: [ activitiesDto: [
@ -278,12 +280,15 @@ export class ActivitiesController {
@Put(':id') @Put(':id')
@UseGuards(AuthGuard('jwt'), HasPermissionGuard) @UseGuards(AuthGuard('jwt'), HasPermissionGuard)
@UseInterceptors(TransformDataSourceInRequestInterceptor) @UseInterceptors(TransformDataSourceInRequestInterceptor)
public async update(@Param('id') id: string, @Body() data: UpdateOrderDto) { public async updateActivity(
const originalOrder = await this.activitiesService.order({ @Param('id') id: string,
@Body() data: UpdateOrderDto
) {
const originalActivity = await this.activitiesService.order({
id id
}); });
if (!originalOrder || originalOrder.userId !== this.request.user.id) { if (!originalActivity || originalActivity.userId !== this.request.user.id) {
throw new HttpException( throw new HttpException(
getReasonPhrase(StatusCodes.FORBIDDEN), getReasonPhrase(StatusCodes.FORBIDDEN),
StatusCodes.FORBIDDEN StatusCodes.FORBIDDEN

42
apps/api/src/app/activities/activities.service.ts

@ -62,7 +62,7 @@ export class ActivitiesService {
tags, tags,
userId userId
}: { tags: Tag[]; userId: string } & AssetProfileIdentifier) { }: { tags: Tag[]; userId: string } & AssetProfileIdentifier) {
const orders = await this.prismaService.order.findMany({ const activities = await this.prismaService.order.findMany({
where: { where: {
userId, userId,
SymbolProfile: { SymbolProfile: {
@ -73,7 +73,7 @@ export class ActivitiesService {
}); });
await Promise.all( await Promise.all(
orders.map(({ id }) => activities.map(({ id }) =>
this.prismaService.order.update({ this.prismaService.order.update({
data: { data: {
tags: { tags: {
@ -201,7 +201,7 @@ export class ActivitiesService {
? false ? false
: isAfter(data.date as Date, endOfToday()); : isAfter(data.date as Date, endOfToday());
const order = await this.prismaService.order.create({ const activity = await this.prismaService.order.create({
data: { data: {
...orderData, ...orderData,
account, account,
@ -235,46 +235,46 @@ export class ActivitiesService {
this.eventEmitter.emit( this.eventEmitter.emit(
AssetProfileChangedEvent.getName(), AssetProfileChangedEvent.getName(),
new AssetProfileChangedEvent({ new AssetProfileChangedEvent({
currency: order.SymbolProfile.currency, currency: activity.SymbolProfile.currency,
dataSource: order.SymbolProfile.dataSource, dataSource: activity.SymbolProfile.dataSource,
symbol: order.SymbolProfile.symbol symbol: activity.SymbolProfile.symbol
}) })
); );
this.eventEmitter.emit( this.eventEmitter.emit(
PortfolioChangedEvent.getName(), PortfolioChangedEvent.getName(),
new PortfolioChangedEvent({ new PortfolioChangedEvent({
userId: order.userId userId: activity.userId
}) })
); );
return order; return activity;
} }
public async deleteActivity( public async deleteActivity(
where: Prisma.OrderWhereUniqueInput where: Prisma.OrderWhereUniqueInput
): Promise<Order> { ): Promise<Order> {
const order = await this.prismaService.order.delete({ const activity = await this.prismaService.order.delete({
where where
}); });
const [symbolProfile] = const [symbolProfile] =
await this.symbolProfileService.getSymbolProfilesByIds([ await this.symbolProfileService.getSymbolProfilesByIds([
order.symbolProfileId activity.symbolProfileId
]); ]);
if (symbolProfile.activitiesCount === 0) { if (symbolProfile.activitiesCount === 0) {
await this.symbolProfileService.deleteById(order.symbolProfileId); await this.symbolProfileService.deleteById(activity.symbolProfileId);
} }
this.eventEmitter.emit( this.eventEmitter.emit(
PortfolioChangedEvent.getName(), PortfolioChangedEvent.getName(),
new PortfolioChangedEvent({ new PortfolioChangedEvent({
userId: order.userId userId: activity.userId
}) })
); );
return order; return activity;
} }
public async deleteActivities({ public async deleteActivities({
@ -764,7 +764,7 @@ export class ActivitiesService {
/** Whether to include cash activities in the result. */ /** Whether to include cash activities in the result. */
withCash?: boolean; withCash?: boolean;
}) { }) {
const orders = await this.getActivities({ const activities = await this.getActivities({
filters, filters,
userCurrency, userCurrency,
userId, userId,
@ -778,18 +778,18 @@ export class ActivitiesService {
currency: userCurrency currency: userCurrency
}); });
const cashOrders = await this.getCashActivities({ const cashActivities = await this.getCashActivities({
cashDetails, cashDetails,
filters, filters,
userCurrency, userCurrency,
userId userId
}); });
orders.activities.push(...cashOrders.activities); activities.activities.push(...cashActivities.activities);
orders.count += cashOrders.count; activities.count += cashActivities.count;
} }
return orders; return activities;
} }
public async getStatisticsByCurrency( public async getStatisticsByCurrency(
@ -885,7 +885,7 @@ export class ActivitiesService {
data: { tags: { set: [] } } data: { tags: { set: [] } }
}); });
const order = await this.prismaService.order.update({ const activity = await this.prismaService.order.update({
where, where,
data: { data: {
...data, ...data,
@ -899,11 +899,11 @@ export class ActivitiesService {
this.eventEmitter.emit( this.eventEmitter.emit(
PortfolioChangedEvent.getName(), PortfolioChangedEvent.getName(),
new PortfolioChangedEvent({ new PortfolioChangedEvent({
userId: order.userId userId: activity.userId
}) })
); );
return order; return activity;
} }
private async orders(params: { private async orders(params: {

Loading…
Cancel
Save