From 68afe33c1146ea8f54ff33a1783e9e6652878b32 Mon Sep 17 00:00:00 2001 From: Thomas <4159106+dtslvr@users.noreply.github.com> Date: Sat, 1 Apr 2023 10:26:24 +0200 Subject: [PATCH] Refactoring --- apps/api/src/app/portfolio/portfolio.service.ts | 6 +++--- apps/api/src/app/subscription/subscription.service.ts | 6 +++--- apps/api/src/app/symbol/symbol.service.ts | 6 ++---- apps/api/src/app/user/user.service.ts | 7 ++----- .../src/services/data-provider/data-provider.service.ts | 2 +- libs/common/src/lib/interfaces/index.ts | 4 +--- libs/common/src/lib/interfaces/user.interface.ts | 6 ++++-- libs/common/src/lib/permissions.ts | 3 +-- libs/common/src/lib/types/index.ts | 4 ++++ libs/common/src/lib/types/request-with-user.type.ts | 2 +- libs/common/src/lib/types/subscription-offer.type.ts | 1 + .../{subscription.type.ts => subscription-type.type.ts} | 0 .../user-with-settings.type.ts} | 8 +++++--- 13 files changed, 28 insertions(+), 27 deletions(-) create mode 100644 libs/common/src/lib/types/subscription-offer.type.ts rename libs/common/src/lib/types/{subscription.type.ts => subscription-type.type.ts} (100%) rename libs/common/src/lib/{interfaces/user-with-settings.ts => types/user-with-settings.type.ts} (63%) diff --git a/apps/api/src/app/portfolio/portfolio.service.ts b/apps/api/src/app/portfolio/portfolio.service.ts index 1677ffc29..4e8813630 100644 --- a/apps/api/src/app/portfolio/portfolio.service.ts +++ b/apps/api/src/app/portfolio/portfolio.service.ts @@ -37,8 +37,7 @@ import { PortfolioSummary, Position, TimelinePosition, - UserSettings, - UserWithSettings + UserSettings } from '@ghostfolio/common/interfaces'; import { InvestmentItem } from '@ghostfolio/common/interfaces/investment-item.interface'; import type { @@ -47,7 +46,8 @@ import type { GroupBy, Market, OrderWithAccount, - RequestWithUser + RequestWithUser, + UserWithSettings } from '@ghostfolio/common/types'; import { Inject, Injectable } from '@nestjs/common'; import { REQUEST } from '@nestjs/core'; diff --git a/apps/api/src/app/subscription/subscription.service.ts b/apps/api/src/app/subscription/subscription.service.ts index 5ff98e3fe..b339538fc 100644 --- a/apps/api/src/app/subscription/subscription.service.ts +++ b/apps/api/src/app/subscription/subscription.service.ts @@ -4,9 +4,9 @@ import { DEFAULT_LANGUAGE_CODE, PROPERTY_STRIPE_CONFIG } from '@ghostfolio/common/config'; -import { UserWithSettings } from '@ghostfolio/common/interfaces'; import { Subscription as SubscriptionInterface } from '@ghostfolio/common/interfaces/subscription.interface'; -import { SubscriptionType } from '@ghostfolio/common/types/subscription.type'; +import { UserWithSettings } from '@ghostfolio/common/types'; +import { SubscriptionType } from '@ghostfolio/common/types/subscription-type.type'; import { Injectable, Logger } from '@nestjs/common'; import { Subscription } from '@prisma/client'; import { addMilliseconds, isBefore } from 'date-fns'; @@ -133,7 +133,7 @@ export class SubscriptionService { return { expiresAt: latestSubscription.expiresAt, - offer: 'renewal', + offer: latestSubscription.price === 0 ? 'default' : 'renewal', type: isBefore(new Date(), latestSubscription.expiresAt) ? SubscriptionType.Premium : SubscriptionType.Basic diff --git a/apps/api/src/app/symbol/symbol.service.ts b/apps/api/src/app/symbol/symbol.service.ts index 718387b3b..066752388 100644 --- a/apps/api/src/app/symbol/symbol.service.ts +++ b/apps/api/src/app/symbol/symbol.service.ts @@ -5,10 +5,8 @@ import { } from '@ghostfolio/api/services/interfaces/interfaces'; import { MarketDataService } from '@ghostfolio/api/services/market-data.service'; import { DATE_FORMAT } from '@ghostfolio/common/helper'; -import { - HistoricalDataItem, - UserWithSettings -} from '@ghostfolio/common/interfaces'; +import { HistoricalDataItem } from '@ghostfolio/common/interfaces'; +import { UserWithSettings } from '@ghostfolio/common/types'; import { Injectable, Logger } from '@nestjs/common'; import { format, subDays } from 'date-fns'; diff --git a/apps/api/src/app/user/user.service.ts b/apps/api/src/app/user/user.service.ts index 1630a74aa..420fa0874 100644 --- a/apps/api/src/app/user/user.service.ts +++ b/apps/api/src/app/user/user.service.ts @@ -4,16 +4,13 @@ import { PrismaService } from '@ghostfolio/api/services/prisma.service'; import { PropertyService } from '@ghostfolio/api/services/property/property.service'; import { TagService } from '@ghostfolio/api/services/tag/tag.service'; import { PROPERTY_IS_READ_ONLY_MODE, locale } from '@ghostfolio/common/config'; -import { - User as IUser, - UserSettings, - UserWithSettings -} from '@ghostfolio/common/interfaces'; +import { User as IUser, UserSettings } from '@ghostfolio/common/interfaces'; import { getPermissions, hasRole, permissions } from '@ghostfolio/common/permissions'; +import { UserWithSettings } from '@ghostfolio/common/types'; import { Injectable } from '@nestjs/common'; import { Prisma, Role, User } from '@prisma/client'; import { sortBy } from 'lodash'; diff --git a/apps/api/src/services/data-provider/data-provider.service.ts b/apps/api/src/services/data-provider/data-provider.service.ts index ad8929eee..39bb2e19b 100644 --- a/apps/api/src/services/data-provider/data-provider.service.ts +++ b/apps/api/src/services/data-provider/data-provider.service.ts @@ -8,7 +8,7 @@ import { } from '@ghostfolio/api/services/interfaces/interfaces'; import { PrismaService } from '@ghostfolio/api/services/prisma.service'; import { DATE_FORMAT } from '@ghostfolio/common/helper'; -import { UserWithSettings } from '@ghostfolio/common/interfaces'; +import { UserWithSettings } from '@ghostfolio/common/types'; import { Granularity } from '@ghostfolio/common/types'; import { Inject, Injectable, Logger } from '@nestjs/common'; import { DataSource, MarketData, SymbolProfile } from '@prisma/client'; diff --git a/libs/common/src/lib/interfaces/index.ts b/libs/common/src/lib/interfaces/index.ts index 68b882601..b197add39 100644 --- a/libs/common/src/lib/interfaces/index.ts +++ b/libs/common/src/lib/interfaces/index.ts @@ -40,7 +40,6 @@ import { ScraperConfiguration } from './scraper-configuration.interface'; import { TimelinePosition } from './timeline-position.interface'; import { UniqueAsset } from './unique-asset.interface'; import { UserSettings } from './user-settings.interface'; -import { UserWithSettings } from './user-with-settings'; import { User } from './user.interface'; export { @@ -84,6 +83,5 @@ export { TimelinePosition, UniqueAsset, User, - UserSettings, - UserWithSettings + UserSettings }; diff --git a/libs/common/src/lib/interfaces/user.interface.ts b/libs/common/src/lib/interfaces/user.interface.ts index 9f1d9b9e7..1009deca2 100644 --- a/libs/common/src/lib/interfaces/user.interface.ts +++ b/libs/common/src/lib/interfaces/user.interface.ts @@ -1,3 +1,5 @@ +import { SubscriptionOffer } from '@ghostfolio/common/types'; +import { SubscriptionType } from '@ghostfolio/common/types/subscription-type.type'; import { Account, Tag } from '@prisma/client'; import { UserSettings } from './user-settings.interface'; @@ -14,8 +16,8 @@ export interface User { settings: UserSettings; subscription: { expiresAt?: Date; - offer: 'default' | 'renewal'; - type: 'Basic' | 'Premium'; + offer: SubscriptionOffer; + type: SubscriptionType; }; tags: Tag[]; } diff --git a/libs/common/src/lib/permissions.ts b/libs/common/src/lib/permissions.ts index b9dc6806a..da512babe 100644 --- a/libs/common/src/lib/permissions.ts +++ b/libs/common/src/lib/permissions.ts @@ -1,7 +1,6 @@ +import { UserWithSettings } from '@ghostfolio/common/types'; import { Role } from '@prisma/client'; -import { UserWithSettings } from './interfaces'; - export const permissions = { accessAdminControl: 'accessAdminControl', createAccess: 'createAccess', diff --git a/libs/common/src/lib/types/index.ts b/libs/common/src/lib/types/index.ts index 12bee4132..258ce211d 100644 --- a/libs/common/src/lib/types/index.ts +++ b/libs/common/src/lib/types/index.ts @@ -9,7 +9,9 @@ import { MarketState } from './market-state.type'; import { Market } from './market.type'; import type { OrderWithAccount } from './order-with-account.type'; import type { RequestWithUser } from './request-with-user.type'; +import { SubscriptionOffer } from './subscription-offer.type'; import { ToggleOption } from './toggle-option.type'; +import { UserWithSettings } from './user-with-settings.type'; import type { ViewMode } from './view-mode.type'; export type { @@ -24,6 +26,8 @@ export type { MarketState, OrderWithAccount, RequestWithUser, + SubscriptionOffer, ToggleOption, + UserWithSettings, ViewMode }; diff --git a/libs/common/src/lib/types/request-with-user.type.ts b/libs/common/src/lib/types/request-with-user.type.ts index a31f17f92..a6bea37b5 100644 --- a/libs/common/src/lib/types/request-with-user.type.ts +++ b/libs/common/src/lib/types/request-with-user.type.ts @@ -1,3 +1,3 @@ -import { UserWithSettings } from '@ghostfolio/common/interfaces'; +import { UserWithSettings } from '@ghostfolio/common/types'; export type RequestWithUser = Request & { user: UserWithSettings }; diff --git a/libs/common/src/lib/types/subscription-offer.type.ts b/libs/common/src/lib/types/subscription-offer.type.ts new file mode 100644 index 000000000..b7b2760ec --- /dev/null +++ b/libs/common/src/lib/types/subscription-offer.type.ts @@ -0,0 +1 @@ +export type SubscriptionOffer = 'default' | 'renewal'; diff --git a/libs/common/src/lib/types/subscription.type.ts b/libs/common/src/lib/types/subscription-type.type.ts similarity index 100% rename from libs/common/src/lib/types/subscription.type.ts rename to libs/common/src/lib/types/subscription-type.type.ts diff --git a/libs/common/src/lib/interfaces/user-with-settings.ts b/libs/common/src/lib/types/user-with-settings.type.ts similarity index 63% rename from libs/common/src/lib/interfaces/user-with-settings.ts rename to libs/common/src/lib/types/user-with-settings.type.ts index 5311e0209..68610f6ab 100644 --- a/libs/common/src/lib/interfaces/user-with-settings.ts +++ b/libs/common/src/lib/types/user-with-settings.type.ts @@ -1,8 +1,10 @@ -import { SubscriptionType } from '@ghostfolio/common/types/subscription.type'; +import { SubscriptionOffer } from '@ghostfolio/common/types'; +import { SubscriptionType } from '@ghostfolio/common/types/subscription-type.type'; import { Account, Settings, User } from '@prisma/client'; -import { UserSettings } from './user-settings.interface'; +import { UserSettings } from '../interfaces/user-settings.interface'; +// TODO: Compare with User type export type UserWithSettings = User & { Account: Account[]; activityCount: number; @@ -10,7 +12,7 @@ export type UserWithSettings = User & { Settings: Settings & { settings: UserSettings }; subscription?: { expiresAt?: Date; - offer: 'default' | 'renewal'; // TODO: Extract type + offer: SubscriptionOffer; type: SubscriptionType; }; };