Browse Source

Deprecate order endpoints in favor of activities endpoints

pull/6446/head
Thomas Kaul 1 month ago
parent
commit
2b35b1a05d
  1. 18
      apps/api/src/app/activities/activities.controller.ts
  2. 25
      apps/api/src/app/activities/activities.service.ts
  3. 2
      apps/api/src/app/endpoints/public/public.controller.ts
  4. 2
      apps/api/src/app/export/export.service.ts
  5. 6
      apps/api/src/app/import/import.service.ts
  6. 9
      apps/api/src/app/portfolio/current-rate.service.ts
  7. 2
      apps/api/src/app/portfolio/portfolio.controller.ts
  8. 2
      apps/api/src/app/portfolio/portfolio.service.ts
  9. 2
      apps/api/src/app/user/user.service.ts

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

@ -77,7 +77,7 @@ export class ActivitiesController {
filterByTags filterByTags
}); });
return this.activitiesService.deleteOrders({ return this.activitiesService.deleteActivities({
filters, filters,
userId: this.request.user.id userId: this.request.user.id
}); });
@ -99,7 +99,7 @@ export class ActivitiesController {
); );
} }
return this.activitiesService.deleteOrder({ return this.activitiesService.deleteActivity({
id id
}); });
} }
@ -141,7 +141,7 @@ export class ActivitiesController {
await this.impersonationService.validateImpersonationId(impersonationId); await this.impersonationService.validateImpersonationId(impersonationId);
const userCurrency = this.request.user.settings.settings.baseCurrency; const userCurrency = this.request.user.settings.settings.baseCurrency;
const { activities, count } = await this.activitiesService.getOrders({ const { activities, count } = await this.activitiesService.getActivities({
endDate, endDate,
filters, filters,
sortColumn, sortColumn,
@ -170,7 +170,7 @@ export class ActivitiesController {
await this.impersonationService.validateImpersonationId(impersonationId); await this.impersonationService.validateImpersonationId(impersonationId);
const userCurrency = this.request.user.settings.settings.baseCurrency; const userCurrency = this.request.user.settings.settings.baseCurrency;
const { activities } = await this.activitiesService.getOrders({ const { activities } = await this.activitiesService.getActivities({
userCurrency, userCurrency,
includeDrafts: true, includeDrafts: true,
userId: impersonationUserId || this.request.user.id, userId: impersonationUserId || this.request.user.id,
@ -231,7 +231,7 @@ export class ActivitiesController {
delete data.dataSource; delete data.dataSource;
const order = await this.activitiesService.createOrder({ const activity = await this.activitiesService.createActivity({
...data, ...data,
date: parseISO(data.date), date: parseISO(data.date),
SymbolProfile: { SymbolProfile: {
@ -256,14 +256,14 @@ export class ActivitiesController {
userId: this.request.user.id userId: this.request.user.id
}); });
if (dataSource && !order.isDraft) { if (dataSource && !activity.isDraft) {
// Gather symbol data in the background, if data source is set // Gather symbol data in the background, if data source is set
// (not MANUAL) and not draft // (not MANUAL) and not draft
this.dataGatheringService.gatherSymbols({ this.dataGatheringService.gatherSymbols({
dataGatheringItems: [ dataGatheringItems: [
{ {
dataSource, dataSource,
date: order.date, date: activity.date,
symbol: data.symbol symbol: data.symbol
} }
], ],
@ -271,7 +271,7 @@ export class ActivitiesController {
}); });
} }
return order; return activity;
} }
@HasPermission(permissions.updateOrder) @HasPermission(permissions.updateOrder)
@ -306,7 +306,7 @@ export class ActivitiesController {
delete data.dataSource; delete data.dataSource;
return this.activitiesService.updateOrder({ return this.activitiesService.updateActivity({
data: { data: {
...data, ...data,
date, date,

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

@ -96,7 +96,7 @@ export class ActivitiesService {
); );
} }
public async createOrder( public async createActivity(
data: Prisma.OrderCreateInput & { data: Prisma.OrderCreateInput & {
accountId?: string; accountId?: string;
assetClass?: AssetClass; assetClass?: AssetClass;
@ -251,7 +251,7 @@ export class ActivitiesService {
return order; return order;
} }
public async deleteOrder( public async deleteActivity(
where: Prisma.OrderWhereUniqueInput where: Prisma.OrderWhereUniqueInput
): Promise<Order> { ): Promise<Order> {
const order = await this.prismaService.order.delete({ const order = await this.prismaService.order.delete({
@ -277,14 +277,14 @@ export class ActivitiesService {
return order; return order;
} }
public async deleteOrders({ public async deleteActivities({
filters, filters,
userId userId
}: { }: {
filters?: Filter[]; filters?: Filter[];
userId: string; userId: string;
}): Promise<number> { }): Promise<number> {
const { activities } = await this.getOrders({ const { activities } = await this.getActivities({
filters, filters,
userId, userId,
includeDrafts: true, includeDrafts: true,
@ -324,7 +324,7 @@ export class ActivitiesService {
} }
/** /**
* Generates synthetic orders for cash holdings based on account balance history. * Generates synthetic activities for cash holdings based on account balance history.
* Treat currencies as assets with a fixed unit price of 1.0 (in their own currency) to allow * Treat currencies as assets with a fixed unit price of 1.0 (in their own currency) to allow
* performance tracking based on exchange rate fluctuations. * performance tracking based on exchange rate fluctuations.
* *
@ -334,7 +334,7 @@ export class ActivitiesService {
* @param userId - The ID of the user. * @param userId - The ID of the user.
* @returns A response containing the list of synthetic cash activities. * @returns A response containing the list of synthetic cash activities.
*/ */
public async getCashOrders({ public async getCashActivities({
cashDetails, cashDetails,
filters = [], filters = [],
userCurrency, userCurrency,
@ -448,7 +448,10 @@ export class ActivitiesService {
}; };
} }
public async getLatestOrder({ dataSource, symbol }: AssetProfileIdentifier) { public async getLatestActivity({
dataSource,
symbol
}: AssetProfileIdentifier) {
return this.prismaService.order.findFirst({ return this.prismaService.order.findFirst({
orderBy: { orderBy: {
date: 'desc' date: 'desc'
@ -459,7 +462,7 @@ export class ActivitiesService {
}); });
} }
public async getOrders({ public async getActivities({
endDate, endDate,
filters, filters,
includeDrafts = false, includeDrafts = false,
@ -761,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.getOrders({ const orders = await this.getActivities({
filters, filters,
userCurrency, userCurrency,
userId, userId,
@ -775,7 +778,7 @@ export class ActivitiesService {
currency: userCurrency currency: userCurrency
}); });
const cashOrders = await this.getCashOrders({ const cashOrders = await this.getCashActivities({
cashDetails, cashDetails,
filters, filters,
userCurrency, userCurrency,
@ -817,7 +820,7 @@ export class ActivitiesService {
}); });
} }
public async updateOrder({ public async updateActivity({
data, data,
where where
}: { }: {

2
apps/api/src/app/endpoints/public/public.controller.ts

@ -81,7 +81,7 @@ export class PublicController {
}) })
]); ]);
const { activities } = await this.activitiesService.getOrders({ const { activities } = await this.activitiesService.getActivities({
sortColumn: 'date', sortColumn: 'date',
sortDirection: 'desc', sortDirection: 'desc',
take: 10, take: 10,

2
apps/api/src/app/export/export.service.ts

@ -38,7 +38,7 @@ export class ExportService {
}); });
const platformsMap: { [platformId: string]: Platform } = {}; const platformsMap: { [platformId: string]: Platform } = {};
let { activities } = await this.activitiesService.getOrders({ let { activities } = await this.activitiesService.getActivities({
filters, filters,
userId, userId,
includeDrafts: true, includeDrafts: true,

6
apps/api/src/app/import/import.service.ts

@ -91,7 +91,7 @@ export class ImportService {
userId, userId,
withExcludedAccounts: true withExcludedAccounts: true
}), }),
this.activitiesService.getOrders({ this.activitiesService.getActivities({
filters, filters,
userCurrency, userCurrency,
userId, userId,
@ -548,7 +548,7 @@ export class ImportService {
continue; continue;
} }
order = await this.activitiesService.createOrder({ order = await this.activitiesService.createActivity({
comment, comment,
currency, currency,
date, date,
@ -645,7 +645,7 @@ export class ImportService {
userId: string; userId: string;
}): Promise<Partial<Activity>[]> { }): Promise<Partial<Activity>[]> {
const { activities: existingActivities } = const { activities: existingActivities } =
await this.activitiesService.getOrders({ await this.activitiesService.getActivities({
userCurrency, userCurrency,
userId, userId,
includeDrafts: true, includeDrafts: true,

9
apps/api/src/app/portfolio/current-rate.service.ts

@ -129,10 +129,11 @@ export class CurrentRateService {
if (!value) { if (!value) {
// Fallback to unit price of latest activity // Fallback to unit price of latest activity
const latestActivity = await this.activitiesService.getLatestOrder({ const latestActivity =
dataSource, await this.activitiesService.getLatestActivity({
symbol dataSource,
}); symbol
});
value = { value = {
dataSource, dataSource,

2
apps/api/src/app/portfolio/portfolio.controller.ts

@ -322,7 +322,7 @@ export class PortfolioController {
const { endDate, startDate } = getIntervalFromDateRange(dateRange); const { endDate, startDate } = getIntervalFromDateRange(dateRange);
const { activities } = await this.activitiesService.getOrders({ const { activities } = await this.activitiesService.getActivities({
endDate, endDate,
filters, filters,
startDate, startDate,

2
apps/api/src/app/portfolio/portfolio.service.ts

@ -1877,7 +1877,7 @@ export class PortfolioService {
userId = await this.getUserId(impersonationId, userId); userId = await this.getUserId(impersonationId, userId);
const user = await this.userService.user({ id: userId }); const user = await this.userService.user({ id: userId });
const { activities } = await this.activitiesService.getOrders({ const { activities } = await this.activitiesService.getActivities({
userCurrency, userCurrency,
userId, userId,
withExcludedAccountsAndActivities: true withExcludedAccountsAndActivities: true

2
apps/api/src/app/user/user.service.ts

@ -643,7 +643,7 @@ export class UserService {
} catch {} } catch {}
try { try {
await this.activitiesService.deleteOrders({ await this.activitiesService.deleteActivities({
userId: where.id userId: where.id
}); });
} catch {} } catch {}

Loading…
Cancel
Save