Browse Source

Task/migrate app to prisma-client generated code

pull/8052/head
Szymon Łągiewka 2 weeks ago
parent
commit
768e550935
Failed to extract signature
  1. 5
      apps/api/eslint.config.cjs
  2. 2
      apps/api/src/app/access/access.controller.ts
  3. 2
      apps/api/src/app/access/access.service.ts
  4. 2
      apps/api/src/app/account-balance/account-balance.controller.ts
  5. 2
      apps/api/src/app/account-balance/account-balance.service.ts
  6. 2
      apps/api/src/app/account/account.controller.ts
  7. 10
      apps/api/src/app/account/account.service.ts
  8. 2
      apps/api/src/app/activities/activities-filter.dto.ts
  9. 2
      apps/api/src/app/activities/activities.controller.ts
  10. 7
      apps/api/src/app/activities/activities.service.spec.ts
  11. 12
      apps/api/src/app/activities/activities.service.ts
  12. 3
      apps/api/src/app/activities/get-activities.dto.ts
  13. 7
      apps/api/src/app/admin/admin.controller.ts
  14. 18
      apps/api/src/app/admin/admin.service.ts
  15. 2
      apps/api/src/app/asset/asset.controller.ts
  16. 2
      apps/api/src/app/auth-device/auth-device.service.ts
  17. 2
      apps/api/src/app/auth/google.strategy.ts
  18. 3
      apps/api/src/app/auth/interfaces/interfaces.ts
  19. 3
      apps/api/src/app/auth/oidc.strategy.ts
  20. 3
      apps/api/src/app/endpoints/asset-profiles/asset-profiles.controller.ts
  21. 3
      apps/api/src/app/endpoints/asset-profiles/asset-profiles.service.spec.ts
  22. 7
      apps/api/src/app/endpoints/asset-profiles/asset-profiles.service.ts
  23. 2
      apps/api/src/app/endpoints/asset-profiles/get-asset-profiles.dto.ts
  24. 2
      apps/api/src/app/endpoints/benchmarks/benchmarks.controller.ts
  25. 3
      apps/api/src/app/endpoints/data-providers/ghostfolio/ghostfolio.service.ts
  26. 3
      apps/api/src/app/endpoints/market-data/market-data.controller.ts
  27. 3
      apps/api/src/app/endpoints/mcp/mcp.schemas.spec.ts
  28. 6
      apps/api/src/app/endpoints/mcp/mcp.schemas.ts
  29. 6
      apps/api/src/app/endpoints/mcp/mcp.service.spec.ts
  30. 2
      apps/api/src/app/endpoints/mcp/mcp.test-utils.ts
  31. 2
      apps/api/src/app/endpoints/public/public.service.ts
  32. 2
      apps/api/src/app/endpoints/tags/tags.controller.ts
  33. 2
      apps/api/src/app/endpoints/watchlist/watchlist.controller.ts
  34. 2
      apps/api/src/app/endpoints/watchlist/watchlist.service.ts
  35. 3
      apps/api/src/app/export/export.service.ts
  36. 2
      apps/api/src/app/health/health.controller.ts
  37. 2
      apps/api/src/app/health/health.service.ts
  38. 3
      apps/api/src/app/import/import-data.dto.spec.ts
  39. 2
      apps/api/src/app/import/import.controller.ts
  40. 3
      apps/api/src/app/import/import.service.spec.ts
  41. 3
      apps/api/src/app/import/import.service.ts
  42. 2
      apps/api/src/app/import/interfaces/asset-profile-to-create.interface.ts
  43. 2
      apps/api/src/app/info/info.service.ts
  44. 2
      apps/api/src/app/logo/logo.controller.ts
  45. 2
      apps/api/src/app/logo/logo.service.ts
  46. 2
      apps/api/src/app/platform/platform.controller.ts
  47. 2
      apps/api/src/app/platform/platform.service.ts
  48. 2
      apps/api/src/app/portfolio/calculator/portfolio-calculator.ts
  49. 2
      apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-cash.spec.ts
  50. 3
      apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-stock-split.spec.ts
  51. 2
      apps/api/src/app/portfolio/current-rate.service.mock.ts
  52. 8
      apps/api/src/app/portfolio/current-rate.service.spec.ts
  53. 4
      apps/api/src/app/portfolio/interfaces/holding-balance.interface.ts
  54. 2
      apps/api/src/app/portfolio/portfolio.controller.ts
  55. 3
      apps/api/src/app/portfolio/portfolio.service.spec.ts
  56. 17
      apps/api/src/app/portfolio/portfolio.service.ts
  57. 3
      apps/api/src/app/portfolio/update-holding-tags.dto.ts
  58. 2
      apps/api/src/app/subscription/subscription.service.ts
  59. 2
      apps/api/src/app/symbol/symbol.controller.ts
  60. 2
      apps/api/src/app/user/user.controller.ts
  61. 3
      apps/api/src/app/user/user.service.ts
  62. 3
      apps/api/src/dependencies.ts
  63. 2
      apps/api/src/dtos/filter.dto.ts
  64. 2
      apps/api/src/helper/account.helper.ts
  65. 3
      apps/api/src/helper/activity.helper.ts
  66. 3
      apps/api/src/helper/data-source.helper.spec.ts
  67. 3
      apps/api/src/helper/data-source.helper.ts
  68. 3
      apps/api/src/helper/portfolio.helper.ts
  69. 2
      apps/api/src/interceptors/transform-data-source-in-request/transform-data-source-in-request.interceptor.ts
  70. 2
      apps/api/src/interceptors/transform-data-source-in-response/transform-data-source-in-response.interceptor.ts
  71. 3
      apps/api/src/models/rules/account-cluster-risk/current-investment.ts
  72. 3
      apps/api/src/services/asset-profile-split/asset-profile-split.helper.spec.ts
  73. 2
      apps/api/src/services/asset-profile-split/asset-profile-split.helper.ts
  74. 4
      apps/api/src/services/asset-profile-split/asset-profile-split.service.spec.ts
  75. 2
      apps/api/src/services/asset-profile-split/asset-profile-split.service.ts
  76. 2
      apps/api/src/services/benchmark/benchmark.service.ts
  77. 2
      apps/api/src/services/configuration/configuration.service.ts
  78. 3
      apps/api/src/services/data-provider/alpha-vantage/alpha-vantage.service.ts
  79. 12
      apps/api/src/services/data-provider/coingecko/coingecko.service.ts
  80. 2
      apps/api/src/services/data-provider/data-enhancer/data-enhancer.service.ts
  81. 12
      apps/api/src/services/data-provider/data-enhancer/openfigi/openfigi.service.ts
  82. 2
      apps/api/src/services/data-provider/data-enhancer/trackinsight/trackinsight.service.ts
  83. 11
      apps/api/src/services/data-provider/data-enhancer/yahoo-finance/yahoo-finance.service.ts
  84. 7
      apps/api/src/services/data-provider/data-provider.service.ts
  85. 10
      apps/api/src/services/data-provider/eod-historical-data/eod-historical-data.service.ts
  86. 10
      apps/api/src/services/data-provider/financial-modeling-prep/financial-modeling-prep.service.ts
  87. 3
      apps/api/src/services/data-provider/ghostfolio/ghostfolio.service.ts
  88. 3
      apps/api/src/services/data-provider/google-sheets/google-sheets.service.ts
  89. 2
      apps/api/src/services/data-provider/interfaces/data-enhancer.interface.ts
  90. 4
      apps/api/src/services/data-provider/interfaces/data-provider.interface.ts
  91. 3
      apps/api/src/services/data-provider/manual/manual.service.spec.ts
  92. 3
      apps/api/src/services/data-provider/manual/manual.service.ts
  93. 3
      apps/api/src/services/data-provider/rapid-api/rapid-api.service.ts
  94. 3
      apps/api/src/services/data-provider/yahoo-finance/yahoo-finance.service.ts
  95. 2
      apps/api/src/services/impersonation/impersonation.service.spec.ts
  96. 3
      apps/api/src/services/impersonation/impersonation.service.ts
  97. 8
      apps/api/src/services/market-data/market-data.service.ts
  98. 2
      apps/api/src/services/portfolio-table/interfaces/holdings-table-context.interface.ts
  99. 7
      apps/api/src/services/portfolio-table/portfolio-table.service.spec.ts
  100. 6
      apps/api/src/services/portfolio-table/portfolio-table.service.ts

5
apps/api/eslint.config.cjs

@ -21,10 +21,7 @@ module.exports = [
{
files: ['**/*.ts', '**/*.tsx'],
// Override or add rules here
rules: {
// TODO: Remove once the API uses the code generated by the new prisma-client generator
'@typescript-eslint/no-restricted-imports': 'off'
}
rules: {}
},
{
files: ['**/*.js', '**/*.jsx'],

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

@ -12,6 +12,7 @@ import { Access, AccessSettings } from '@ghostfolio/common/interfaces';
import { permissions } from '@ghostfolio/common/permissions';
import { getScopesOfAccess } from '@ghostfolio/common/scopes';
import type { RequestWithUser } from '@ghostfolio/common/types';
import type { Access as AccessModel } from '@ghostfolio/prisma/client';
import {
Body,
@ -27,7 +28,6 @@ import {
} from '@nestjs/common';
import { REQUEST } from '@nestjs/core';
import { AuthGuard } from '@nestjs/passport';
import { Access as AccessModel } from '@prisma/client';
import { StatusCodes, getReasonPhrase } from 'http-status-codes';
import { AccessService } from './access.service';

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

@ -1,9 +1,9 @@
import { PrismaService } from '@ghostfolio/api/services/prisma/prisma.service';
import { AccessSettings, Filter } from '@ghostfolio/common/interfaces';
import { AccessWithGranteeUser } from '@ghostfolio/common/types';
import type { Access, Prisma } from '@ghostfolio/prisma/client';
import { Injectable } from '@nestjs/common';
import { Access, Prisma } from '@prisma/client';
import { isBefore, isToday, isValid } from 'date-fns';
@Injectable()

2
apps/api/src/app/account-balance/account-balance.controller.ts

@ -7,6 +7,7 @@ import { CreateAccountBalanceDto } from '@ghostfolio/common/dtos';
import { permissions } from '@ghostfolio/common/permissions';
import { scopes } from '@ghostfolio/common/scopes';
import type { ImpersonationContext } from '@ghostfolio/common/types';
import type { AccountBalance } from '@ghostfolio/prisma/client';
import {
Controller,
@ -17,7 +18,6 @@ import {
Param,
UseInterceptors
} from '@nestjs/common';
import { AccountBalance } from '@prisma/client';
import { StatusCodes, getReasonPhrase } from 'http-status-codes';
import { AccountBalanceService } from './account-balance.service';

2
apps/api/src/app/account-balance/account-balance.service.ts

@ -18,10 +18,10 @@ import {
Filter,
HistoricalDataItem
} from '@ghostfolio/common/interfaces';
import type { AccountBalance, Prisma } from '@ghostfolio/prisma/client';
import { Injectable } from '@nestjs/common';
import { EventEmitter2 } from '@nestjs/event-emitter';
import { AccountBalance, Prisma } from '@prisma/client';
import { Big } from 'big.js';
import { endOfToday, format, min, parseISO } from 'date-fns';
import { groupBy } from 'lodash-es';

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

@ -19,6 +19,7 @@ import {
import { permissions } from '@ghostfolio/common/permissions';
import { scopes } from '@ghostfolio/common/scopes';
import type { ImpersonationContext } from '@ghostfolio/common/types';
import type { Account as AccountModel } from '@ghostfolio/prisma/client';
import {
Body,
@ -32,7 +33,6 @@ import {
Query,
UseInterceptors
} from '@nestjs/common';
import { Account as AccountModel } from '@prisma/client';
import { StatusCodes, getReasonPhrase } from 'http-status-codes';
import { AccountService } from './account.service';

10
apps/api/src/app/account/account.service.ts

@ -14,10 +14,7 @@ import {
} from '@ghostfolio/common/helper';
import { Filter } from '@ghostfolio/common/interfaces';
import { AccountWithBalance } from '@ghostfolio/common/types';
import { Injectable } from '@nestjs/common';
import { EventEmitter2 } from '@nestjs/event-emitter';
import {
import type {
Account,
AccountBalance,
Order,
@ -25,7 +22,10 @@ import {
Prisma,
SymbolProfile,
Tag
} from '@prisma/client';
} from '@ghostfolio/prisma/client';
import { Injectable } from '@nestjs/common';
import { EventEmitter2 } from '@nestjs/event-emitter';
import { Big } from 'big.js';
import { format } from 'date-fns';
import { groupBy, isNil } from 'lodash-es';

2
apps/api/src/app/activities/activities-filter.dto.ts

@ -1,8 +1,8 @@
import { DATE_RANGE_PATTERN } from '@ghostfolio/api/dtos/date-range-filter.dto';
import { FilterDto } from '@ghostfolio/api/dtos/filter.dto';
import { DateRange } from '@ghostfolio/common/types';
import { Type as ActivityType } from '@ghostfolio/prisma/enums';
import { Type as ActivityType } from '@prisma/client';
import { Transform, TransformFnParams } from 'class-transformer';
import { IsEnum, IsOptional, Matches } from 'class-validator';
import { isString } from 'lodash-es';

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

@ -22,6 +22,7 @@ import {
import { permissions } from '@ghostfolio/common/permissions';
import { scopes } from '@ghostfolio/common/scopes';
import type { ImpersonationContext } from '@ghostfolio/common/types';
import type { Order, Prisma } from '@ghostfolio/prisma/client';
import {
Body,
@ -35,7 +36,6 @@ import {
Query,
UseInterceptors
} from '@nestjs/common';
import { Order } from '@prisma/client';
import { parseISO } from 'date-fns';
import { StatusCodes, getReasonPhrase } from 'http-status-codes';

7
apps/api/src/app/activities/activities.service.spec.ts

@ -14,12 +14,9 @@ import {
} from '@ghostfolio/common/config';
import { parseDate } from '@ghostfolio/common/helper';
import { Activity, Filter } from '@ghostfolio/common/interfaces';
import type { AssetProfileSplit } from '@ghostfolio/prisma/client';
import { DataSource, Type as ActivityType } from '@ghostfolio/prisma/enums';
import {
AssetProfileSplit,
DataSource,
Type as ActivityType
} from '@prisma/client';
import { Big } from 'big.js';
import { ActivitiesService } from './activities.service';

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

@ -47,18 +47,16 @@ import {
Filter
} from '@ghostfolio/common/interfaces';
import { OrderWithAccount } from '@ghostfolio/common/types';
import { Injectable } from '@nestjs/common';
import { EventEmitter2 } from '@nestjs/event-emitter';
import type { Order, Prisma, Tag } from '@ghostfolio/prisma/client';
import {
AssetClass,
AssetSubClass,
DataSource,
Order,
Prisma,
Tag,
Type as ActivityType
} from '@prisma/client';
} from '@ghostfolio/prisma/enums';
import { Injectable } from '@nestjs/common';
import { EventEmitter2 } from '@nestjs/event-emitter';
import { Big } from 'big.js';
import { groupBy, omit, uniqBy } from 'lodash-es';
import { randomUUID } from 'node:crypto';

3
apps/api/src/app/activities/get-activities.dto.ts

@ -1,4 +1,5 @@
import { Prisma } from '@prisma/client';
import { Prisma } from '@ghostfolio/prisma/client';
import { Type } from 'class-transformer';
import { IsIn, IsInt, IsOptional, Min } from 'class-validator';

7
apps/api/src/app/admin/admin.controller.ts

@ -36,6 +36,12 @@ import type {
PropertyKey,
RequestWithUser
} from '@ghostfolio/common/types';
import type {
MarketData,
Prisma,
SymbolProfile
} from '@ghostfolio/prisma/client';
import { DataSource } from '@ghostfolio/prisma/enums';
import { utc } from '@date-fns/utc';
import {
@ -57,7 +63,6 @@ import {
} from '@nestjs/common';
import { REQUEST } from '@nestjs/core';
import { AuthGuard } from '@nestjs/passport';
import { DataSource, MarketData, Prisma, SymbolProfile } from '@prisma/client';
import { isDate, parseISO } from 'date-fns';
import { StatusCodes, getReasonPhrase } from 'http-status-codes';

18
apps/api/src/app/admin/admin.service.ts

@ -29,6 +29,16 @@ import {
EnhancedAssetProfile
} from '@ghostfolio/common/interfaces';
import { PropertyKey } from '@ghostfolio/common/types';
import {
Prisma,
type Property,
type SymbolProfile
} from '@ghostfolio/prisma/client';
import {
AssetClass,
AssetSubClass,
DataSource
} from '@ghostfolio/prisma/enums';
import {
BadRequestException,
@ -39,14 +49,6 @@ import {
Logger,
NotFoundException
} from '@nestjs/common';
import {
AssetClass,
AssetSubClass,
DataSource,
Prisma,
Property,
SymbolProfile
} from '@prisma/client';
import { differenceInDays } from 'date-fns';
import { StatusCodes, getReasonPhrase } from 'http-status-codes';
import { randomUUID } from 'node:crypto';

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

@ -2,9 +2,9 @@ import { AssetProfilesService } from '@ghostfolio/api/app/endpoints/asset-profil
import { TransformDataSourceInRequestInterceptor } from '@ghostfolio/api/interceptors/transform-data-source-in-request/transform-data-source-in-request.interceptor';
import { TransformDataSourceInResponseInterceptor } from '@ghostfolio/api/interceptors/transform-data-source-in-response/transform-data-source-in-response.interceptor';
import type { AssetResponse } from '@ghostfolio/common/interfaces';
import { DataSource } from '@ghostfolio/prisma/enums';
import { Controller, Get, Param, UseInterceptors } from '@nestjs/common';
import { DataSource } from '@prisma/client';
import { pick } from 'lodash-es';
@Controller('asset')

2
apps/api/src/app/auth-device/auth-device.service.ts

@ -1,7 +1,7 @@
import { PrismaService } from '@ghostfolio/api/services/prisma/prisma.service';
import type { AuthDevice, Prisma } from '@ghostfolio/prisma/client';
import { Injectable } from '@nestjs/common';
import { AuthDevice, Prisma } from '@prisma/client';
@Injectable()
export class AuthDeviceService {

2
apps/api/src/app/auth/google.strategy.ts

@ -1,8 +1,8 @@
import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service';
import { Provider } from '@ghostfolio/prisma/enums';
import { Injectable, Logger } from '@nestjs/common';
import { PassportStrategy } from '@nestjs/passport';
import { Provider } from '@prisma/client';
import { DoneCallback } from 'passport';
import { Profile, Strategy } from 'passport-google-oauth20';

3
apps/api/src/app/auth/interfaces/interfaces.ts

@ -1,6 +1,5 @@
import { AuthDeviceDto } from '@ghostfolio/common/dtos';
import { Provider } from '@prisma/client';
import type { Provider } from '@ghostfolio/prisma/enums';
export interface AuthDeviceDialogParams {
authDevice: AuthDeviceDto;

3
apps/api/src/app/auth/oidc.strategy.ts

@ -1,6 +1,7 @@
import { Provider } from '@ghostfolio/prisma/enums';
import { Injectable, Logger } from '@nestjs/common';
import { PassportStrategy } from '@nestjs/passport';
import { Provider } from '@prisma/client';
import { Request } from 'express';
import { Strategy, type StrategyOptions } from 'passport-openidconnect';

3
apps/api/src/app/endpoints/asset-profiles/asset-profiles.controller.ts

@ -18,6 +18,8 @@ import {
import { hasPermission } from '@ghostfolio/common/permissions';
import { permissions } from '@ghostfolio/common/permissions';
import type { RequestWithUser } from '@ghostfolio/common/types';
import type { AssetProfileSplit } from '@ghostfolio/prisma/client';
import { DataSource } from '@ghostfolio/prisma/enums';
import {
Body,
@ -35,7 +37,6 @@ import {
} from '@nestjs/common';
import { REQUEST } from '@nestjs/core';
import { AuthGuard } from '@nestjs/passport';
import { AssetProfileSplit, DataSource } from '@prisma/client';
import { parseISO } from 'date-fns';
import { StatusCodes, getReasonPhrase } from 'http-status-codes';

3
apps/api/src/app/endpoints/asset-profiles/asset-profiles.service.spec.ts

@ -2,10 +2,11 @@ import { ActivitiesService } from '@ghostfolio/api/app/activities/activities.ser
import { PortfolioChangedEvent } from '@ghostfolio/api/events/portfolio-changed.event';
import { AssetProfileSplitService } from '@ghostfolio/api/services/asset-profile-split/asset-profile-split.service';
import { DataGatheringService } from '@ghostfolio/api/services/queues/data-gathering/data-gathering.service';
import type { AssetProfileSplit } from '@ghostfolio/prisma/client';
import { DataSource } from '@ghostfolio/prisma/enums';
import { NotFoundException } from '@nestjs/common';
import { EventEmitter2 } from '@nestjs/event-emitter';
import { AssetProfileSplit, DataSource } from '@prisma/client';
import { AssetProfilesService } from './asset-profiles.service';

7
apps/api/src/app/endpoints/asset-profiles/asset-profiles.service.ts

@ -25,10 +25,15 @@ import {
Filter
} from '@ghostfolio/common/interfaces';
import { MarketDataPreset } from '@ghostfolio/common/types';
import { Prisma } from '@ghostfolio/prisma/client';
import {
AssetClass,
AssetSubClass,
DataSource
} from '@ghostfolio/prisma/enums';
import { Injectable, Logger, NotFoundException } from '@nestjs/common';
import { EventEmitter2 } from '@nestjs/event-emitter';
import { AssetClass, AssetSubClass, DataSource, Prisma } from '@prisma/client';
import { groupBy } from 'lodash-es';
@Injectable()

2
apps/api/src/app/endpoints/asset-profiles/get-asset-profiles.dto.ts

@ -1,7 +1,7 @@
import { SEARCH_QUERY_MAXIMUM_LENGTH } from '@ghostfolio/common/config';
import { MarketDataPreset } from '@ghostfolio/common/types';
import type { Prisma } from '@ghostfolio/prisma/client';
import { Prisma } from '@prisma/client';
import { Type } from 'class-transformer';
import {
IsIn,

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

@ -16,6 +16,7 @@ import type {
import { permissions } from '@ghostfolio/common/permissions';
import { scopes } from '@ghostfolio/common/scopes';
import type { ImpersonationContext } from '@ghostfolio/common/types';
import { DataSource } from '@ghostfolio/prisma/enums';
import {
Body,
@ -30,7 +31,6 @@ import {
UseInterceptors
} from '@nestjs/common';
import { AuthGuard } from '@nestjs/passport';
import { DataSource } from '@prisma/client';
import { StatusCodes, getReasonPhrase } from 'http-status-codes';
import { BenchmarksService } from './benchmarks.service';

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

@ -35,9 +35,10 @@ import {
QuotesResponse
} from '@ghostfolio/common/interfaces';
import { UserWithSettings } from '@ghostfolio/common/types';
import type { SymbolProfile } from '@ghostfolio/prisma/client';
import { DataSource } from '@ghostfolio/prisma/enums';
import { Injectable, Logger } from '@nestjs/common';
import { DataSource, SymbolProfile } from '@prisma/client';
import { Big } from 'big.js';
import { addMilliseconds, isBefore } from 'date-fns';
import { isEmpty } from 'lodash-es';

3
apps/api/src/app/endpoints/market-data/market-data.controller.ts

@ -9,6 +9,8 @@ import { getCurrencyFromSymbol, isCurrency } from '@ghostfolio/common/helper';
import { MarketDataOfMarketsResponse } from '@ghostfolio/common/interfaces';
import { hasPermission, permissions } from '@ghostfolio/common/permissions';
import type { RequestWithUser } from '@ghostfolio/common/types';
import type { Prisma } from '@ghostfolio/prisma/client';
import { DataSource } from '@ghostfolio/prisma/enums';
import {
Body,
@ -24,7 +26,6 @@ import {
} from '@nestjs/common';
import { REQUEST } from '@nestjs/core';
import { AuthGuard } from '@nestjs/passport';
import { DataSource, Prisma } from '@prisma/client';
import { parseISO } from 'date-fns';
import { getReasonPhrase, StatusCodes } from 'http-status-codes';

3
apps/api/src/app/endpoints/mcp/mcp.schemas.spec.ts

@ -7,8 +7,7 @@ import {
SEARCH_QUERY_MINIMUM_LENGTH,
SYMBOL_MAXIMUM_LENGTH
} from '@ghostfolio/common/config';
import { DataSource } from '@prisma/client';
import { DataSource } from '@ghostfolio/prisma/enums';
import {
GET_ACCOUNTS_PARAMETERS,

6
apps/api/src/app/endpoints/mcp/mcp.schemas.ts

@ -14,8 +14,12 @@ import {
isValidCurrencyCode,
isValidDateAfter1970
} from '@ghostfolio/common/helper';
import {
AssetClass,
DataSource,
Type as ActivityType
} from '@ghostfolio/prisma/enums';
import { AssetClass, DataSource, Type as ActivityType } from '@prisma/client';
import { z } from 'zod';
const DATA_SOURCE_PARAMETER_ERROR = `Invalid option: expected one of ${Object.values(DataSource).join('|')} or a data source as given by a tool`;

6
apps/api/src/app/endpoints/mcp/mcp.service.spec.ts

@ -13,14 +13,14 @@ import {
import { Activity, Filter } from '@ghostfolio/common/interfaces';
import { permissions } from '@ghostfolio/common/permissions';
import type { UserWithSettings } from '@ghostfolio/common/types';
import { HttpException } from '@nestjs/common';
import {
AssetClass,
AssetSubClass,
DataSource,
Type as ActivityType
} from '@prisma/client';
} from '@ghostfolio/prisma/enums';
import { HttpException } from '@nestjs/common';
import { McpService } from './mcp.service';
import { createActivity } from './mcp.test-utils';

2
apps/api/src/app/endpoints/mcp/mcp.test-utils.ts

@ -1,4 +1,4 @@
import { Type as ActivityType } from '@prisma/client';
import { Type as ActivityType } from '@ghostfolio/prisma/enums';
import { ActivityToImport } from './types/activity-to-import.type';

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

@ -11,9 +11,9 @@ import {
AccessSettings,
PublicPortfolioResponse
} from '@ghostfolio/common/interfaces';
import { Type as ActivityType } from '@ghostfolio/prisma/enums';
import { HttpException, Injectable } from '@nestjs/common';
import { Type as ActivityType } from '@prisma/client';
import { Big } from 'big.js';
import { StatusCodes, getReasonPhrase } from 'http-status-codes';

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

@ -6,6 +6,7 @@ import { CreateTagDto, UpdateTagDto } from '@ghostfolio/common/dtos';
import { isSystemTag } from '@ghostfolio/common/helper';
import { hasPermission, permissions } from '@ghostfolio/common/permissions';
import type { RequestWithUser } from '@ghostfolio/common/types';
import type { Tag } from '@ghostfolio/prisma/client';
import {
Body,
@ -21,7 +22,6 @@ import {
} from '@nestjs/common';
import { REQUEST } from '@nestjs/core';
import { AuthGuard } from '@nestjs/passport';
import { Tag } from '@prisma/client';
import { StatusCodes, getReasonPhrase } from 'http-status-codes';
@AllowDuringImpersonation()

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

@ -8,6 +8,7 @@ import { WatchlistResponse } from '@ghostfolio/common/interfaces';
import { permissions } from '@ghostfolio/common/permissions';
import { scopes } from '@ghostfolio/common/scopes';
import type { ImpersonationContext } from '@ghostfolio/common/types';
import { DataSource } from '@ghostfolio/prisma/enums';
import {
Body,
@ -19,7 +20,6 @@ import {
Post,
UseInterceptors
} from '@nestjs/common';
import { DataSource } from '@prisma/client';
import { StatusCodes, getReasonPhrase } from 'http-status-codes';
import { WatchlistService } from './watchlist.service';

2
apps/api/src/app/endpoints/watchlist/watchlist.service.ts

@ -10,9 +10,9 @@ import {
AssetProfileIdentifier,
WatchlistResponse
} from '@ghostfolio/common/interfaces';
import type { Prisma } from '@ghostfolio/prisma/client';
import { BadRequestException, Injectable } from '@nestjs/common';
import { Prisma } from '@prisma/client';
@Injectable()
export class WatchlistService {

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

@ -8,9 +8,10 @@ import {
Filter,
UserSettings
} from '@ghostfolio/common/interfaces';
import type { Platform, Prisma } from '@ghostfolio/prisma/client';
import { Type as ActivityType } from '@ghostfolio/prisma/enums';
import { Injectable } from '@nestjs/common';
import { Platform, Prisma, Type as ActivityType } from '@prisma/client';
import { groupBy, uniqBy } from 'lodash-es';
@Injectable()

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

@ -6,6 +6,7 @@ import {
DataProviderHealthResponse,
LivenessHealthResponse
} from '@ghostfolio/common/interfaces';
import { DataSource } from '@ghostfolio/prisma/enums';
import {
Controller,
@ -17,7 +18,6 @@ import {
Res,
UseInterceptors
} from '@nestjs/common';
import { DataSource } from '@prisma/client';
import { Response } from 'express';
import { StatusCodes, getReasonPhrase } from 'http-status-codes';

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

@ -3,9 +3,9 @@ import { DataEnhancerService } from '@ghostfolio/api/services/data-provider/data
import { DataProviderService } from '@ghostfolio/api/services/data-provider/data-provider.service';
import { PropertyService } from '@ghostfolio/api/services/property/property.service';
import { PROPERTY_CURRENCIES } from '@ghostfolio/common/config';
import { DataSource } from '@ghostfolio/prisma/enums';
import { Injectable } from '@nestjs/common';
import { DataSource } from '@prisma/client';
@Injectable()
export class HealthService {

3
apps/api/src/app/import/import-data.dto.spec.ts

@ -1,5 +1,6 @@
import { DataSource, Type } from '@ghostfolio/prisma/enums';
import { BadRequestException, ValidationPipe } from '@nestjs/common';
import { DataSource, Type } from '@prisma/client';
import { readFileSync } from 'node:fs';
import { join } from 'node:path';

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

@ -5,6 +5,7 @@ import { TransformDataSourceInResponseInterceptor } from '@ghostfolio/api/interc
import { ImportResponse } from '@ghostfolio/common/interfaces';
import { hasPermission, permissions } from '@ghostfolio/common/permissions';
import type { RequestWithUser } from '@ghostfolio/common/types';
import { DataSource } from '@ghostfolio/prisma/enums';
import {
Body,
@ -21,7 +22,6 @@ import {
} from '@nestjs/common';
import { REQUEST } from '@nestjs/core';
import { AuthGuard } from '@nestjs/passport';
import { DataSource } from '@prisma/client';
import { StatusCodes, getReasonPhrase } from 'http-status-codes';
import { ImportDataDto } from './import-data.dto';

3
apps/api/src/app/import/import.service.spec.ts

@ -13,8 +13,9 @@ import {
AssetProfileIdentifier
} from '@ghostfolio/common/interfaces';
import { UserWithSettings } from '@ghostfolio/common/types';
import type { SymbolProfile } from '@ghostfolio/prisma/client';
import { DataSource } from '@ghostfolio/prisma/enums';
import { DataSource, SymbolProfile } from '@prisma/client';
import { parseISO } from 'date-fns';
import { ImportService } from './import.service';

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

@ -41,9 +41,10 @@ import {
OrderWithAccount,
UserWithSettings
} from '@ghostfolio/common/types';
import { type Account, Prisma } from '@ghostfolio/prisma/client';
import { DataSource } from '@ghostfolio/prisma/enums';
import { Injectable } from '@nestjs/common';
import { Account, DataSource, Prisma } from '@prisma/client';
import { Big } from 'big.js';
import { isISIN } from 'class-validator';
import { isSameSecond, parseISO } from 'date-fns';

2
apps/api/src/app/import/interfaces/asset-profile-to-create.interface.ts

@ -1,4 +1,4 @@
import { Prisma } from '@prisma/client';
import type { Prisma } from '@ghostfolio/prisma/client';
export interface AssetProfileToCreate {
assetProfile: Prisma.SymbolProfileCreateInput;

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

@ -21,10 +21,10 @@ import {
} from '@ghostfolio/common/config';
import { InfoItem, Statistics } from '@ghostfolio/common/interfaces';
import { permissions } from '@ghostfolio/common/permissions';
import type { MarketData } from '@ghostfolio/prisma/client';
import { Injectable } from '@nestjs/common';
import { JwtService } from '@nestjs/jwt';
import { MarketData } from '@prisma/client';
import { subDays } from 'date-fns';
import { isNil } from 'lodash-es';

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

@ -1,4 +1,5 @@
import { TransformDataSourceInRequestInterceptor } from '@ghostfolio/api/interceptors/transform-data-source-in-request/transform-data-source-in-request.interceptor';
import { DataSource } from '@ghostfolio/prisma/enums';
import {
Controller,
@ -9,7 +10,6 @@ import {
Res,
UseInterceptors
} from '@nestjs/common';
import { DataSource } from '@prisma/client';
import { Response } from 'express';
import ms from 'ms';

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

@ -2,9 +2,9 @@ import { ConfigurationService } from '@ghostfolio/api/services/configuration/con
import { FetchService } from '@ghostfolio/api/services/fetch/fetch.service';
import { SymbolProfileService } from '@ghostfolio/api/services/symbol-profile/symbol-profile.service';
import { AssetProfileIdentifier } from '@ghostfolio/common/interfaces';
import { DataSource } from '@ghostfolio/prisma/enums';
import { HttpException, Injectable } from '@nestjs/common';
import { DataSource } from '@prisma/client';
import { StatusCodes, getReasonPhrase } from 'http-status-codes';
@Injectable()

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

@ -3,6 +3,7 @@ import { HasPermission } from '@ghostfolio/api/decorators/has-permission.decorat
import { HasPermissionGuard } from '@ghostfolio/api/guards/has-permission.guard';
import { CreatePlatformDto, UpdatePlatformDto } from '@ghostfolio/common/dtos';
import { permissions } from '@ghostfolio/common/permissions';
import type { Platform } from '@ghostfolio/prisma/client';
import {
Body,
@ -16,7 +17,6 @@ import {
UseGuards
} from '@nestjs/common';
import { AuthGuard } from '@nestjs/passport';
import { Platform } from '@prisma/client';
import { StatusCodes, getReasonPhrase } from 'http-status-codes';
import { PlatformService } from './platform.service';

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

@ -1,7 +1,7 @@
import { PrismaService } from '@ghostfolio/api/services/prisma/prisma.service';
import type { Platform, Prisma } from '@ghostfolio/prisma/client';
import { Injectable } from '@nestjs/common';
import { Platform, Prisma } from '@prisma/client';
@Injectable()
export class PlatformService {

2
apps/api/src/app/portfolio/calculator/portfolio-calculator.ts

@ -49,9 +49,9 @@ import {
} from '@ghostfolio/common/models';
import { GroupBy } from '@ghostfolio/common/types';
import { PerformanceCalculationType } from '@ghostfolio/common/types/performance-calculation-type.type';
import { AssetSubClass, DataSource } from '@ghostfolio/prisma/enums';
import { Logger } from '@nestjs/common';
import { AssetSubClass, DataSource } from '@prisma/client';
import { Big } from 'big.js';
import { plainToClass } from 'class-transformer';
import {

2
apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-cash.spec.ts

@ -21,8 +21,8 @@ import { PortfolioSnapshotServiceMock } from '@ghostfolio/api/services/queues/po
import { parseDate } from '@ghostfolio/common/helper';
import { PortfolioSnapshotHolding } from '@ghostfolio/common/models';
import { PerformanceCalculationType } from '@ghostfolio/common/types/performance-calculation-type.type';
import { DataSource } from '@ghostfolio/prisma/enums';
import { DataSource } from '@prisma/client';
import { Big } from 'big.js';
import { eachDayOfInterval } from 'date-fns';
import { randomUUID } from 'node:crypto';

3
apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-stock-split.spec.ts

@ -16,8 +16,9 @@ import { PortfolioSnapshotServiceMock } from '@ghostfolio/api/services/queues/po
import { parseDate } from '@ghostfolio/common/helper';
import { Activity } from '@ghostfolio/common/interfaces';
import { PerformanceCalculationType } from '@ghostfolio/common/types/performance-calculation-type.type';
import type { AssetProfileSplit } from '@ghostfolio/prisma/client';
import { DataSource } from '@ghostfolio/prisma/enums';
import { AssetProfileSplit, DataSource } from '@prisma/client';
import { Big } from 'big.js';
jest.mock('@ghostfolio/api/app/portfolio/current-rate.service', () => {

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

@ -1,6 +1,6 @@
import { parseDate, resetHours } from '@ghostfolio/common/helper';
import { DataSource } from '@ghostfolio/prisma/enums';
import { DataSource } from '@prisma/client';
import {
addDays,
eachDayOfInterval,

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

@ -4,13 +4,9 @@ import { MarketDataService } from '@ghostfolio/api/services/market-data/market-d
import { PropertyService } from '@ghostfolio/api/services/property/property.service';
import { resetHours } from '@ghostfolio/common/helper';
import { AssetProfileIdentifier } from '@ghostfolio/common/interfaces';
import type { MarketData, Order } from '@ghostfolio/prisma/client';
import { DataSource, Type as ActivityType } from '@ghostfolio/prisma/enums';
import {
DataSource,
MarketData,
Order,
Type as ActivityType
} from '@prisma/client';
import { addDays, subDays } from 'date-fns';
import { CurrentRateService } from './current-rate.service';

4
apps/api/src/app/portfolio/interfaces/holding-balance.interface.ts

@ -1,4 +1,6 @@
import { AssetSubClass, DataSource, Tag } from '@prisma/client';
import type { Tag } from '@ghostfolio/prisma/client';
import type { AssetSubClass, DataSource } from '@ghostfolio/prisma/enums';
import { Big } from 'big.js';
export interface HoldingBalance {

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

@ -32,6 +32,7 @@ import type {
ImpersonationContext,
RequestWithUser
} from '@ghostfolio/common/types';
import { DataSource } from '@ghostfolio/prisma/enums';
import {
Body,
@ -46,7 +47,6 @@ import {
Version
} from '@nestjs/common';
import { REQUEST } from '@nestjs/core';
import { DataSource } from '@prisma/client';
import { Big } from 'big.js';
import { StatusCodes, getReasonPhrase } from 'http-status-codes';

3
apps/api/src/app/portfolio/portfolio.service.spec.ts

@ -23,8 +23,9 @@ import {
PortfolioSummary
} from '@ghostfolio/common/interfaces';
import { AccountWithBalance } from '@ghostfolio/common/types';
import { Prisma } from '@ghostfolio/prisma/client';
import { AssetClass, DataSource } from '@ghostfolio/prisma/enums';
import { AssetClass, DataSource, Prisma } from '@prisma/client';
import { Big } from 'big.js';
import { randomUUID } from 'node:crypto';

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

@ -77,20 +77,17 @@ import {
UserWithSettings
} from '@ghostfolio/common/types';
import { PerformanceCalculationType } from '@ghostfolio/common/types/performance-calculation-type.type';
import { utc } from '@date-fns/utc';
import { Inject, Injectable, Logger } from '@nestjs/common';
import { REQUEST } from '@nestjs/core';
import type { Order, Platform, Prisma, Tag } from '@ghostfolio/prisma/client';
import {
Type as ActivityType,
AssetClass,
AssetSubClass,
DataSource,
Order,
Platform,
Prisma,
Tag
} from '@prisma/client';
DataSource
} from '@ghostfolio/prisma/enums';
import { utc } from '@date-fns/utc';
import { Inject, Injectable, Logger } from '@nestjs/common';
import { REQUEST } from '@nestjs/core';
import { Big } from 'big.js';
import {
differenceInDays,

3
apps/api/src/app/portfolio/update-holding-tags.dto.ts

@ -1,4 +1,5 @@
import { Tag } from '@prisma/client';
import type { Tag } from '@ghostfolio/prisma/client';
import { IsArray } from 'class-validator';
export class UpdateHoldingTagsDto {

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

@ -16,9 +16,9 @@ import {
SubscriptionOfferKey,
UserWithSettings
} from '@ghostfolio/common/types';
import { Prisma, type Subscription } from '@ghostfolio/prisma/client';
import { BadRequestException, Injectable, Logger } from '@nestjs/common';
import { Prisma, Subscription } from '@prisma/client';
import { addMilliseconds, isBefore } from 'date-fns';
import ms, { StringValue } from 'ms';
import Stripe from 'stripe';

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

@ -7,6 +7,7 @@ import {
SymbolItem
} from '@ghostfolio/common/interfaces';
import type { RequestWithUser } from '@ghostfolio/common/types';
import { DataSource } from '@ghostfolio/prisma/enums';
import { utc } from '@date-fns/utc';
import {
@ -22,7 +23,6 @@ import {
} from '@nestjs/common';
import { REQUEST } from '@nestjs/core';
import { AuthGuard } from '@nestjs/passport';
import { DataSource } from '@prisma/client';
import { isValid, parseISO } from 'date-fns';
import { StatusCodes, getReasonPhrase } from 'http-status-codes';
import { isEmpty } from 'lodash-es';

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

@ -32,6 +32,7 @@ import type {
ImpersonationContext,
RequestWithUser
} from '@ghostfolio/common/types';
import type { User as UserModel } from '@ghostfolio/prisma/client';
import {
Body,
@ -51,7 +52,6 @@ import { REQUEST } from '@nestjs/core';
import { JwtService } from '@nestjs/jwt';
import { AuthGuard } from '@nestjs/passport';
import { Throttle } from '@nestjs/throttler';
import { User as UserModel } from '@prisma/client';
import { StatusCodes, getReasonPhrase } from 'http-status-codes';
import { merge, size } from 'lodash-es';

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

@ -40,11 +40,12 @@ import {
import { getScopesOfAccess } from '@ghostfolio/common/scopes';
import { UserWithSettings } from '@ghostfolio/common/types';
import { PerformanceCalculationType } from '@ghostfolio/common/types/performance-calculation-type.type';
import { Prisma, type User } from '@ghostfolio/prisma/client';
import { Role } from '@ghostfolio/prisma/enums';
import { Injectable, Logger } from '@nestjs/common';
import { EventEmitter2 } from '@nestjs/event-emitter';
import { InjectThrottlerStorage, ThrottlerStorage } from '@nestjs/throttler';
import { Prisma, Role, User } from '@prisma/client';
import { differenceInDays, subDays } from 'date-fns';
import { isNil, without } from 'lodash-es';
import { createHmac } from 'node:crypto';

3
apps/api/src/dependencies.ts

@ -1,3 +1,4 @@
// Dependencies required by .config/prisma.ts in Docker container
// Dependencies required by Prisma-generated code and .config/prisma.ts in Docker container
import '@prisma/client/runtime/client';
import 'dotenv';
import 'dotenv-expand';

2
apps/api/src/dtos/filter.dto.ts

@ -1,6 +1,6 @@
import { SYMBOL_MAXIMUM_LENGTH } from '@ghostfolio/common/config';
import { AssetClass, DataSource } from '@ghostfolio/prisma/enums';
import { AssetClass, DataSource } from '@prisma/client';
import { Transform, TransformFnParams } from 'class-transformer';
import {
IsEnum,

2
apps/api/src/helper/account.helper.ts

@ -1,7 +1,7 @@
import { TAG_ID_EXCLUDE_FROM_ANALYSIS } from '@ghostfolio/common/config';
import { getStartOfUtcDateOfTomorrow } from '@ghostfolio/common/helper';
import type { Prisma } from '@ghostfolio/prisma/client';
import { Prisma } from '@prisma/client';
import { isAfter } from 'date-fns';
export const WHERE_ACCOUNT_NOT_EXCLUDED: Prisma.AccountWhereInput = {

3
apps/api/src/helper/activity.helper.ts

@ -2,8 +2,9 @@ import {
NON_INVESTMENT_ACTIVITY_TYPES,
TAG_ID_DRAFT
} from '@ghostfolio/common/config';
import type { Prisma } from '@ghostfolio/prisma/client';
import { Type as ActivityType } from '@ghostfolio/prisma/enums';
import { Prisma, Type as ActivityType } from '@prisma/client';
import { endOfToday, isAfter } from 'date-fns';
import { uniqBy } from 'lodash-es';

3
apps/api/src/helper/data-source.helper.spec.ts

@ -1,6 +1,5 @@
import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service';
import { DataSource } from '@prisma/client';
import { DataSource } from '@ghostfolio/prisma/enums';
import {
encodeDataSource,

3
apps/api/src/helper/data-source.helper.ts

@ -1,6 +1,7 @@
import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service';
import type { Prisma } from '@ghostfolio/prisma/client';
import { DataSource } from '@ghostfolio/prisma/enums';
import { DataSource, Prisma } from '@prisma/client';
import { isEmpty } from 'lodash-es';
import { createHash } from 'node:crypto';

3
apps/api/src/helper/portfolio.helper.ts

@ -1,6 +1,5 @@
import { PortfolioDetails } from '@ghostfolio/common/interfaces';
import { Type as ActivityType } from '@prisma/client';
import { Type as ActivityType } from '@ghostfolio/prisma/enums';
export function convertValuesToPercentages({
accounts,

2
apps/api/src/interceptors/transform-data-source-in-request/transform-data-source-in-request.interceptor.ts

@ -3,6 +3,7 @@ import {
transformDataSourceInRequest
} from '@ghostfolio/api/helper/data-source.helper';
import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service';
import { DataSource } from '@ghostfolio/prisma/enums';
import {
CallHandler,
@ -10,7 +11,6 @@ import {
Injectable,
NestInterceptor
} from '@nestjs/common';
import { DataSource } from '@prisma/client';
import { Observable } from 'rxjs';
@Injectable()

2
apps/api/src/interceptors/transform-data-source-in-response/transform-data-source-in-response.interceptor.ts

@ -6,6 +6,7 @@ import {
import { redactPaths } from '@ghostfolio/api/helper/object.helper';
import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service';
import { hasRole } from '@ghostfolio/common/permissions';
import { DataSource } from '@ghostfolio/prisma/enums';
import {
CallHandler,
@ -13,7 +14,6 @@ import {
Injectable,
NestInterceptor
} from '@nestjs/common';
import { DataSource } from '@prisma/client';
import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';

3
apps/api/src/models/rules/account-cluster-risk/current-investment.ts

@ -2,8 +2,7 @@ import { Rule } from '@ghostfolio/api/models/rule';
import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.service';
import { I18nService } from '@ghostfolio/api/services/i18n/i18n.service';
import { PortfolioDetails, RuleSettings } from '@ghostfolio/common/interfaces';
import { Account } from '@prisma/client';
import type { Account } from '@ghostfolio/prisma/client';
export class AccountClusterRiskCurrentInvestment extends Rule<Settings> {
private accounts: PortfolioDetails['accounts'];

3
apps/api/src/services/asset-profile-split/asset-profile-split.helper.spec.ts

@ -5,8 +5,9 @@ import {
import * as commonHelper from '@ghostfolio/common/helper';
import { parseDate } from '@ghostfolio/common/helper';
import { Activity } from '@ghostfolio/common/interfaces';
import type { AssetProfileSplit } from '@ghostfolio/prisma/client';
import { DataSource } from '@ghostfolio/prisma/enums';
import { AssetProfileSplit, DataSource } from '@prisma/client';
import { Big } from 'big.js';
import { adjustActivityBySplits } from './asset-profile-split.helper';

2
apps/api/src/services/asset-profile-split/asset-profile-split.helper.ts

@ -1,8 +1,8 @@
import { INVESTMENT_ACTIVITY_TYPES } from '@ghostfolio/common/config';
import { resetHours } from '@ghostfolio/common/helper';
import { Activity } from '@ghostfolio/common/interfaces';
import type { AssetProfileSplit } from '@ghostfolio/prisma/client';
import { AssetProfileSplit } from '@prisma/client';
import { Big } from 'big.js';
import { isBefore } from 'date-fns';

4
apps/api/src/services/asset-profile-split/asset-profile-split.service.spec.ts

@ -1,6 +1,6 @@
import { PrismaService } from '@ghostfolio/api/services/prisma/prisma.service';
import { AssetProfileSplit, DataSource } from '@prisma/client';
import type { AssetProfileSplit } from '@ghostfolio/prisma/client';
import { DataSource } from '@ghostfolio/prisma/enums';
import { AssetProfileSplitService } from './asset-profile-split.service';

2
apps/api/src/services/asset-profile-split/asset-profile-split.service.ts

@ -1,9 +1,9 @@
import { PrismaService } from '@ghostfolio/api/services/prisma/prisma.service';
import { resetHours } from '@ghostfolio/common/helper';
import { AssetProfileIdentifier } from '@ghostfolio/common/interfaces';
import type { AssetProfileSplit } from '@ghostfolio/prisma/client';
import { Injectable } from '@nestjs/common';
import { AssetProfileSplit } from '@prisma/client';
@Injectable()
export class AssetProfileSplitService {

2
apps/api/src/services/benchmark/benchmark.service.ts

@ -18,9 +18,9 @@ import {
BenchmarkProperty,
BenchmarkResponse
} from '@ghostfolio/common/interfaces';
import type { SymbolProfile } from '@ghostfolio/prisma/client';
import { Injectable, Logger } from '@nestjs/common';
import { SymbolProfile } from '@prisma/client';
import { Big } from 'big.js';
import { addHours, isPast, subDays } from 'date-fns';
import { round, uniqBy } from 'lodash-es';

2
apps/api/src/services/configuration/configuration.service.ts

@ -10,9 +10,9 @@ import {
DEFAULT_PROCESSOR_PORTFOLIO_SNAPSHOT_COMPUTATION_CONCURRENCY,
DEFAULT_PROCESSOR_PORTFOLIO_SNAPSHOT_COMPUTATION_TIMEOUT
} from '@ghostfolio/common/config';
import { DataSource } from '@ghostfolio/prisma/enums';
import { Injectable } from '@nestjs/common';
import { DataSource } from '@prisma/client';
import {
bool,
cleanEnv,

3
apps/api/src/services/data-provider/alpha-vantage/alpha-vantage.service.ts

@ -15,9 +15,10 @@ import {
DataProviderResponse,
LookupResponse
} from '@ghostfolio/common/interfaces';
import type { SymbolProfile } from '@ghostfolio/prisma/client';
import { DataSource } from '@ghostfolio/prisma/enums';
import { Injectable, OnModuleInit } from '@nestjs/common';
import { DataSource, SymbolProfile } from '@prisma/client';
import Alphavantage from 'alphavantage';
import { format, isAfter, isBefore, parse } from 'date-fns';

12
apps/api/src/services/data-provider/coingecko/coingecko.service.ts

@ -17,15 +17,15 @@ import {
LookupItem,
LookupResponse
} from '@ghostfolio/common/interfaces';
import { utc } from '@date-fns/utc';
import { Injectable, Logger, OnModuleInit } from '@nestjs/common';
import type { SymbolProfile } from '@ghostfolio/prisma/client';
import {
AssetClass,
AssetSubClass,
DataSource,
SymbolProfile
} from '@prisma/client';
DataSource
} from '@ghostfolio/prisma/enums';
import { utc } from '@date-fns/utc';
import { Injectable, Logger, OnModuleInit } from '@nestjs/common';
import { format, fromUnixTime, getUnixTime } from 'date-fns';
@Injectable()

2
apps/api/src/services/data-provider/data-enhancer/data-enhancer.service.ts

@ -1,7 +1,7 @@
import { DataEnhancerInterface } from '@ghostfolio/api/services/data-provider/interfaces/data-enhancer.interface';
import type { Prisma } from '@ghostfolio/prisma/client';
import { HttpException, Inject, Injectable } from '@nestjs/common';
import { Prisma } from '@prisma/client';
import { StatusCodes, getReasonPhrase } from 'http-status-codes';
import ms from 'ms';

12
apps/api/src/services/data-provider/data-enhancer/openfigi/openfigi.service.ts

@ -2,9 +2,9 @@ import { ConfigurationService } from '@ghostfolio/api/services/configuration/con
import { DataEnhancerInterface } from '@ghostfolio/api/services/data-provider/interfaces/data-enhancer.interface';
import { FetchService } from '@ghostfolio/api/services/fetch/fetch.service';
import { parseSymbol } from '@ghostfolio/common/helper';
import type { SymbolProfile } from '@ghostfolio/prisma/client';
import { Injectable } from '@nestjs/common';
import { SymbolProfile } from '@prisma/client';
@Injectable()
export class OpenFigiDataEnhancerService implements DataEnhancerInterface {
@ -24,12 +24,10 @@ export class OpenFigiDataEnhancerService implements DataEnhancerInterface {
response: Partial<SymbolProfile>;
symbol: string;
}): Promise<Partial<SymbolProfile>> {
if (
!(
response.assetClass === 'EQUITY' &&
(response.assetSubClass === 'ETF' || response.assetSubClass === 'STOCK')
)
) {
if (!(
response.assetClass === 'EQUITY' &&
(response.assetSubClass === 'ETF' || response.assetSubClass === 'STOCK')
)) {
return response;
}

2
apps/api/src/services/data-provider/data-enhancer/trackinsight/trackinsight.service.ts

@ -7,9 +7,9 @@ import { Holding } from '@ghostfolio/common/interfaces';
import { Country } from '@ghostfolio/common/interfaces/country.interface';
import { Sector } from '@ghostfolio/common/interfaces/sector.interface';
import { SectorName } from '@ghostfolio/common/types';
import type { SymbolProfile } from '@ghostfolio/prisma/client';
import { Injectable, Logger } from '@nestjs/common';
import { SymbolProfile } from '@prisma/client';
@Injectable()
export class TrackinsightDataEnhancerService implements DataEnhancerInterface {

11
apps/api/src/services/data-provider/data-enhancer/yahoo-finance/yahoo-finance.service.ts

@ -9,15 +9,14 @@ import {
} from '@ghostfolio/common/config';
import { isCurrencySymbol } from '@ghostfolio/common/helper';
import { SectorName } from '@ghostfolio/common/types';
import { Injectable, Logger } from '@nestjs/common';
import type { Prisma, SymbolProfile } from '@ghostfolio/prisma/client';
import {
AssetClass,
AssetSubClass,
DataSource,
Prisma,
SymbolProfile
} from '@prisma/client';
DataSource
} from '@ghostfolio/prisma/enums';
import { Injectable, Logger } from '@nestjs/common';
import { isISIN } from 'class-validator';
import YahooFinance from 'yahoo-finance2';
import type { Price } from 'yahoo-finance2/modules/quoteSummary-iface';

7
apps/api/src/services/data-provider/data-provider.service.ts

@ -36,10 +36,15 @@ import {
MarketDataOfMarketsResponse
} from '@ghostfolio/common/interfaces';
import type { Granularity, UserWithSettings } from '@ghostfolio/common/types';
import {
type MarketData,
Prisma,
type SymbolProfile
} from '@ghostfolio/prisma/client';
import { DataSource } from '@ghostfolio/prisma/enums';
import { utc } from '@date-fns/utc';
import { Inject, Injectable, Logger, OnModuleInit } from '@nestjs/common';
import { DataSource, MarketData, Prisma, SymbolProfile } from '@prisma/client';
import { Big } from 'big.js';
import { eachDayOfInterval, format, isValid } from 'date-fns';
import { groupBy, isEmpty, isNumber, omit, uniqWith } from 'lodash-es';

10
apps/api/src/services/data-provider/eod-historical-data/eod-historical-data.service.ts

@ -22,14 +22,14 @@ import {
LookupResponse
} from '@ghostfolio/common/interfaces';
import { MarketState } from '@ghostfolio/common/types';
import { Injectable, Logger, OnModuleInit } from '@nestjs/common';
import type { SymbolProfile } from '@ghostfolio/prisma/client';
import {
AssetClass,
AssetSubClass,
DataSource,
SymbolProfile
} from '@prisma/client';
DataSource
} from '@ghostfolio/prisma/enums';
import { Injectable, Logger, OnModuleInit } from '@nestjs/common';
import { addDays, format, isSameDay, isToday } from 'date-fns';
import { isNumber } from 'lodash-es';

10
apps/api/src/services/data-provider/financial-modeling-prep/financial-modeling-prep.service.ts

@ -29,14 +29,14 @@ import {
LookupResponse
} from '@ghostfolio/common/interfaces';
import { MarketState } from '@ghostfolio/common/types';
import { Injectable, Logger, OnModuleInit } from '@nestjs/common';
import type { SymbolProfile } from '@ghostfolio/prisma/client';
import {
AssetClass,
AssetSubClass,
DataSource,
SymbolProfile
} from '@prisma/client';
DataSource
} from '@ghostfolio/prisma/enums';
import { Injectable, Logger, OnModuleInit } from '@nestjs/common';
import { isISIN } from 'class-validator';
import {
addDays,

3
apps/api/src/services/data-provider/ghostfolio/ghostfolio.service.ts

@ -28,9 +28,10 @@ import {
QuotesResponse,
SymbolItem
} from '@ghostfolio/common/interfaces';
import type { SymbolProfile } from '@ghostfolio/prisma/client';
import { DataSource } from '@ghostfolio/prisma/enums';
import { Injectable, Logger } from '@nestjs/common';
import { DataSource, SymbolProfile } from '@prisma/client';
import { format } from 'date-fns';
import { StatusCodes } from 'http-status-codes';

3
apps/api/src/services/data-provider/google-sheets/google-sheets.service.ts

@ -16,9 +16,10 @@ import {
DataProviderResponse,
LookupResponse
} from '@ghostfolio/common/interfaces';
import type { SymbolProfile } from '@ghostfolio/prisma/client';
import { DataSource } from '@ghostfolio/prisma/enums';
import { Injectable, Logger } from '@nestjs/common';
import { DataSource, SymbolProfile } from '@prisma/client';
import { format } from 'date-fns';
import { GoogleSpreadsheet } from 'google-spreadsheet';

2
apps/api/src/services/data-provider/interfaces/data-enhancer.interface.ts

@ -1,4 +1,4 @@
import { SymbolProfile } from '@prisma/client';
import type { SymbolProfile } from '@ghostfolio/prisma/client';
export interface DataEnhancerInterface {
enhance({

4
apps/api/src/services/data-provider/interfaces/data-provider.interface.ts

@ -6,8 +6,8 @@ import {
MarketDataOfMarketsResponse
} from '@ghostfolio/common/interfaces';
import { Granularity } from '@ghostfolio/common/types';
import { DataSource, SymbolProfile } from '@prisma/client';
import type { SymbolProfile } from '@ghostfolio/prisma/client';
import type { DataSource } from '@ghostfolio/prisma/enums';
export interface DataProviderInterface {
canHandle(symbol: string): boolean;

3
apps/api/src/services/data-provider/manual/manual.service.spec.ts

@ -1,8 +1,7 @@
import { PrismaService } from '@ghostfolio/api/services/prisma/prisma.service';
import { SymbolProfileService } from '@ghostfolio/api/services/symbol-profile/symbol-profile.service';
import { EnhancedAssetProfile } from '@ghostfolio/common/interfaces';
import { DataSource } from '@prisma/client';
import { DataSource } from '@ghostfolio/prisma/enums';
import { ManualService } from './manual.service';

3
apps/api/src/services/data-provider/manual/manual.service.ts

@ -23,10 +23,11 @@ import {
LookupResponse,
ScraperConfiguration
} from '@ghostfolio/common/interfaces';
import type { SymbolProfile } from '@ghostfolio/prisma/client';
import { DataSource } from '@ghostfolio/prisma/enums';
import { utc } from '@date-fns/utc';
import { Injectable, Logger } from '@nestjs/common';
import { DataSource, SymbolProfile } from '@prisma/client';
import * as cheerio from 'cheerio';
import { addDays, format, isBefore } from 'date-fns';

3
apps/api/src/services/data-provider/rapid-api/rapid-api.service.ts

@ -19,10 +19,11 @@ import {
DataProviderResponse,
LookupResponse
} from '@ghostfolio/common/interfaces';
import type { SymbolProfile } from '@ghostfolio/prisma/client';
import { DataSource } from '@ghostfolio/prisma/enums';
import { utc } from '@date-fns/utc';
import { Injectable, Logger } from '@nestjs/common';
import { DataSource, SymbolProfile } from '@prisma/client';
import { format } from 'date-fns';
@Injectable()

3
apps/api/src/services/data-provider/yahoo-finance/yahoo-finance.service.ts

@ -18,10 +18,11 @@ import {
LookupItem,
LookupResponse
} from '@ghostfolio/common/interfaces';
import type { SymbolProfile } from '@ghostfolio/prisma/client';
import { DataSource } from '@ghostfolio/prisma/enums';
import { utc } from '@date-fns/utc';
import { Injectable, Logger } from '@nestjs/common';
import { DataSource, SymbolProfile } from '@prisma/client';
import { addDays, format, isSameDay } from 'date-fns';
import { ReasonPhrases, StatusCodes } from 'http-status-codes';
import { uniqBy } from 'lodash-es';

2
apps/api/src/services/impersonation/impersonation.service.spec.ts

@ -11,8 +11,8 @@ import {
scopes
} from '@ghostfolio/common/scopes';
import type { UserWithSettings } from '@ghostfolio/common/types';
import type { Access } from '@ghostfolio/prisma/client';
import { Access } from '@prisma/client';
import { addDays, subDays } from 'date-fns';
import { ImpersonationService } from './impersonation.service';

3
apps/api/src/services/impersonation/impersonation.service.ts

@ -14,9 +14,10 @@ import type {
ImpersonationContext,
UserWithSettings
} from '@ghostfolio/common/types';
import type { Access } from '@ghostfolio/prisma/client';
import { AccessType } from '@ghostfolio/prisma/enums';
import { Injectable } from '@nestjs/common';
import { Access, AccessType } from '@prisma/client';
@Injectable()
export class ImpersonationService {

8
apps/api/src/services/market-data/market-data.service.ts

@ -4,14 +4,10 @@ import { PrismaService } from '@ghostfolio/api/services/prisma/prisma.service';
import { DEFAULT_PROCESSOR_GATHER_HISTORICAL_MARKET_DATA_TIMEOUT } from '@ghostfolio/common/config';
import { resetHours } from '@ghostfolio/common/helper';
import { AssetProfileIdentifier } from '@ghostfolio/common/interfaces';
import type { MarketData, Prisma } from '@ghostfolio/prisma/client';
import { DataSource, MarketDataState } from '@ghostfolio/prisma/enums';
import { Injectable } from '@nestjs/common';
import {
DataSource,
MarketData,
MarketDataState,
Prisma
} from '@prisma/client';
@Injectable()
export class MarketDataService {

2
apps/api/src/services/portfolio-table/interfaces/holdings-table-context.interface.ts

@ -1,4 +1,4 @@
import { AssetClass, AssetSubClass } from '@prisma/client';
import type { AssetClass, AssetSubClass } from '@ghostfolio/prisma/enums';
import { DataSourceTableContext } from './data-source-table-context.interface';

7
apps/api/src/services/portfolio-table/portfolio-table.service.spec.ts

@ -17,8 +17,11 @@ import {
WatchlistResponse
} from '@ghostfolio/common/interfaces';
import { AccountWithValue } from '@ghostfolio/common/types';
import { AssetClass, AssetSubClass, DataSource } from '@prisma/client';
import {
AssetClass,
AssetSubClass,
DataSource
} from '@ghostfolio/prisma/enums';
import { PortfolioTableService } from './portfolio-table.service';

6
apps/api/src/services/portfolio-table/portfolio-table.service.ts

@ -18,14 +18,14 @@ import {
WatchlistResponse
} from '@ghostfolio/common/interfaces';
import { AccountWithValue, DateRange } from '@ghostfolio/common/types';
import { Injectable } from '@nestjs/common';
import {
AssetClass,
AssetSubClass,
DataSource,
Type as ActivityType
} from '@prisma/client';
} from '@ghostfolio/prisma/enums';
import { Injectable } from '@nestjs/common';
import { format } from 'date-fns';
import { DataSourceTableContext } from './interfaces/data-source-table-context.interface';

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save