Browse Source

Refactoring

pull/1818/head
Thomas 3 years ago
parent
commit
68afe33c11
  1. 6
      apps/api/src/app/portfolio/portfolio.service.ts
  2. 6
      apps/api/src/app/subscription/subscription.service.ts
  3. 6
      apps/api/src/app/symbol/symbol.service.ts
  4. 7
      apps/api/src/app/user/user.service.ts
  5. 2
      apps/api/src/services/data-provider/data-provider.service.ts
  6. 4
      libs/common/src/lib/interfaces/index.ts
  7. 6
      libs/common/src/lib/interfaces/user.interface.ts
  8. 3
      libs/common/src/lib/permissions.ts
  9. 4
      libs/common/src/lib/types/index.ts
  10. 2
      libs/common/src/lib/types/request-with-user.type.ts
  11. 1
      libs/common/src/lib/types/subscription-offer.type.ts
  12. 0
      libs/common/src/lib/types/subscription-type.type.ts
  13. 8
      libs/common/src/lib/types/user-with-settings.type.ts

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

@ -37,8 +37,7 @@ import {
PortfolioSummary, PortfolioSummary,
Position, Position,
TimelinePosition, TimelinePosition,
UserSettings, UserSettings
UserWithSettings
} from '@ghostfolio/common/interfaces'; } from '@ghostfolio/common/interfaces';
import { InvestmentItem } from '@ghostfolio/common/interfaces/investment-item.interface'; import { InvestmentItem } from '@ghostfolio/common/interfaces/investment-item.interface';
import type { import type {
@ -47,7 +46,8 @@ import type {
GroupBy, GroupBy,
Market, Market,
OrderWithAccount, OrderWithAccount,
RequestWithUser RequestWithUser,
UserWithSettings
} from '@ghostfolio/common/types'; } from '@ghostfolio/common/types';
import { Inject, Injectable } from '@nestjs/common'; import { Inject, Injectable } from '@nestjs/common';
import { REQUEST } from '@nestjs/core'; import { REQUEST } from '@nestjs/core';

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

@ -4,9 +4,9 @@ import {
DEFAULT_LANGUAGE_CODE, DEFAULT_LANGUAGE_CODE,
PROPERTY_STRIPE_CONFIG PROPERTY_STRIPE_CONFIG
} from '@ghostfolio/common/config'; } from '@ghostfolio/common/config';
import { UserWithSettings } from '@ghostfolio/common/interfaces';
import { Subscription as SubscriptionInterface } from '@ghostfolio/common/interfaces/subscription.interface'; 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 { Injectable, Logger } from '@nestjs/common';
import { Subscription } from '@prisma/client'; import { Subscription } from '@prisma/client';
import { addMilliseconds, isBefore } from 'date-fns'; import { addMilliseconds, isBefore } from 'date-fns';
@ -133,7 +133,7 @@ export class SubscriptionService {
return { return {
expiresAt: latestSubscription.expiresAt, expiresAt: latestSubscription.expiresAt,
offer: 'renewal', offer: latestSubscription.price === 0 ? 'default' : 'renewal',
type: isBefore(new Date(), latestSubscription.expiresAt) type: isBefore(new Date(), latestSubscription.expiresAt)
? SubscriptionType.Premium ? SubscriptionType.Premium
: SubscriptionType.Basic : SubscriptionType.Basic

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

@ -5,10 +5,8 @@ import {
} from '@ghostfolio/api/services/interfaces/interfaces'; } from '@ghostfolio/api/services/interfaces/interfaces';
import { MarketDataService } from '@ghostfolio/api/services/market-data.service'; import { MarketDataService } from '@ghostfolio/api/services/market-data.service';
import { DATE_FORMAT } from '@ghostfolio/common/helper'; import { DATE_FORMAT } from '@ghostfolio/common/helper';
import { import { HistoricalDataItem } from '@ghostfolio/common/interfaces';
HistoricalDataItem, import { UserWithSettings } from '@ghostfolio/common/types';
UserWithSettings
} from '@ghostfolio/common/interfaces';
import { Injectable, Logger } from '@nestjs/common'; import { Injectable, Logger } from '@nestjs/common';
import { format, subDays } from 'date-fns'; import { format, subDays } from 'date-fns';

7
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 { PropertyService } from '@ghostfolio/api/services/property/property.service';
import { TagService } from '@ghostfolio/api/services/tag/tag.service'; import { TagService } from '@ghostfolio/api/services/tag/tag.service';
import { PROPERTY_IS_READ_ONLY_MODE, locale } from '@ghostfolio/common/config'; import { PROPERTY_IS_READ_ONLY_MODE, locale } from '@ghostfolio/common/config';
import { import { User as IUser, UserSettings } from '@ghostfolio/common/interfaces';
User as IUser,
UserSettings,
UserWithSettings
} from '@ghostfolio/common/interfaces';
import { import {
getPermissions, getPermissions,
hasRole, hasRole,
permissions permissions
} from '@ghostfolio/common/permissions'; } from '@ghostfolio/common/permissions';
import { UserWithSettings } from '@ghostfolio/common/types';
import { Injectable } from '@nestjs/common'; import { Injectable } from '@nestjs/common';
import { Prisma, Role, User } from '@prisma/client'; import { Prisma, Role, User } from '@prisma/client';
import { sortBy } from 'lodash'; import { sortBy } from 'lodash';

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

@ -8,7 +8,7 @@ import {
} from '@ghostfolio/api/services/interfaces/interfaces'; } from '@ghostfolio/api/services/interfaces/interfaces';
import { PrismaService } from '@ghostfolio/api/services/prisma.service'; import { PrismaService } from '@ghostfolio/api/services/prisma.service';
import { DATE_FORMAT } from '@ghostfolio/common/helper'; 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 { Granularity } from '@ghostfolio/common/types';
import { Inject, Injectable, Logger } from '@nestjs/common'; import { Inject, Injectable, Logger } from '@nestjs/common';
import { DataSource, MarketData, SymbolProfile } from '@prisma/client'; import { DataSource, MarketData, SymbolProfile } from '@prisma/client';

4
libs/common/src/lib/interfaces/index.ts

@ -40,7 +40,6 @@ import { ScraperConfiguration } from './scraper-configuration.interface';
import { TimelinePosition } from './timeline-position.interface'; import { TimelinePosition } from './timeline-position.interface';
import { UniqueAsset } from './unique-asset.interface'; import { UniqueAsset } from './unique-asset.interface';
import { UserSettings } from './user-settings.interface'; import { UserSettings } from './user-settings.interface';
import { UserWithSettings } from './user-with-settings';
import { User } from './user.interface'; import { User } from './user.interface';
export { export {
@ -84,6 +83,5 @@ export {
TimelinePosition, TimelinePosition,
UniqueAsset, UniqueAsset,
User, User,
UserSettings, UserSettings
UserWithSettings
}; };

6
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 { Account, Tag } from '@prisma/client';
import { UserSettings } from './user-settings.interface'; import { UserSettings } from './user-settings.interface';
@ -14,8 +16,8 @@ export interface User {
settings: UserSettings; settings: UserSettings;
subscription: { subscription: {
expiresAt?: Date; expiresAt?: Date;
offer: 'default' | 'renewal'; offer: SubscriptionOffer;
type: 'Basic' | 'Premium'; type: SubscriptionType;
}; };
tags: Tag[]; tags: Tag[];
} }

3
libs/common/src/lib/permissions.ts

@ -1,7 +1,6 @@
import { UserWithSettings } from '@ghostfolio/common/types';
import { Role } from '@prisma/client'; import { Role } from '@prisma/client';
import { UserWithSettings } from './interfaces';
export const permissions = { export const permissions = {
accessAdminControl: 'accessAdminControl', accessAdminControl: 'accessAdminControl',
createAccess: 'createAccess', createAccess: 'createAccess',

4
libs/common/src/lib/types/index.ts

@ -9,7 +9,9 @@ import { MarketState } from './market-state.type';
import { Market } from './market.type'; import { Market } from './market.type';
import type { OrderWithAccount } from './order-with-account.type'; import type { OrderWithAccount } from './order-with-account.type';
import type { RequestWithUser } from './request-with-user.type'; import type { RequestWithUser } from './request-with-user.type';
import { SubscriptionOffer } from './subscription-offer.type';
import { ToggleOption } from './toggle-option.type'; import { ToggleOption } from './toggle-option.type';
import { UserWithSettings } from './user-with-settings.type';
import type { ViewMode } from './view-mode.type'; import type { ViewMode } from './view-mode.type';
export type { export type {
@ -24,6 +26,8 @@ export type {
MarketState, MarketState,
OrderWithAccount, OrderWithAccount,
RequestWithUser, RequestWithUser,
SubscriptionOffer,
ToggleOption, ToggleOption,
UserWithSettings,
ViewMode ViewMode
}; };

2
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 }; export type RequestWithUser = Request & { user: UserWithSettings };

1
libs/common/src/lib/types/subscription-offer.type.ts

@ -0,0 +1 @@
export type SubscriptionOffer = 'default' | 'renewal';

0
libs/common/src/lib/types/subscription.type.ts → libs/common/src/lib/types/subscription-type.type.ts

8
libs/common/src/lib/interfaces/user-with-settings.ts → 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 { 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 & { export type UserWithSettings = User & {
Account: Account[]; Account: Account[];
activityCount: number; activityCount: number;
@ -10,7 +12,7 @@ export type UserWithSettings = User & {
Settings: Settings & { settings: UserSettings }; Settings: Settings & { settings: UserSettings };
subscription?: { subscription?: {
expiresAt?: Date; expiresAt?: Date;
offer: 'default' | 'renewal'; // TODO: Extract type offer: SubscriptionOffer;
type: SubscriptionType; type: SubscriptionType;
}; };
}; };
Loading…
Cancel
Save