Browse Source

Merge branch 'main' into task/refactor

pull/5825/head
Raj Gupta 1 week ago
committed by GitHub
parent
commit
b793c4b672
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 14
      .config/prisma.ts
  2. 7
      CHANGELOG.md
  3. 4
      Dockerfile
  4. 4
      apps/api/src/app/export/export.controller.ts
  5. 19
      apps/api/src/app/export/export.service.ts
  6. 2
      apps/api/src/dependencies.ts
  7. 8
      apps/api/src/models/rules/liquidity/buying-power.ts
  8. 8
      libs/common/src/lib/interfaces/responses/export-response.interface.ts
  9. 14
      prisma.config.ts

14
.config/prisma.ts

@ -0,0 +1,14 @@
import { defineConfig } from '@prisma/config';
import { config } from 'dotenv';
import { expand } from 'dotenv-expand';
import { join } from 'node:path';
expand(config({ quiet: true }));
export default defineConfig({
migrations: {
path: join(__dirname, '..', 'prisma', 'migrations'),
seed: `node ${join(__dirname, '..', 'prisma', 'seed.mts')}`
},
schema: join(__dirname, '..', 'prisma', 'schema.prisma')
});

7
CHANGELOG.md

@ -7,10 +7,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## Unreleased ## Unreleased
- Refactor Activities interface to ActivitiesResponse interface - Refactor Activities interface to ActivitiesResponse interface
### Added
- Extended the export functionality by the user account’s performance calculation typ
### Changed ### Changed
- Localized the number formatting in the static portfolio analysis rule: _Liquidity_ (Buying Power)
- Moved the _Prisma Configuration File_ from `prisma.config.ts` to `.config/prisma.ts`
- Upgraded `prisma` from version `6.17.1` to `6.18.0` - Upgraded `prisma` from version `6.17.1` to `6.18.0`
## 2.210.1 - 2025-10-22 ## 2.210.1 - 2025-10-22

4
Dockerfile

@ -13,11 +13,11 @@ RUN apt-get update && apt-get install -y --no-install-suggests \
# Only add basic files without the application itself to avoid rebuilding # Only add basic files without the application itself to avoid rebuilding
# layers when files (package.json etc.) have not changed # layers when files (package.json etc.) have not changed
COPY ./.config .config/
COPY ./CHANGELOG.md CHANGELOG.md COPY ./CHANGELOG.md CHANGELOG.md
COPY ./LICENSE LICENSE COPY ./LICENSE LICENSE
COPY ./package.json package.json COPY ./package.json package.json
COPY ./package-lock.json package-lock.json COPY ./package-lock.json package-lock.json
COPY ./prisma.config.ts prisma.config.ts
COPY ./prisma/schema.prisma prisma/ COPY ./prisma/schema.prisma prisma/
RUN npm install RUN npm install
@ -44,7 +44,7 @@ WORKDIR /ghostfolio/dist/apps/api
COPY ./package-lock.json /ghostfolio/dist/apps/api/ COPY ./package-lock.json /ghostfolio/dist/apps/api/
RUN npm install RUN npm install
COPY prisma.config.ts /ghostfolio/dist/apps/api/ COPY .config /ghostfolio/dist/apps/api/.config/
COPY prisma /ghostfolio/dist/apps/api/prisma/ COPY prisma /ghostfolio/dist/apps/api/prisma/
# Overwrite the generated package.json with the original one to ensure having # Overwrite the generated package.json with the original one to ensure having

4
apps/api/src/app/export/export.controller.ts

@ -48,8 +48,8 @@ export class ExportController {
return this.exportService.export({ return this.exportService.export({
activityIds, activityIds,
filters, filters,
userCurrency: this.request.user.settings.settings.baseCurrency, userId: this.request.user.id,
userId: this.request.user.id userSettings: this.request.user.settings.settings
}); });
} }
} }

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

@ -3,7 +3,11 @@ import { OrderService } from '@ghostfolio/api/app/order/order.service';
import { environment } from '@ghostfolio/api/environments/environment'; import { environment } from '@ghostfolio/api/environments/environment';
import { MarketDataService } from '@ghostfolio/api/services/market-data/market-data.service'; import { MarketDataService } from '@ghostfolio/api/services/market-data/market-data.service';
import { TagService } from '@ghostfolio/api/services/tag/tag.service'; import { TagService } from '@ghostfolio/api/services/tag/tag.service';
import { ExportResponse, Filter } from '@ghostfolio/common/interfaces'; import {
ExportResponse,
Filter,
UserSettings
} from '@ghostfolio/common/interfaces';
import { Injectable } from '@nestjs/common'; import { Injectable } from '@nestjs/common';
import { Platform, Prisma } from '@prisma/client'; import { Platform, Prisma } from '@prisma/client';
@ -21,13 +25,13 @@ export class ExportService {
public async export({ public async export({
activityIds, activityIds,
filters, filters,
userCurrency, userId,
userId userSettings
}: { }: {
activityIds?: string[]; activityIds?: string[];
filters?: Filter[]; filters?: Filter[];
userCurrency: string;
userId: string; userId: string;
userSettings: UserSettings;
}): Promise<ExportResponse> { }): Promise<ExportResponse> {
const { ACCOUNT: filtersByAccount } = groupBy(filters, ({ type }) => { const { ACCOUNT: filtersByAccount } = groupBy(filters, ({ type }) => {
return type; return type;
@ -36,11 +40,11 @@ export class ExportService {
let { activities } = await this.orderService.getOrders({ let { activities } = await this.orderService.getOrders({
filters, filters,
userCurrency,
userId, userId,
includeDrafts: true, includeDrafts: true,
sortColumn: 'date', sortColumn: 'date',
sortDirection: 'asc', sortDirection: 'asc',
userCurrency: userSettings?.baseCurrency,
withExcludedAccountsAndActivities: true withExcludedAccountsAndActivities: true
}); });
@ -244,7 +248,10 @@ export class ExportService {
} }
), ),
user: { user: {
settings: { currency: userCurrency } settings: {
currency: userSettings?.baseCurrency,
performanceCalculationType: userSettings?.performanceCalculationType
}
} }
}; };
} }

2
apps/api/src/dependencies.ts

@ -1,3 +1,3 @@
// Dependencies required by prisma.config.ts in Docker container // Dependencies required by .config/prisma.ts in Docker container
import 'dotenv'; import 'dotenv';
import 'dotenv-expand'; import 'dotenv-expand';

8
apps/api/src/models/rules/liquidity/buying-power.ts

@ -40,7 +40,9 @@ export class BuyingPower extends Rule<Settings> {
languageCode: this.getLanguageCode(), languageCode: this.getLanguageCode(),
placeholders: { placeholders: {
baseCurrency: ruleSettings.baseCurrency, baseCurrency: ruleSettings.baseCurrency,
thresholdMin: ruleSettings.thresholdMin thresholdMin: ruleSettings.thresholdMin.toLocaleString(
ruleSettings.locale
)
} }
}), }),
value: false value: false
@ -53,7 +55,9 @@ export class BuyingPower extends Rule<Settings> {
languageCode: this.getLanguageCode(), languageCode: this.getLanguageCode(),
placeholders: { placeholders: {
baseCurrency: ruleSettings.baseCurrency, baseCurrency: ruleSettings.baseCurrency,
thresholdMin: ruleSettings.thresholdMin thresholdMin: ruleSettings.thresholdMin.toLocaleString(
ruleSettings.locale
)
} }
}), }),
value: true value: true

8
libs/common/src/lib/interfaces/responses/export-response.interface.ts

@ -9,6 +9,7 @@ import {
import { AccountBalance } from '../account-balance.interface'; import { AccountBalance } from '../account-balance.interface';
import { MarketData } from '../market-data.interface'; import { MarketData } from '../market-data.interface';
import { UserSettings } from '../user-settings.interface';
export interface ExportResponse { export interface ExportResponse {
accounts: (Omit<Account, 'createdAt' | 'updatedAt' | 'userId'> & { accounts: (Omit<Account, 'createdAt' | 'updatedAt' | 'userId'> & {
@ -36,5 +37,10 @@ export interface ExportResponse {
}; };
platforms: Platform[]; platforms: Platform[];
tags: Omit<Tag, 'userId'>[]; tags: Omit<Tag, 'userId'>[];
user: { settings: { currency: string } }; user: {
settings: {
currency: UserSettings['baseCurrency'];
performanceCalculationType: UserSettings['performanceCalculationType'];
};
};
} }

14
prisma.config.ts

@ -1,14 +0,0 @@
import { config } from 'dotenv';
import { expand } from 'dotenv-expand';
import { join } from 'node:path';
import { defineConfig } from 'prisma/config';
expand(config({ quiet: true }));
export default defineConfig({
migrations: {
path: join('prisma', 'migrations'),
seed: `node ${join('prisma', 'seed.mts')}`
},
schema: join('prisma', 'schema.prisma')
});
Loading…
Cancel
Save