From c1c73e145a30357d787899ad165e9e7169b15423 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Szymon=20=C5=81=C4=85giewka?= Date: Tue, 29 Sep 2026 19:40:51 +0200 Subject: [PATCH] Task/migrate client to prisma-client generated code (#7868) * Migrate client to prisma-client generated code * Update changelog --- .gitignore | 1 + CHANGELOG.md | 4 ++++ apps/api/eslint.config.cjs | 5 ++++- .../account-detail-dialog.component.ts | 2 +- .../admin-market-data.component.ts | 3 ++- .../asset-profile-dialog-host.component.ts | 2 +- .../asset-profile-dialog.component.ts | 22 ++++++++++--------- .../interfaces/interfaces.ts | 3 +-- .../create-asset-profile-dialog.component.ts | 2 +- .../admin-platform.component.ts | 2 +- .../interfaces/interfaces.ts | 2 +- .../interfaces/interfaces.ts | 2 +- .../benchmark-comparator.component.ts | 2 +- .../data-provider-status.component.ts | 2 +- .../holding-detail-dialog.component.ts | 2 +- .../interfaces/interfaces.ts | 3 +-- ...reate-or-update-access-dialog.component.ts | 2 +- .../user-detail-dialog.component.ts | 2 +- apps/client/src/app/interfaces/interfaces.ts | 3 ++- ...eate-or-update-account-dialog.component.ts | 2 +- .../interfaces/interfaces.ts | 3 +-- ...ate-or-update-activity-dialog.component.ts | 3 ++- .../types/activity-type.type.ts | 2 +- .../import-activities-dialog.component.ts | 2 +- .../interfaces/interfaces.ts | 3 +-- .../allocations/allocations-page.component.ts | 13 +++++------ .../analysis/analysis-page.component.ts | 2 +- .../src/app/services/ics/ics.service.ts | 2 +- .../app/services/import-activities.service.ts | 3 ++- eslint.config.cjs | 12 ++++++++++ libs/common/src/lib/config.ts | 8 ++++++- libs/common/src/lib/dtos/create-access.dto.ts | 2 +- ...eate-asset-profile-with-market-data.dto.ts | 2 +- .../src/lib/dtos/create-asset-profile.dto.ts | 7 +++++- libs/common/src/lib/dtos/create-order.dto.ts | 7 +++++- .../src/lib/dtos/create-watchlist-item.dto.ts | 2 +- .../src/lib/dtos/merge-asset-profile.dto.ts | 3 ++- .../lib/dtos/update-asset-profile-data.dto.ts | 3 ++- .../src/lib/dtos/update-asset-profile.dto.ts | 8 +++---- libs/common/src/lib/dtos/update-order.dto.ts | 7 +++++- libs/common/src/lib/helper.ts | 17 ++++++++------ .../src/lib/interfaces/access.interface.ts | 2 +- .../lib/interfaces/activities.interface.ts | 3 +-- .../admin-market-data-details.interface.ts | 2 +- .../lib/interfaces/admin-user.interface.ts | 3 ++- .../asset-class-selector-option.interface.ts | 2 +- .../asset-profile-identifier.interface.ts | 2 +- .../asset-profile-item.interface.ts | 6 ++++- .../data-provider-info.interface.ts | 2 +- .../enhanced-asset-profile.interface.ts | 2 +- .../src/lib/interfaces/info-item.interface.ts | 2 +- .../lib/interfaces/lookup-item.interface.ts | 6 ++++- .../portfolio-position.interface.ts | 3 +-- .../account-balances-response.interface.ts | 2 +- .../asset-profile-response.interface.ts | 2 +- ...tfolio-asset-profile-response.interface.ts | 2 +- .../data-provider-response.interface.ts | 3 +-- .../responses/export-response.interface.ts | 8 ++++++- .../responses/platforms-response.interface.ts | 2 +- .../portfolio-holding-response.interface.ts | 3 +-- .../public-portfolio-response.interface.ts | 3 +-- .../src/lib/interfaces/user-item.interface.ts | 2 +- .../lib/interfaces/user-settings.interface.ts | 3 +-- .../src/lib/interfaces/user.interface.ts | 4 ++-- .../lib/models/portfolio-snapshot-holding.ts | 3 ++- libs/common/src/lib/permissions.ts | 3 +-- libs/common/src/lib/scopes.ts | 3 +-- .../types/access-with-grantee-user.type.ts | 2 +- .../lib/types/account-with-balance.type.ts | 2 +- .../lib/types/account-with-platform.type.ts | 2 +- .../src/lib/types/account-with-value.type.ts | 2 +- .../src/lib/types/order-with-account.type.ts | 2 +- ...ag-with-account-and-activity-count.type.ts | 2 +- .../src/lib/types/user-with-settings.type.ts | 3 +-- .../activities-table.component.ts | 2 +- .../activity-type/activity-type.component.ts | 3 ++- .../interfaces/interfaces.ts | 3 +-- .../lib/entity-logo/entity-logo.component.ts | 2 +- .../interfaces/interfaces.ts | 3 +-- ...historical-market-data-editor.component.ts | 3 ++- .../entity-logo-image-source.service.mock.ts | 3 +-- .../portfolio-filter-form.util.ts | 4 ++-- .../portfolio-proportion-chart.component.ts | 2 +- libs/ui/src/lib/services/admin.service.ts | 6 ++++- libs/ui/src/lib/services/data.service.ts | 18 +++++++-------- .../tags-selector/interfaces/interfaces.ts | 2 +- nx.json | 3 ++- prisma/schema.prisma | 9 ++++++-- tsconfig.base.json | 2 ++ 89 files changed, 201 insertions(+), 136 deletions(-) diff --git a/.gitignore b/.gitignore index 58520c230b..5699a5929d 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ # compiled output /out-tsc +/prisma/generated /tmp # dependencies diff --git a/CHANGELOG.md b/CHANGELOG.md index ff42504d49..d90f853cd0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Added the total column to the table of the tag management in the admin control panel +### Changed + +- Migrated the client to the code generated by the new `prisma-client` generator of _Prisma_ + ## 3.75.0 - 2026-09-28 ### Changed diff --git a/apps/api/eslint.config.cjs b/apps/api/eslint.config.cjs index 043802a0df..07054e44b9 100644 --- a/apps/api/eslint.config.cjs +++ b/apps/api/eslint.config.cjs @@ -21,7 +21,10 @@ module.exports = [ { files: ['**/*.ts', '**/*.tsx'], // Override or add rules here - rules: {} + rules: { + // TODO: Remove once the API uses the code generated by the new prisma-client generator + '@typescript-eslint/no-restricted-imports': 'off' + } }, { files: ['**/*.js', '**/*.jsx'], diff --git a/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.component.ts b/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.component.ts index 75186b1744..b8c7f16dbc 100644 --- a/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.component.ts +++ b/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.component.ts @@ -16,6 +16,7 @@ import { } from '@ghostfolio/common/interfaces'; import { hasPermission, permissions } from '@ghostfolio/common/permissions'; import { hasScope, scopes } from '@ghostfolio/common/scopes'; +import type { Tag } from '@ghostfolio/prisma/browser'; import { GfAccountBalancesComponent } from '@ghostfolio/ui/account-balances'; import { GfActivitiesTableComponent } from '@ghostfolio/ui/activities-table'; import { GfDialogFooterComponent } from '@ghostfolio/ui/dialog-footer'; @@ -45,7 +46,6 @@ import { MatTableDataSource } from '@angular/material/table'; import { MatTabsModule } from '@angular/material/tabs'; import { NavigationStart, Router } from '@angular/router'; import { IonIcon } from '@ionic/angular/standalone'; -import { Tag } from '@prisma/client'; import { Big } from 'big.js'; import { format, parseISO } from 'date-fns'; import { addIcons } from 'ionicons'; diff --git a/apps/client/src/app/components/admin-market-data/admin-market-data.component.ts b/apps/client/src/app/components/admin-market-data/admin-market-data.component.ts index c01932b603..d1ea9d97eb 100644 --- a/apps/client/src/app/components/admin-market-data/admin-market-data.component.ts +++ b/apps/client/src/app/components/admin-market-data/admin-market-data.component.ts @@ -10,6 +10,8 @@ import { } from '@ghostfolio/common/interfaces'; import { hasPermission, permissions } from '@ghostfolio/common/permissions'; import { internalRoutes } from '@ghostfolio/common/routes/routes'; +import type { SymbolProfile } from '@ghostfolio/prisma/browser'; +import { AssetSubClass, DataSource } from '@ghostfolio/prisma/enums'; import { GfActivitiesFilterComponent } from '@ghostfolio/ui/activities-filter'; import { GfFabComponent } from '@ghostfolio/ui/fab'; import { translate } from '@ghostfolio/ui/i18n'; @@ -48,7 +50,6 @@ import { import { MatTableDataSource, MatTableModule } from '@angular/material/table'; import { Router, RouterModule } from '@angular/router'; import { IonIcon } from '@ionic/angular/standalone'; -import { AssetSubClass, DataSource, SymbolProfile } from '@prisma/client'; import { isUUID } from 'class-validator'; import { addIcons } from 'ionicons'; import { diff --git a/apps/client/src/app/components/admin-market-data/asset-profile-dialog-host/asset-profile-dialog-host.component.ts b/apps/client/src/app/components/admin-market-data/asset-profile-dialog-host/asset-profile-dialog-host.component.ts index 7b03762ff9..af83ef4a7d 100644 --- a/apps/client/src/app/components/admin-market-data/asset-profile-dialog-host/asset-profile-dialog-host.component.ts +++ b/apps/client/src/app/components/admin-market-data/asset-profile-dialog-host/asset-profile-dialog-host.component.ts @@ -5,6 +5,7 @@ import { } from '@ghostfolio/common/config'; import { AssetProfileIdentifier, User } from '@ghostfolio/common/interfaces'; import { internalRoutes } from '@ghostfolio/common/routes/routes'; +import { DataSource } from '@ghostfolio/prisma/enums'; import { AdminService } from '@ghostfolio/ui/services'; import { @@ -19,7 +20,6 @@ import { import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; import { MatDialog, MatDialogRef } from '@angular/material/dialog'; import { ActivatedRoute, Router } from '@angular/router'; -import { DataSource } from '@prisma/client'; import { DeviceDetectorService } from 'ngx-device-detector'; import { Subject } from 'rxjs'; import { distinctUntilChanged, map, takeUntil, tap } from 'rxjs/operators'; diff --git a/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts b/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts index b2b2293e1a..154211b918 100644 --- a/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts +++ b/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts @@ -29,6 +29,18 @@ import { } from '@ghostfolio/common/interfaces'; import { DateRange } from '@ghostfolio/common/types'; import { jsonValidator, validateObjectForForm } from '@ghostfolio/common/utils'; +import type { + AssetProfileSplit, + MarketData, + Prisma, + SymbolProfile +} from '@ghostfolio/prisma/browser'; +import { + AssetClass, + AssetSubClass, + DataGatheringFrequency, + DataSource +} from '@ghostfolio/prisma/enums'; import { GfCurrencySelectorComponent } from '@ghostfolio/ui/currency-selector'; import { GfEntityLogoComponent } from '@ghostfolio/ui/entity-logo'; import { GfHistoricalMarketDataEditorComponent } from '@ghostfolio/ui/historical-market-data-editor'; @@ -80,16 +92,6 @@ import { MatSelectModule } from '@angular/material/select'; import { MatSnackBar, MatSnackBarModule } from '@angular/material/snack-bar'; import { MatTabsModule } from '@angular/material/tabs'; import { IonIcon } from '@ionic/angular/standalone'; -import { - AssetClass, - AssetProfileSplit, - AssetSubClass, - DataGatheringFrequency, - DataSource, - MarketData, - Prisma, - SymbolProfile -} from '@prisma/client'; import { isUUID } from 'class-validator'; import { format } from 'date-fns'; import { StatusCodes } from 'http-status-codes'; diff --git a/apps/client/src/app/components/admin-market-data/asset-profile-dialog/interfaces/interfaces.ts b/apps/client/src/app/components/admin-market-data/asset-profile-dialog/interfaces/interfaces.ts index 6a966b4270..0f000364ee 100644 --- a/apps/client/src/app/components/admin-market-data/asset-profile-dialog/interfaces/interfaces.ts +++ b/apps/client/src/app/components/admin-market-data/asset-profile-dialog/interfaces/interfaces.ts @@ -1,6 +1,5 @@ import { ColorScheme } from '@ghostfolio/common/types'; - -import { DataSource } from '@prisma/client'; +import { DataSource } from '@ghostfolio/prisma/enums'; export interface AssetProfileDialogParams { colorScheme: ColorScheme; diff --git a/apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.component.ts b/apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.component.ts index b948708c2e..8b7ef793fc 100644 --- a/apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.component.ts +++ b/apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.component.ts @@ -4,6 +4,7 @@ import { PROPERTY_CURRENCIES } from '@ghostfolio/common/config'; import type { AssetProfileIdentifier } from '@ghostfolio/common/interfaces'; +import { DataSource } from '@ghostfolio/prisma/enums'; import { AdminService, DataService } from '@ghostfolio/ui/services'; import { GfSymbolAutocompleteComponent } from '@ghostfolio/ui/symbol-autocomplete'; @@ -31,7 +32,6 @@ import { MatDialogModule, MatDialogRef } from '@angular/material/dialog'; import { MatFormFieldModule } from '@angular/material/form-field'; import { MatInputModule } from '@angular/material/input'; import { MatRadioModule } from '@angular/material/radio'; -import { DataSource } from '@prisma/client'; import { isISO4217CurrencyCode } from 'class-validator'; import { switchMap } from 'rxjs'; diff --git a/apps/client/src/app/components/admin-platform/admin-platform.component.ts b/apps/client/src/app/components/admin-platform/admin-platform.component.ts index 00b5ff0db2..0e6ed66d9b 100644 --- a/apps/client/src/app/components/admin-platform/admin-platform.component.ts +++ b/apps/client/src/app/components/admin-platform/admin-platform.component.ts @@ -3,6 +3,7 @@ import { DEFAULT_PAGE_SIZE } from '@ghostfolio/common/config'; import { CreatePlatformDto, UpdatePlatformDto } from '@ghostfolio/common/dtos'; import { ConfirmationDialogType } from '@ghostfolio/common/enums'; import { getLocale, getLowercase } from '@ghostfolio/common/helper'; +import type { Platform } from '@ghostfolio/prisma/browser'; import { GfEntityLogoComponent } from '@ghostfolio/ui/entity-logo'; import { NotificationService } from '@ghostfolio/ui/notifications'; import { AdminService, DataService } from '@ghostfolio/ui/services'; @@ -28,7 +29,6 @@ import { MatSort, MatSortModule } from '@angular/material/sort'; import { MatTableDataSource, MatTableModule } from '@angular/material/table'; import { ActivatedRoute, Router, RouterModule } from '@angular/router'; import { IonIcon } from '@ionic/angular/standalone'; -import { Platform } from '@prisma/client'; import { addIcons } from 'ionicons'; import { createOutline, diff --git a/apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/interfaces/interfaces.ts b/apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/interfaces/interfaces.ts index d3b9ae5288..206cc14e79 100644 --- a/apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/interfaces/interfaces.ts +++ b/apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/interfaces/interfaces.ts @@ -1,4 +1,4 @@ -import { Platform } from '@prisma/client'; +import type { Platform } from '@ghostfolio/prisma/browser'; export interface CreateOrUpdatePlatformDialogParams { platform?: Platform; diff --git a/apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/interfaces/interfaces.ts b/apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/interfaces/interfaces.ts index f4b1104d00..b866ea47dd 100644 --- a/apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/interfaces/interfaces.ts +++ b/apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/interfaces/interfaces.ts @@ -1,4 +1,4 @@ -import { Tag } from '@prisma/client'; +import type { Tag } from '@ghostfolio/prisma/browser'; export interface CreateOrUpdateTagDialogParams { tag?: Pick; diff --git a/apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts b/apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts index 8d5e3ff62b..ef14b404e4 100644 --- a/apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts +++ b/apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts @@ -12,6 +12,7 @@ import { LineChartItem, User } from '@ghostfolio/common/interfaces'; import { hasPermission, permissions } from '@ghostfolio/common/permissions'; import { internalRoutes } from '@ghostfolio/common/routes/routes'; import { ColorScheme } from '@ghostfolio/common/types'; +import type { SymbolProfile } from '@ghostfolio/prisma/browser'; import { getTimeSeriesTooltipOptions, registerChartConfiguration @@ -32,7 +33,6 @@ import { FormsModule, ReactiveFormsModule } from '@angular/forms'; import { MatSelectModule } from '@angular/material/select'; import { RouterModule } from '@angular/router'; import { IonIcon } from '@ionic/angular/standalone'; -import { SymbolProfile } from '@prisma/client'; import { Chart, ChartData, diff --git a/apps/client/src/app/components/data-provider-status/data-provider-status.component.ts b/apps/client/src/app/components/data-provider-status/data-provider-status.component.ts index a77d65961a..13218623a0 100644 --- a/apps/client/src/app/components/data-provider-status/data-provider-status.component.ts +++ b/apps/client/src/app/components/data-provider-status/data-provider-status.component.ts @@ -1,3 +1,4 @@ +import type { DataSource } from '@ghostfolio/prisma/enums'; import { DataService } from '@ghostfolio/ui/services'; import { CommonModule } from '@angular/common'; @@ -9,7 +10,6 @@ import { OnInit } from '@angular/core'; import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; -import type { DataSource } from '@prisma/client'; import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader'; import { catchError, map, type Observable, of } from 'rxjs'; diff --git a/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts b/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts index d8385d70e2..4a16c1a4e2 100644 --- a/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts +++ b/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts @@ -25,6 +25,7 @@ import { import { hasPermission, permissions } from '@ghostfolio/common/permissions'; import { internalRoutes } from '@ghostfolio/common/routes/routes'; import { AccountWithValue } from '@ghostfolio/common/types'; +import type { MarketData, Tag } from '@ghostfolio/prisma/browser'; import { GfAccountsTableComponent } from '@ghostfolio/ui/accounts-table'; import { GfActivitiesTableComponent } from '@ghostfolio/ui/activities-table'; import { GfDataProviderCreditsComponent } from '@ghostfolio/ui/data-provider-credits'; @@ -69,7 +70,6 @@ import { MatTableDataSource } from '@angular/material/table'; import { MatTabsModule } from '@angular/material/tabs'; import { NavigationStart, Router, RouterModule } from '@angular/router'; import { IonIcon } from '@ionic/angular/standalone'; -import { MarketData, Tag } from '@prisma/client'; import { isUUID } from 'class-validator'; import { format, isSameMonth, isToday, parseISO } from 'date-fns'; import { addIcons } from 'ionicons'; diff --git a/apps/client/src/app/components/holding-detail-dialog/interfaces/interfaces.ts b/apps/client/src/app/components/holding-detail-dialog/interfaces/interfaces.ts index efc10d6ac3..5f33db42a3 100644 --- a/apps/client/src/app/components/holding-detail-dialog/interfaces/interfaces.ts +++ b/apps/client/src/app/components/holding-detail-dialog/interfaces/interfaces.ts @@ -1,6 +1,5 @@ import { ColorScheme } from '@ghostfolio/common/types'; - -import { DataSource } from '@prisma/client'; +import { DataSource } from '@ghostfolio/prisma/enums'; export interface HoldingDetailDialogParams { baseCurrency: string; diff --git a/apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts b/apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts index 9f119fc439..f58b19212b 100644 --- a/apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts +++ b/apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts @@ -15,6 +15,7 @@ import { } from '@ghostfolio/common/scopes'; import { AccessLevel, AccountWithPlatform } from '@ghostfolio/common/types'; import { validateObjectForForm } from '@ghostfolio/common/utils'; +import { AccessType } from '@ghostfolio/prisma/enums'; import { GfAccessLevelIconComponent } from '@ghostfolio/ui/access-level-icon'; import { NotificationService } from '@ghostfolio/ui/notifications'; import { @@ -57,7 +58,6 @@ import { MatFormFieldModule } from '@angular/material/form-field'; import { MatInputModule } from '@angular/material/input'; import { MatSelectModule } from '@angular/material/select'; import { IonIcon } from '@ionic/angular/standalone'; -import { AccessType } from '@prisma/client'; import { addDays, endOfDay, isValid, startOfDay } from 'date-fns'; import { StatusCodes } from 'http-status-codes'; import { addIcons } from 'ionicons'; diff --git a/apps/client/src/app/components/user-detail-dialog/user-detail-dialog.component.ts b/apps/client/src/app/components/user-detail-dialog/user-detail-dialog.component.ts index 3aec4d42c7..926fb8d8cd 100644 --- a/apps/client/src/app/components/user-detail-dialog/user-detail-dialog.component.ts +++ b/apps/client/src/app/components/user-detail-dialog/user-detail-dialog.component.ts @@ -4,6 +4,7 @@ import { getSum } from '@ghostfolio/common/helper'; import { AdminUserResponse } from '@ghostfolio/common/interfaces'; +import type { Subscription } from '@ghostfolio/prisma/browser'; import { AdminService, DataService } from '@ghostfolio/ui/services'; import { GfValueComponent } from '@ghostfolio/ui/value'; @@ -23,7 +24,6 @@ import { MatDialogModule } from '@angular/material/dialog'; import { MatMenuModule } from '@angular/material/menu'; import { MatTableDataSource, MatTableModule } from '@angular/material/table'; import { IonIcon } from '@ionic/angular/standalone'; -import { Subscription } from '@prisma/client'; import { Big } from 'big.js'; import { differenceInDays } from 'date-fns'; import { addIcons } from 'ionicons'; diff --git a/apps/client/src/app/interfaces/interfaces.ts b/apps/client/src/app/interfaces/interfaces.ts index 493eff4ab4..191fb42290 100644 --- a/apps/client/src/app/interfaces/interfaces.ts +++ b/apps/client/src/app/interfaces/interfaces.ts @@ -1,5 +1,6 @@ +import type { DataSource } from '@ghostfolio/prisma/enums'; + import type { Params } from '@angular/router'; -import type { DataSource } from '@prisma/client'; export interface GfAppQueryParams extends Params { dataSource?: DataSource; diff --git a/apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.component.ts b/apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.component.ts index ab3854b931..12f9075247 100644 --- a/apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.component.ts +++ b/apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.component.ts @@ -8,6 +8,7 @@ import { CreateAccountDto, UpdateAccountDto } from '@ghostfolio/common/dtos'; import { getStringOrNull } from '@ghostfolio/common/helper'; import { hasPermission, permissions } from '@ghostfolio/common/permissions'; import { validateObjectForForm } from '@ghostfolio/common/utils'; +import type { Platform, Tag } from '@ghostfolio/prisma/browser'; import { GfCurrencySelectorComponent } from '@ghostfolio/ui/currency-selector'; import { GfEntityLogoComponent } from '@ghostfolio/ui/entity-logo'; import { translate } from '@ghostfolio/ui/i18n'; @@ -39,7 +40,6 @@ import { } from '@angular/material/dialog'; import { MatFormFieldModule } from '@angular/material/form-field'; import { MatInputModule } from '@angular/material/input'; -import { Platform, Tag } from '@prisma/client'; import { Observable } from 'rxjs'; import { map, startWith } from 'rxjs/operators'; diff --git a/apps/client/src/app/pages/accounts/create-or-update-account-dialog/interfaces/interfaces.ts b/apps/client/src/app/pages/accounts/create-or-update-account-dialog/interfaces/interfaces.ts index 43015de004..c99cd17b7a 100644 --- a/apps/client/src/app/pages/accounts/create-or-update-account-dialog/interfaces/interfaces.ts +++ b/apps/client/src/app/pages/accounts/create-or-update-account-dialog/interfaces/interfaces.ts @@ -1,7 +1,6 @@ import { User } from '@ghostfolio/common/interfaces'; import { AccountWithBalance } from '@ghostfolio/common/types'; - -import { Tag } from '@prisma/client'; +import type { Tag } from '@ghostfolio/prisma/browser'; export interface CreateOrUpdateAccountDialogParams { account: Omit< diff --git a/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts b/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts index 3b7938c8c4..f24297dbd0 100644 --- a/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts +++ b/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts @@ -16,6 +16,8 @@ import { } from '@ghostfolio/common/interfaces'; import { hasPermission, permissions } from '@ghostfolio/common/permissions'; import { validateObjectForForm } from '@ghostfolio/common/utils'; +import type { Tag } from '@ghostfolio/prisma/browser'; +import { AssetClass, Type } from '@ghostfolio/prisma/enums'; import { GfAccountSelectorComponent } from '@ghostfolio/ui/account-selector'; import { translate } from '@ghostfolio/ui/i18n'; import { DataService } from '@ghostfolio/ui/services'; @@ -50,7 +52,6 @@ import { MatFormFieldModule } from '@angular/material/form-field'; import { MatInputModule } from '@angular/material/input'; import { MatSelectModule } from '@angular/material/select'; import { IonIcon } from '@ionic/angular/standalone'; -import { AssetClass, Tag, Type } from '@prisma/client'; import { isAfter, isToday } from 'date-fns'; import { addIcons } from 'ionicons'; import { calendarClearOutline, refreshOutline } from 'ionicons/icons'; diff --git a/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/types/activity-type.type.ts b/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/types/activity-type.type.ts index 6c3f32f284..cfb8452da4 100644 --- a/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/types/activity-type.type.ts +++ b/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/types/activity-type.type.ts @@ -1,4 +1,4 @@ -import { Type } from '@prisma/client'; +import { Type } from '@ghostfolio/prisma/enums'; export const ActivityType = { ...Type, diff --git a/apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts b/apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts index 98e0c0ad82..26255f2061 100644 --- a/apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts +++ b/apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -8,6 +8,7 @@ import { CreateTagDto } from '@ghostfolio/common/dtos'; import { Activity, PortfolioPosition } from '@ghostfolio/common/interfaces'; +import { AssetClass } from '@ghostfolio/prisma/enums'; import { GfActivitiesTableComponent } from '@ghostfolio/ui/activities-table'; import { GfDialogFooterComponent } from '@ghostfolio/ui/dialog-footer'; import { GfDialogHeaderComponent } from '@ghostfolio/ui/dialog-header'; @@ -48,7 +49,6 @@ import { SortDirection } from '@angular/material/sort'; import { MatStepper, MatStepperModule } from '@angular/material/stepper'; import { MatTableDataSource } from '@angular/material/table'; import { IonIcon } from '@ionic/angular/standalone'; -import { AssetClass } from '@prisma/client'; import { addIcons } from 'ionicons'; import { cloudUploadOutline, warningOutline } from 'ionicons/icons'; import { isArray, sortBy } from 'lodash'; diff --git a/apps/client/src/app/pages/portfolio/activities/import-activities-dialog/interfaces/interfaces.ts b/apps/client/src/app/pages/portfolio/activities/import-activities-dialog/interfaces/interfaces.ts index 051345e603..39749b1222 100644 --- a/apps/client/src/app/pages/portfolio/activities/import-activities-dialog/interfaces/interfaces.ts +++ b/apps/client/src/app/pages/portfolio/activities/import-activities-dialog/interfaces/interfaces.ts @@ -1,6 +1,5 @@ import { User } from '@ghostfolio/common/interfaces'; - -import { Type } from '@prisma/client'; +import { Type } from '@ghostfolio/prisma/enums'; export interface ImportActivitiesDialogParams { activityTypes?: Type[]; diff --git a/apps/client/src/app/pages/portfolio/allocations/allocations-page.component.ts b/apps/client/src/app/pages/portfolio/allocations/allocations-page.component.ts index ceda1d4c07..6d67b0253c 100644 --- a/apps/client/src/app/pages/portfolio/allocations/allocations-page.component.ts +++ b/apps/client/src/app/pages/portfolio/allocations/allocations-page.component.ts @@ -22,6 +22,12 @@ import { import { hasPermission, permissions } from '@ghostfolio/common/permissions'; import { hasScope, scopes } from '@ghostfolio/common/scopes'; import { MarketAdvanced } from '@ghostfolio/common/types'; +import type { Account, Platform } from '@ghostfolio/prisma/browser'; +import { + AssetClass, + AssetSubClass, + DataSource +} from '@ghostfolio/prisma/enums'; import { translate } from '@ghostfolio/ui/i18n'; import { GfPortfolioProportionChartComponent, @@ -47,13 +53,6 @@ import { MatCardModule } from '@angular/material/card'; import { MatDialog } from '@angular/material/dialog'; import { MatProgressBarModule } from '@angular/material/progress-bar'; import { ActivatedRoute, Router } from '@angular/router'; -import { - Account, - AssetClass, - AssetSubClass, - DataSource, - Platform -} from '@prisma/client'; import { isNumber } from 'lodash'; import { DeviceDetectorService } from 'ngx-device-detector'; import { filter, switchMap, tap } from 'rxjs'; diff --git a/apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts b/apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts index 450749925e..898c7f51a8 100644 --- a/apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts +++ b/apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts @@ -22,6 +22,7 @@ import type { ToggleOption } from '@ghostfolio/common/types'; import { PerformanceCalculationType } from '@ghostfolio/common/types/performance-calculation-type.type'; +import type { SymbolProfile } from '@ghostfolio/prisma/browser'; import { translate } from '@ghostfolio/ui/i18n'; import { GfPremiumIndicatorComponent } from '@ghostfolio/ui/premium-indicator'; import { DataService } from '@ghostfolio/ui/services'; @@ -48,7 +49,6 @@ import { MatProgressSpinnerModule } from '@angular/material/progress-spinner'; import { MatSnackBar } from '@angular/material/snack-bar'; import { RouterModule } from '@angular/router'; import { IonIcon } from '@ionic/angular/standalone'; -import { SymbolProfile } from '@prisma/client'; import { addIcons } from 'ionicons'; import { copyOutline, ellipsisVertical } from 'ionicons/icons'; import { isNumber, keyBy, sortBy, union } from 'lodash'; diff --git a/apps/client/src/app/services/ics/ics.service.ts b/apps/client/src/app/services/ics/ics.service.ts index d97b427c9e..90170dbb75 100644 --- a/apps/client/src/app/services/ics/ics.service.ts +++ b/apps/client/src/app/services/ics/ics.service.ts @@ -1,8 +1,8 @@ import { capitalize } from '@ghostfolio/common/helper'; import { ExportResponse } from '@ghostfolio/common/interfaces'; +import { Type } from '@ghostfolio/prisma/enums'; import { Service } from '@angular/core'; -import { Type } from '@prisma/client'; import { format, parseISO } from 'date-fns'; @Service() diff --git a/apps/client/src/app/services/import-activities.service.ts b/apps/client/src/app/services/import-activities.service.ts index 5c06b0e136..599c66551a 100644 --- a/apps/client/src/app/services/import-activities.service.ts +++ b/apps/client/src/app/services/import-activities.service.ts @@ -11,10 +11,11 @@ import { parseDate as parseDateHelper } from '@ghostfolio/common/helper'; import { Activity } from '@ghostfolio/common/interfaces'; +import type { Account } from '@ghostfolio/prisma/browser'; +import { DataSource, Type as ActivityType } from '@ghostfolio/prisma/enums'; import { HttpClient } from '@angular/common/http'; import { inject, Service } from '@angular/core'; -import { Account, DataSource, Type as ActivityType } from '@prisma/client'; import { isFinite, isNumber, isString } from 'lodash'; import { parse as csvToJson } from 'papaparse'; import { firstValueFrom } from 'rxjs'; diff --git a/eslint.config.cjs b/eslint.config.cjs index 1b4aa6a0c0..ee5e0a557c 100644 --- a/eslint.config.cjs +++ b/eslint.config.cjs @@ -83,6 +83,18 @@ module.exports = [ } ], '@typescript-eslint/no-non-null-assertion': 'warn', + '@typescript-eslint/no-restricted-imports': [ + 'error', + { + paths: [ + { + message: + 'Import the types from @ghostfolio/prisma/browser and the enums from @ghostfolio/prisma/enums instead.', + name: '@prisma/client' + } + ] + } + ], '@typescript-eslint/no-shadow': [ 'warn', { diff --git a/libs/common/src/lib/config.ts b/libs/common/src/lib/config.ts index 77e8542398..beedb741cb 100644 --- a/libs/common/src/lib/config.ts +++ b/libs/common/src/lib/config.ts @@ -1,4 +1,10 @@ -import { AssetClass, AssetSubClass, DataSource, Type } from '@prisma/client'; +import { + AssetClass, + AssetSubClass, + DataSource, + Type +} from '@ghostfolio/prisma/enums'; + import { JobOptions, JobStatus } from 'bull'; import ms from 'ms'; diff --git a/libs/common/src/lib/dtos/create-access.dto.ts b/libs/common/src/lib/dtos/create-access.dto.ts index 6fee6fcb66..82feac222c 100644 --- a/libs/common/src/lib/dtos/create-access.dto.ts +++ b/libs/common/src/lib/dtos/create-access.dto.ts @@ -1,8 +1,8 @@ import { Filter } from '@ghostfolio/common/interfaces'; import { Scope, scopes } from '@ghostfolio/common/scopes'; import { IsInTheFutureConstraint } from '@ghostfolio/common/validator-constraints/is-in-the-future'; +import { AccessType } from '@ghostfolio/prisma/enums'; -import { AccessType } from '@prisma/client'; import { IsArray, IsEnum, diff --git a/libs/common/src/lib/dtos/create-asset-profile-with-market-data.dto.ts b/libs/common/src/lib/dtos/create-asset-profile-with-market-data.dto.ts index 60afcb558b..096f9e27ca 100644 --- a/libs/common/src/lib/dtos/create-asset-profile-with-market-data.dto.ts +++ b/libs/common/src/lib/dtos/create-asset-profile-with-market-data.dto.ts @@ -1,6 +1,6 @@ import { MarketData } from '@ghostfolio/common/interfaces'; +import { DataSource } from '@ghostfolio/prisma/enums'; -import { DataSource } from '@prisma/client'; import { IsArray, IsIn, IsOptional } from 'class-validator'; import { CreateAssetProfileDto } from './create-asset-profile.dto'; diff --git a/libs/common/src/lib/dtos/create-asset-profile.dto.ts b/libs/common/src/lib/dtos/create-asset-profile.dto.ts index 4197137fb3..b4fe347071 100644 --- a/libs/common/src/lib/dtos/create-asset-profile.dto.ts +++ b/libs/common/src/lib/dtos/create-asset-profile.dto.ts @@ -3,8 +3,13 @@ import { SYMBOL_MAXIMUM_LENGTH } from '@ghostfolio/common/config'; import { IsCurrencyCode } from '@ghostfolio/common/validators/is-currency-code'; +import type { Prisma } from '@ghostfolio/prisma/browser'; +import { + AssetClass, + AssetSubClass, + DataSource +} from '@ghostfolio/prisma/enums'; -import { AssetClass, AssetSubClass, DataSource, Prisma } from '@prisma/client'; import { Type } from 'class-transformer'; import { IsArray, diff --git a/libs/common/src/lib/dtos/create-order.dto.ts b/libs/common/src/lib/dtos/create-order.dto.ts index 1345f418a1..fd062b610b 100644 --- a/libs/common/src/lib/dtos/create-order.dto.ts +++ b/libs/common/src/lib/dtos/create-order.dto.ts @@ -4,8 +4,13 @@ import { } from '@ghostfolio/common/config'; import { IsAfter1970Constraint } from '@ghostfolio/common/validator-constraints/is-after-1970'; import { IsCurrencyCode } from '@ghostfolio/common/validators/is-currency-code'; +import { + AssetClass, + AssetSubClass, + DataSource, + Type +} from '@ghostfolio/prisma/enums'; -import { AssetClass, AssetSubClass, DataSource, Type } from '@prisma/client'; import { Transform, TransformFnParams } from 'class-transformer'; import { ArrayUnique, diff --git a/libs/common/src/lib/dtos/create-watchlist-item.dto.ts b/libs/common/src/lib/dtos/create-watchlist-item.dto.ts index 78808a0246..ccf9414fa1 100644 --- a/libs/common/src/lib/dtos/create-watchlist-item.dto.ts +++ b/libs/common/src/lib/dtos/create-watchlist-item.dto.ts @@ -1,6 +1,6 @@ import { SYMBOL_MAXIMUM_LENGTH } from '@ghostfolio/common/config'; +import { DataSource } from '@ghostfolio/prisma/enums'; -import { DataSource } from '@prisma/client'; import { IsEnum, IsString, MaxLength } from 'class-validator'; export class CreateWatchlistItemDto { diff --git a/libs/common/src/lib/dtos/merge-asset-profile.dto.ts b/libs/common/src/lib/dtos/merge-asset-profile.dto.ts index f7b74bc4e2..9df79a6b8c 100644 --- a/libs/common/src/lib/dtos/merge-asset-profile.dto.ts +++ b/libs/common/src/lib/dtos/merge-asset-profile.dto.ts @@ -1,4 +1,5 @@ -import { DataSource } from '@prisma/client'; +import { DataSource } from '@ghostfolio/prisma/enums'; + import { IsEnum, IsString } from 'class-validator'; export class MergeAssetProfileDto { diff --git a/libs/common/src/lib/dtos/update-asset-profile-data.dto.ts b/libs/common/src/lib/dtos/update-asset-profile-data.dto.ts index a2f600fcd0..f94ea40fce 100644 --- a/libs/common/src/lib/dtos/update-asset-profile-data.dto.ts +++ b/libs/common/src/lib/dtos/update-asset-profile-data.dto.ts @@ -1,4 +1,5 @@ -import { Prisma } from '@prisma/client'; +import type { Prisma } from '@ghostfolio/prisma/browser'; + import { IsArray, IsOptional } from 'class-validator'; export class UpdateAssetProfileDataDto { diff --git a/libs/common/src/lib/dtos/update-asset-profile.dto.ts b/libs/common/src/lib/dtos/update-asset-profile.dto.ts index 965778761d..6e48ef0e04 100644 --- a/libs/common/src/lib/dtos/update-asset-profile.dto.ts +++ b/libs/common/src/lib/dtos/update-asset-profile.dto.ts @@ -3,14 +3,14 @@ import { SYMBOL_MAXIMUM_LENGTH } from '@ghostfolio/common/config'; import { IsCurrencyCode } from '@ghostfolio/common/validators/is-currency-code'; - +import type { Prisma } from '@ghostfolio/prisma/browser'; import { AssetClass, AssetSubClass, DataGatheringFrequency, - DataSource, - Prisma -} from '@prisma/client'; + DataSource +} from '@ghostfolio/prisma/enums'; + import { Type } from 'class-transformer'; import { IsArray, diff --git a/libs/common/src/lib/dtos/update-order.dto.ts b/libs/common/src/lib/dtos/update-order.dto.ts index 69d993559e..0e381f2069 100644 --- a/libs/common/src/lib/dtos/update-order.dto.ts +++ b/libs/common/src/lib/dtos/update-order.dto.ts @@ -4,8 +4,13 @@ import { } from '@ghostfolio/common/config'; import { IsAfter1970Constraint } from '@ghostfolio/common/validator-constraints/is-after-1970'; import { IsCurrencyCode } from '@ghostfolio/common/validators/is-currency-code'; +import { + AssetClass, + AssetSubClass, + DataSource, + Type +} from '@ghostfolio/prisma/enums'; -import { AssetClass, AssetSubClass, DataSource, Type } from '@prisma/client'; import { Transform, TransformFnParams } from 'class-transformer'; import { ArrayUnique, diff --git a/libs/common/src/lib/helper.ts b/libs/common/src/lib/helper.ts index 6e50911322..69764935d1 100644 --- a/libs/common/src/lib/helper.ts +++ b/libs/common/src/lib/helper.ts @@ -1,14 +1,17 @@ -import { utc } from '@date-fns/utc'; -import { NumberParser } from '@internationalized/number'; -import { - AccessType, - Type as ActivityType, +import type { AssetProfileOverrides, - AssetSubClass, MarketData, Prisma, SymbolProfile -} from '@prisma/client'; +} from '@ghostfolio/prisma/browser'; +import { + AccessType, + Type as ActivityType, + AssetSubClass +} from '@ghostfolio/prisma/enums'; + +import { utc } from '@date-fns/utc'; +import { NumberParser } from '@internationalized/number'; import { Big } from 'big.js'; import { isISO4217CurrencyCode, isUUID } from 'class-validator'; import { countries } from 'countries-list'; diff --git a/libs/common/src/lib/interfaces/access.interface.ts b/libs/common/src/lib/interfaces/access.interface.ts index 040bc2a8cc..182a0f3a49 100644 --- a/libs/common/src/lib/interfaces/access.interface.ts +++ b/libs/common/src/lib/interfaces/access.interface.ts @@ -1,4 +1,4 @@ -import { AccessType } from '@prisma/client'; +import { AccessType } from '@ghostfolio/prisma/enums'; import { AccessSettings } from './access-settings.interface'; diff --git a/libs/common/src/lib/interfaces/activities.interface.ts b/libs/common/src/lib/interfaces/activities.interface.ts index 4b8dd34350..2e9be921e3 100644 --- a/libs/common/src/lib/interfaces/activities.interface.ts +++ b/libs/common/src/lib/interfaces/activities.interface.ts @@ -1,7 +1,6 @@ import { EnhancedAssetProfile } from '@ghostfolio/common/interfaces'; import { AccountWithPlatform } from '@ghostfolio/common/types'; - -import { Order, Tag } from '@prisma/client'; +import type { Order, Tag } from '@ghostfolio/prisma/browser'; export interface Activity extends Order { account?: AccountWithPlatform; diff --git a/libs/common/src/lib/interfaces/admin-market-data-details.interface.ts b/libs/common/src/lib/interfaces/admin-market-data-details.interface.ts index 8cfe70f9c5..7a7bba7159 100644 --- a/libs/common/src/lib/interfaces/admin-market-data-details.interface.ts +++ b/libs/common/src/lib/interfaces/admin-market-data-details.interface.ts @@ -1,4 +1,4 @@ -import { AssetProfileSplit, MarketData } from '@prisma/client'; +import type { AssetProfileSplit, MarketData } from '@ghostfolio/prisma/browser'; import { EnhancedAssetProfile } from './enhanced-asset-profile.interface'; diff --git a/libs/common/src/lib/interfaces/admin-user.interface.ts b/libs/common/src/lib/interfaces/admin-user.interface.ts index a7cda68a81..a5c46d92f8 100644 --- a/libs/common/src/lib/interfaces/admin-user.interface.ts +++ b/libs/common/src/lib/interfaces/admin-user.interface.ts @@ -1,4 +1,5 @@ -import { Provider, Role, Subscription } from '@prisma/client'; +import type { Subscription } from '@ghostfolio/prisma/browser'; +import { Provider, Role } from '@ghostfolio/prisma/enums'; export interface AdminUser { accountCount: number; diff --git a/libs/common/src/lib/interfaces/asset-class-selector-option.interface.ts b/libs/common/src/lib/interfaces/asset-class-selector-option.interface.ts index b4b1060e43..ed8d580f9d 100644 --- a/libs/common/src/lib/interfaces/asset-class-selector-option.interface.ts +++ b/libs/common/src/lib/interfaces/asset-class-selector-option.interface.ts @@ -1,4 +1,4 @@ -import { AssetClass, AssetSubClass } from '@prisma/client'; +import { AssetClass, AssetSubClass } from '@ghostfolio/prisma/enums'; export interface AssetClassSelectorOption { id: AssetClass | AssetSubClass; diff --git a/libs/common/src/lib/interfaces/asset-profile-identifier.interface.ts b/libs/common/src/lib/interfaces/asset-profile-identifier.interface.ts index 48fc18c2f4..a031f3a488 100644 --- a/libs/common/src/lib/interfaces/asset-profile-identifier.interface.ts +++ b/libs/common/src/lib/interfaces/asset-profile-identifier.interface.ts @@ -1,4 +1,4 @@ -import { DataSource } from '@prisma/client'; +import { DataSource } from '@ghostfolio/prisma/enums'; export interface AssetProfileIdentifier { dataSource: DataSource; diff --git a/libs/common/src/lib/interfaces/asset-profile-item.interface.ts b/libs/common/src/lib/interfaces/asset-profile-item.interface.ts index 382e824cc6..a982f5050a 100644 --- a/libs/common/src/lib/interfaces/asset-profile-item.interface.ts +++ b/libs/common/src/lib/interfaces/asset-profile-item.interface.ts @@ -1,4 +1,8 @@ -import { AssetClass, AssetSubClass, DataSource } from '@prisma/client'; +import { + AssetClass, + AssetSubClass, + DataSource +} from '@ghostfolio/prisma/enums'; import { DataProviderInfo } from './data-provider-info.interface'; diff --git a/libs/common/src/lib/interfaces/data-provider-info.interface.ts b/libs/common/src/lib/interfaces/data-provider-info.interface.ts index 9fba0e62de..dd3c67d4f9 100644 --- a/libs/common/src/lib/interfaces/data-provider-info.interface.ts +++ b/libs/common/src/lib/interfaces/data-provider-info.interface.ts @@ -1,4 +1,4 @@ -import { DataSource } from '@prisma/client'; +import { DataSource } from '@ghostfolio/prisma/enums'; export interface DataProviderInfo { dataSource?: DataSource; diff --git a/libs/common/src/lib/interfaces/enhanced-asset-profile.interface.ts b/libs/common/src/lib/interfaces/enhanced-asset-profile.interface.ts index 9e3a022f78..88226d9872 100644 --- a/libs/common/src/lib/interfaces/enhanced-asset-profile.interface.ts +++ b/libs/common/src/lib/interfaces/enhanced-asset-profile.interface.ts @@ -3,7 +3,7 @@ import { AssetSubClass, DataGatheringFrequency, DataSource -} from '@prisma/client'; +} from '@ghostfolio/prisma/enums'; import { Country } from './country.interface'; import { DataProviderInfo } from './data-provider-info.interface'; diff --git a/libs/common/src/lib/interfaces/info-item.interface.ts b/libs/common/src/lib/interfaces/info-item.interface.ts index 96db7f9b06..355b19203c 100644 --- a/libs/common/src/lib/interfaces/info-item.interface.ts +++ b/libs/common/src/lib/interfaces/info-item.interface.ts @@ -1,4 +1,4 @@ -import { SymbolProfile } from '@prisma/client'; +import type { SymbolProfile } from '@ghostfolio/prisma/browser'; import { Statistics } from './statistics.interface'; import { SubscriptionOffer } from './subscription-offer.interface'; diff --git a/libs/common/src/lib/interfaces/lookup-item.interface.ts b/libs/common/src/lib/interfaces/lookup-item.interface.ts index 6cedeca09e..5c653acddd 100644 --- a/libs/common/src/lib/interfaces/lookup-item.interface.ts +++ b/libs/common/src/lib/interfaces/lookup-item.interface.ts @@ -1,4 +1,8 @@ -import { AssetClass, AssetSubClass, DataSource } from '@prisma/client'; +import { + AssetClass, + AssetSubClass, + DataSource +} from '@ghostfolio/prisma/enums'; import { DataProviderInfo } from './data-provider-info.interface'; diff --git a/libs/common/src/lib/interfaces/portfolio-position.interface.ts b/libs/common/src/lib/interfaces/portfolio-position.interface.ts index 65d7ea1405..dcb150d963 100644 --- a/libs/common/src/lib/interfaces/portfolio-position.interface.ts +++ b/libs/common/src/lib/interfaces/portfolio-position.interface.ts @@ -1,6 +1,5 @@ import { Market, MarketAdvanced } from '@ghostfolio/common/types'; - -import { Tag } from '@prisma/client'; +import type { Tag } from '@ghostfolio/prisma/browser'; import { EnhancedAssetProfile } from './enhanced-asset-profile.interface'; diff --git a/libs/common/src/lib/interfaces/responses/account-balances-response.interface.ts b/libs/common/src/lib/interfaces/responses/account-balances-response.interface.ts index a623baaff9..f56cd6ce89 100644 --- a/libs/common/src/lib/interfaces/responses/account-balances-response.interface.ts +++ b/libs/common/src/lib/interfaces/responses/account-balances-response.interface.ts @@ -1,4 +1,4 @@ -import { AccountBalance } from '@prisma/client'; +import type { AccountBalance } from '@ghostfolio/prisma/browser'; export interface AccountBalancesResponse { balances: (Pick & { diff --git a/libs/common/src/lib/interfaces/responses/asset-profile-response.interface.ts b/libs/common/src/lib/interfaces/responses/asset-profile-response.interface.ts index 26082c2c42..26ca5b29f9 100644 --- a/libs/common/src/lib/interfaces/responses/asset-profile-response.interface.ts +++ b/libs/common/src/lib/interfaces/responses/asset-profile-response.interface.ts @@ -1,4 +1,4 @@ -import { AssetProfileSplit, MarketData } from '@prisma/client'; +import type { AssetProfileSplit, MarketData } from '@ghostfolio/prisma/browser'; import { EnhancedAssetProfile } from '../enhanced-asset-profile.interface'; diff --git a/libs/common/src/lib/interfaces/responses/data-provider-ghostfolio-asset-profile-response.interface.ts b/libs/common/src/lib/interfaces/responses/data-provider-ghostfolio-asset-profile-response.interface.ts index 3ea635c6d2..41a9c513c0 100644 --- a/libs/common/src/lib/interfaces/responses/data-provider-ghostfolio-asset-profile-response.interface.ts +++ b/libs/common/src/lib/interfaces/responses/data-provider-ghostfolio-asset-profile-response.interface.ts @@ -1,3 +1,3 @@ -import { SymbolProfile } from '@prisma/client'; +import type { SymbolProfile } from '@ghostfolio/prisma/browser'; export interface DataProviderGhostfolioAssetProfileResponse extends Partial {} diff --git a/libs/common/src/lib/interfaces/responses/data-provider-response.interface.ts b/libs/common/src/lib/interfaces/responses/data-provider-response.interface.ts index ff152b1b2f..d46c6ff5e3 100644 --- a/libs/common/src/lib/interfaces/responses/data-provider-response.interface.ts +++ b/libs/common/src/lib/interfaces/responses/data-provider-response.interface.ts @@ -1,7 +1,6 @@ import { DataProviderInfo } from '@ghostfolio/common/interfaces'; import { MarketState } from '@ghostfolio/common/types'; - -import { DataSource } from '@prisma/client'; +import { DataSource } from '@ghostfolio/prisma/enums'; export interface DataProviderHistoricalResponse { marketPrice: number; diff --git a/libs/common/src/lib/interfaces/responses/export-response.interface.ts b/libs/common/src/lib/interfaces/responses/export-response.interface.ts index 4d49afebd9..6f643ec1a1 100644 --- a/libs/common/src/lib/interfaces/responses/export-response.interface.ts +++ b/libs/common/src/lib/interfaces/responses/export-response.interface.ts @@ -1,4 +1,10 @@ -import { Account, Order, Platform, SymbolProfile, Tag } from '@prisma/client'; +import type { + Account, + Order, + Platform, + SymbolProfile, + Tag +} from '@ghostfolio/prisma/browser'; import { AccountBalance } from '../account-balance.interface'; import { AssetProfileIdentifier } from '../asset-profile-identifier.interface'; diff --git a/libs/common/src/lib/interfaces/responses/platforms-response.interface.ts b/libs/common/src/lib/interfaces/responses/platforms-response.interface.ts index 552912d9d6..a6bfc4326c 100644 --- a/libs/common/src/lib/interfaces/responses/platforms-response.interface.ts +++ b/libs/common/src/lib/interfaces/responses/platforms-response.interface.ts @@ -1,4 +1,4 @@ -import { Platform } from '@prisma/client'; +import type { Platform } from '@ghostfolio/prisma/browser'; export interface PlatformsResponse { platforms: Platform[]; diff --git a/libs/common/src/lib/interfaces/responses/portfolio-holding-response.interface.ts b/libs/common/src/lib/interfaces/responses/portfolio-holding-response.interface.ts index 80eaa6458c..a3ab21705c 100644 --- a/libs/common/src/lib/interfaces/responses/portfolio-holding-response.interface.ts +++ b/libs/common/src/lib/interfaces/responses/portfolio-holding-response.interface.ts @@ -4,8 +4,7 @@ import { EnhancedAssetProfile, HistoricalDataItem } from '@ghostfolio/common/interfaces'; - -import { Tag } from '@prisma/client'; +import type { Tag } from '@ghostfolio/prisma/browser'; export interface PortfolioHoldingResponse { activitiesCount: number; diff --git a/libs/common/src/lib/interfaces/responses/public-portfolio-response.interface.ts b/libs/common/src/lib/interfaces/responses/public-portfolio-response.interface.ts index 616dbac992..bf6e91bd9a 100644 --- a/libs/common/src/lib/interfaces/responses/public-portfolio-response.interface.ts +++ b/libs/common/src/lib/interfaces/responses/public-portfolio-response.interface.ts @@ -4,8 +4,7 @@ import { PortfolioPosition } from '@ghostfolio/common/interfaces'; import { Market } from '@ghostfolio/common/types'; - -import { Order } from '@prisma/client'; +import type { Order } from '@ghostfolio/prisma/browser'; export interface PublicPortfolioResponse extends PublicPortfolioResponseV1 { alias?: string; diff --git a/libs/common/src/lib/interfaces/user-item.interface.ts b/libs/common/src/lib/interfaces/user-item.interface.ts index 32230b69ef..b5ca9d9ce6 100644 --- a/libs/common/src/lib/interfaces/user-item.interface.ts +++ b/libs/common/src/lib/interfaces/user-item.interface.ts @@ -1,4 +1,4 @@ -import { Role } from '@prisma/client'; +import { Role } from '@ghostfolio/prisma/enums'; export interface UserItem { accessToken?: string; diff --git a/libs/common/src/lib/interfaces/user-settings.interface.ts b/libs/common/src/lib/interfaces/user-settings.interface.ts index 65325a42f8..dc6fb5c369 100644 --- a/libs/common/src/lib/interfaces/user-settings.interface.ts +++ b/libs/common/src/lib/interfaces/user-settings.interface.ts @@ -6,8 +6,7 @@ import { ViewMode } from '@ghostfolio/common/types'; import { PerformanceCalculationType } from '@ghostfolio/common/types/performance-calculation-type.type'; - -import { AssetClass } from '@prisma/client'; +import { AssetClass } from '@ghostfolio/prisma/enums'; export interface UserSettings { annualInterestRate?: number; diff --git a/libs/common/src/lib/interfaces/user.interface.ts b/libs/common/src/lib/interfaces/user.interface.ts index b6493c814a..ff0f6646f5 100644 --- a/libs/common/src/lib/interfaces/user.interface.ts +++ b/libs/common/src/lib/interfaces/user.interface.ts @@ -1,7 +1,7 @@ import { SubscriptionType } from '@ghostfolio/common/enums'; import { AccountWithPlatform } from '@ghostfolio/common/types'; - -import { Access, Tag, Type as ActivityType } from '@prisma/client'; +import type { Access, Tag } from '@ghostfolio/prisma/browser'; +import { Type as ActivityType } from '@ghostfolio/prisma/enums'; import { ReferralPartner } from './referral-partner.interface'; import { SubscriptionOffer } from './subscription-offer.interface'; diff --git a/libs/common/src/lib/models/portfolio-snapshot-holding.ts b/libs/common/src/lib/models/portfolio-snapshot-holding.ts index 21d375fd4a..9b440b9782 100644 --- a/libs/common/src/lib/models/portfolio-snapshot-holding.ts +++ b/libs/common/src/lib/models/portfolio-snapshot-holding.ts @@ -3,8 +3,9 @@ import { transformToMapOfBig } from '@ghostfolio/common/class-transformer'; import { DateRange } from '@ghostfolio/common/types'; +import type { Tag } from '@ghostfolio/prisma/browser'; +import { DataSource } from '@ghostfolio/prisma/enums'; -import { DataSource, Tag } from '@prisma/client'; import { Big } from 'big.js'; import { Expose, Transform, Type } from 'class-transformer'; diff --git a/libs/common/src/lib/permissions.ts b/libs/common/src/lib/permissions.ts index 753bdf131a..d2b23e871a 100644 --- a/libs/common/src/lib/permissions.ts +++ b/libs/common/src/lib/permissions.ts @@ -1,6 +1,5 @@ import { UserWithSettings } from '@ghostfolio/common/types'; - -import { Role } from '@prisma/client'; +import { Role } from '@ghostfolio/prisma/enums'; export const permissions = { accessAdminControl: 'accessAdminControl', diff --git a/libs/common/src/lib/scopes.ts b/libs/common/src/lib/scopes.ts index 1c8efab431..635530a9e2 100644 --- a/libs/common/src/lib/scopes.ts +++ b/libs/common/src/lib/scopes.ts @@ -1,6 +1,5 @@ import { AccessLevel } from '@ghostfolio/common/types'; - -import { AccessType } from '@prisma/client'; +import { AccessType } from '@ghostfolio/prisma/enums'; /** * Scopes describe what a grantee may do on behalf of the granting user. They diff --git a/libs/common/src/lib/types/access-with-grantee-user.type.ts b/libs/common/src/lib/types/access-with-grantee-user.type.ts index 2fc2488eec..ea04986979 100644 --- a/libs/common/src/lib/types/access-with-grantee-user.type.ts +++ b/libs/common/src/lib/types/access-with-grantee-user.type.ts @@ -1,3 +1,3 @@ -import { Access, User } from '@prisma/client'; +import type { Access, User } from '@ghostfolio/prisma/browser'; export type AccessWithGranteeUser = Access & { granteeUser?: User | null }; diff --git a/libs/common/src/lib/types/account-with-balance.type.ts b/libs/common/src/lib/types/account-with-balance.type.ts index 72732f3a6d..46e0e16548 100644 --- a/libs/common/src/lib/types/account-with-balance.type.ts +++ b/libs/common/src/lib/types/account-with-balance.type.ts @@ -1,4 +1,4 @@ -import { Account as AccountModel } from '@prisma/client'; +import type { Account as AccountModel } from '@ghostfolio/prisma/browser'; export type AccountWithBalance = AccountModel & { balance: number; diff --git a/libs/common/src/lib/types/account-with-platform.type.ts b/libs/common/src/lib/types/account-with-platform.type.ts index 640245e3bc..cccec2e522 100644 --- a/libs/common/src/lib/types/account-with-platform.type.ts +++ b/libs/common/src/lib/types/account-with-platform.type.ts @@ -1,4 +1,4 @@ -import { Account, Platform, Tag } from '@prisma/client'; +import type { Account, Platform, Tag } from '@ghostfolio/prisma/browser'; export type AccountWithPlatform = Account & { platform?: Platform; diff --git a/libs/common/src/lib/types/account-with-value.type.ts b/libs/common/src/lib/types/account-with-value.type.ts index 0d43c612f7..0fb9a58e2b 100644 --- a/libs/common/src/lib/types/account-with-value.type.ts +++ b/libs/common/src/lib/types/account-with-value.type.ts @@ -1,4 +1,4 @@ -import { Platform, Tag } from '@prisma/client'; +import type { Platform, Tag } from '@ghostfolio/prisma/browser'; import { AccountWithBalance } from './account-with-balance.type'; diff --git a/libs/common/src/lib/types/order-with-account.type.ts b/libs/common/src/lib/types/order-with-account.type.ts index b3ae4a990a..cff844707f 100644 --- a/libs/common/src/lib/types/order-with-account.type.ts +++ b/libs/common/src/lib/types/order-with-account.type.ts @@ -1,4 +1,4 @@ -import { Order, SymbolProfile, Tag } from '@prisma/client'; +import type { Order, SymbolProfile, Tag } from '@ghostfolio/prisma/browser'; import { AccountWithPlatform } from './account-with-platform.type'; diff --git a/libs/common/src/lib/types/tag-with-account-and-activity-count.type.ts b/libs/common/src/lib/types/tag-with-account-and-activity-count.type.ts index 662e0f5ce9..36ef4a56e4 100644 --- a/libs/common/src/lib/types/tag-with-account-and-activity-count.type.ts +++ b/libs/common/src/lib/types/tag-with-account-and-activity-count.type.ts @@ -1,4 +1,4 @@ -import { Tag } from '@prisma/client'; +import type { Tag } from '@ghostfolio/prisma/browser'; export type TagWithAccountAndActivityCount = Tag & { accountCount: number; diff --git a/libs/common/src/lib/types/user-with-settings.type.ts b/libs/common/src/lib/types/user-with-settings.type.ts index 4c4a85a45c..24be244b39 100644 --- a/libs/common/src/lib/types/user-with-settings.type.ts +++ b/libs/common/src/lib/types/user-with-settings.type.ts @@ -1,7 +1,6 @@ import { SubscriptionType } from '@ghostfolio/common/enums'; import { SubscriptionOffer, UserSettings } from '@ghostfolio/common/interfaces'; - -import { Account, Settings, User } from '@prisma/client'; +import type { Account, Settings, User } from '@ghostfolio/prisma/browser'; // TODO: Compare with User interface export type UserWithSettings = User & { diff --git a/libs/ui/src/lib/activities-table/activities-table.component.ts b/libs/ui/src/lib/activities-table/activities-table.component.ts index 4646606577..56a2c6abec 100644 --- a/libs/ui/src/lib/activities-table/activities-table.component.ts +++ b/libs/ui/src/lib/activities-table/activities-table.component.ts @@ -6,6 +6,7 @@ import { AssetProfileIdentifier } from '@ghostfolio/common/interfaces'; import { internalRoutes } from '@ghostfolio/common/routes/routes'; +import { Type as ActivityType } from '@ghostfolio/prisma/enums'; import { translate } from '@ghostfolio/ui/i18n'; import { NotificationService } from '@ghostfolio/ui/notifications'; @@ -48,7 +49,6 @@ import { MatTableDataSource, MatTableModule } from '@angular/material/table'; import { MatTooltipModule } from '@angular/material/tooltip'; import { RouterModule } from '@angular/router'; import { IonIcon } from '@ionic/angular/standalone'; -import { Type as ActivityType } from '@prisma/client'; import { isUUID } from 'class-validator'; import { addIcons } from 'ionicons'; import { diff --git a/libs/ui/src/lib/activity-type/activity-type.component.ts b/libs/ui/src/lib/activity-type/activity-type.component.ts index 7bd0e6975d..acc7a27e25 100644 --- a/libs/ui/src/lib/activity-type/activity-type.component.ts +++ b/libs/ui/src/lib/activity-type/activity-type.component.ts @@ -1,3 +1,5 @@ +import { Type as ActivityType } from '@ghostfolio/prisma/enums'; + import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, @@ -6,7 +8,6 @@ import { OnChanges } from '@angular/core'; import { IonIcon } from '@ionic/angular/standalone'; -import { Type as ActivityType } from '@prisma/client'; import { addIcons } from 'ionicons'; import { addCircleOutline, diff --git a/libs/ui/src/lib/benchmark/benchmark-detail-dialog/interfaces/interfaces.ts b/libs/ui/src/lib/benchmark/benchmark-detail-dialog/interfaces/interfaces.ts index b01403284b..80d09148c9 100644 --- a/libs/ui/src/lib/benchmark/benchmark-detail-dialog/interfaces/interfaces.ts +++ b/libs/ui/src/lib/benchmark/benchmark-detail-dialog/interfaces/interfaces.ts @@ -1,6 +1,5 @@ import { ColorScheme } from '@ghostfolio/common/types'; - -import { DataSource } from '@prisma/client'; +import { DataSource } from '@ghostfolio/prisma/enums'; export interface BenchmarkDetailDialogParams { colorScheme?: ColorScheme; diff --git a/libs/ui/src/lib/entity-logo/entity-logo.component.ts b/libs/ui/src/lib/entity-logo/entity-logo.component.ts index 8a788e0c80..989a67214e 100644 --- a/libs/ui/src/lib/entity-logo/entity-logo.component.ts +++ b/libs/ui/src/lib/entity-logo/entity-logo.component.ts @@ -1,4 +1,5 @@ import { getEmojiFlag } from '@ghostfolio/common/helper'; +import { DataSource } from '@ghostfolio/prisma/enums'; import { EntityLogoImageSourceService } from '@ghostfolio/ui/entity-logo/entity-logo-image-source.service'; import { @@ -8,7 +9,6 @@ import { Input, OnChanges } from '@angular/core'; -import { DataSource } from '@prisma/client'; @Component({ changeDetection: ChangeDetectionStrategy.OnPush, diff --git a/libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/interfaces/interfaces.ts b/libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/interfaces/interfaces.ts index edb9a852f5..fcc98c271e 100644 --- a/libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/interfaces/interfaces.ts +++ b/libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/interfaces/interfaces.ts @@ -1,6 +1,5 @@ import { User } from '@ghostfolio/common/interfaces'; - -import { DataSource } from '@prisma/client'; +import { DataSource } from '@ghostfolio/prisma/enums'; export interface HistoricalMarketDataEditorDialogParams { currency: string; diff --git a/libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts b/libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts index aa6177cff9..401fd84523 100644 --- a/libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts +++ b/libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts @@ -5,6 +5,8 @@ import { getLocale } from '@ghostfolio/common/helper'; import { LineChartItem, User } from '@ghostfolio/common/interfaces'; +import type { MarketData } from '@ghostfolio/prisma/browser'; +import { DataSource } from '@ghostfolio/prisma/enums'; import { DataService } from '@ghostfolio/ui/services'; import { CommonModule } from '@angular/common'; @@ -28,7 +30,6 @@ import { MatButtonModule } from '@angular/material/button'; import { MatDialog } from '@angular/material/dialog'; import { MatInputModule } from '@angular/material/input'; import { MatSnackBar } from '@angular/material/snack-bar'; -import { DataSource, MarketData } from '@prisma/client'; import { addDays, addMonths, diff --git a/libs/ui/src/lib/mocks/entity-logo-image-source.service.mock.ts b/libs/ui/src/lib/mocks/entity-logo-image-source.service.mock.ts index 766a4178b0..4160485bce 100644 --- a/libs/ui/src/lib/mocks/entity-logo-image-source.service.mock.ts +++ b/libs/ui/src/lib/mocks/entity-logo-image-source.service.mock.ts @@ -1,6 +1,5 @@ import { AssetProfileIdentifier } from '@ghostfolio/common/interfaces'; - -import { DataSource } from '@prisma/client'; +import { DataSource } from '@ghostfolio/prisma/enums'; // Resolves like a logo of an unknown entity, but fails to load const UNAVAILABLE_LOGO_URL = 'data:image/png;base64,unavailable'; diff --git a/libs/ui/src/lib/portfolio-filter-form/portfolio-filter-form.util.ts b/libs/ui/src/lib/portfolio-filter-form/portfolio-filter-form.util.ts index 193624c768..163029258a 100644 --- a/libs/ui/src/lib/portfolio-filter-form/portfolio-filter-form.util.ts +++ b/libs/ui/src/lib/portfolio-filter-form/portfolio-filter-form.util.ts @@ -1,8 +1,8 @@ import { TAG_ID_EXCLUDE_FROM_ANALYSIS } from '@ghostfolio/common/config'; import { getAssetProfileIdentifier } from '@ghostfolio/common/helper'; import { Filter, PortfolioPosition } from '@ghostfolio/common/interfaces'; - -import { AssetClass, DataSource, Tag } from '@prisma/client'; +import type { Tag } from '@ghostfolio/prisma/browser'; +import { AssetClass, DataSource } from '@ghostfolio/prisma/enums'; import { translate } from '../i18n'; import { PortfolioFilterFormValue } from './interfaces'; diff --git a/libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts b/libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts index bf2f595c26..e90c446b41 100644 --- a/libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts +++ b/libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts @@ -3,6 +3,7 @@ import { DEFAULT_COLOR_SCHEME, UNKNOWN_KEY } from '@ghostfolio/common/config'; import { getLocale, getSum, getTextColor } from '@ghostfolio/common/helper'; import { PortfolioPosition } from '@ghostfolio/common/interfaces'; import { ColorScheme } from '@ghostfolio/common/types'; +import { DataSource } from '@ghostfolio/prisma/enums'; import { AfterViewInit, @@ -15,7 +16,6 @@ import { output, viewChild } from '@angular/core'; -import { DataSource } from '@prisma/client'; import { Big } from 'big.js'; import { ArcElement, diff --git a/libs/ui/src/lib/services/admin.service.ts b/libs/ui/src/lib/services/admin.service.ts index aa048faaf2..aba02c9b3f 100644 --- a/libs/ui/src/lib/services/admin.service.ts +++ b/libs/ui/src/lib/services/admin.service.ts @@ -21,11 +21,15 @@ import { EnhancedAssetProfile } from '@ghostfolio/common/interfaces'; import { DateRange } from '@ghostfolio/common/types'; +import type { + AssetProfileSplit, + MarketData, + Platform +} from '@ghostfolio/prisma/browser'; import { GF_ENVIRONMENT } from '@ghostfolio/ui/environment'; import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http'; import { inject, Service } from '@angular/core'; -import { AssetProfileSplit, MarketData, Platform } from '@prisma/client'; import { JobStatus } from 'bull'; import { isNumber } from 'lodash'; diff --git a/libs/ui/src/lib/services/data.service.ts b/libs/ui/src/lib/services/data.service.ts index e09632079c..9bbb0bf5fa 100644 --- a/libs/ui/src/lib/services/data.service.ts +++ b/libs/ui/src/lib/services/data.service.ts @@ -65,22 +65,22 @@ import type { GroupBy, TagWithAccountAndActivityCount } from '@ghostfolio/common/types'; -import { translate } from '@ghostfolio/ui/i18n'; - -import { HttpClient, HttpParams } from '@angular/common/http'; -import { inject, Service } from '@angular/core'; -import { SortDirection } from '@angular/material/sort'; -import { utc } from '@date-fns/utc'; -import { +import type { Account, AccountBalance, - DataSource, MarketData, Order, SymbolProfile, Tag, User as UserModel -} from '@prisma/client'; +} from '@ghostfolio/prisma/browser'; +import { DataSource } from '@ghostfolio/prisma/enums'; +import { translate } from '@ghostfolio/ui/i18n'; + +import { HttpClient, HttpParams } from '@angular/common/http'; +import { inject, Service } from '@angular/core'; +import { SortDirection } from '@angular/material/sort'; +import { utc } from '@date-fns/utc'; import { format, parseISO } from 'date-fns'; import { cloneDeep, groupBy, isNumber } from 'lodash'; import { Observable } from 'rxjs'; diff --git a/libs/ui/src/lib/tags-selector/interfaces/interfaces.ts b/libs/ui/src/lib/tags-selector/interfaces/interfaces.ts index fe9af9882c..616ffa2487 100644 --- a/libs/ui/src/lib/tags-selector/interfaces/interfaces.ts +++ b/libs/ui/src/lib/tags-selector/interfaces/interfaces.ts @@ -1,4 +1,4 @@ -import { Tag } from '@prisma/client'; +import type { Tag } from '@ghostfolio/prisma/browser'; export interface NewTag extends Omit { id: undefined; diff --git a/nx.json b/nx.json index e0a41e9835..d42873bda8 100644 --- a/nx.json +++ b/nx.json @@ -125,7 +125,8 @@ "sharedGlobals": [ "{workspaceRoot}/angular.json", "{workspaceRoot}/tsconfig.base.json", - "{workspaceRoot}/nx.json" + "{workspaceRoot}/nx.json", + "{workspaceRoot}/prisma/schema.prisma" ], "production": [ "default", diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 8d874b4de6..d2181e13be 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -1,7 +1,12 @@ generator client { - provider = "prisma-client-js" - previewFeatures = [] binaryTargets = ["debian-openssl-3.0.x", "linux-arm64-openssl-3.0.x", "native"] + previewFeatures = [] + provider = "prisma-client-js" +} + +generator workspaceClient { + output = "./generated" + provider = "prisma-client" } datasource db { diff --git a/tsconfig.base.json b/tsconfig.base.json index a74d9910f3..f5771c4e9d 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -19,6 +19,8 @@ "@ghostfolio/api/*": ["./apps/api/src/*"], "@ghostfolio/client/*": ["./apps/client/src/app/*"], "@ghostfolio/common/*": ["./libs/common/src/lib/*"], + "@ghostfolio/prisma/browser": ["./prisma/generated/browser"], + "@ghostfolio/prisma/enums": ["./prisma/generated/enums"], "@ghostfolio/ui/*": ["./libs/ui/src/lib/*"] }, "noFallthroughCasesInSwitch": true,