Browse Source

Improve type safety of key in PropertyService

pull/7219/head
AkashNegi1 2 weeks ago
parent
commit
97a26a2615
  1. 12
      apps/api/src/app/admin/admin.service.ts
  2. 9
      apps/api/src/services/property/property.service.ts
  3. 29
      libs/common/src/lib/config.ts

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

@ -9,7 +9,8 @@ import { SymbolProfileService } from '@ghostfolio/api/services/symbol-profile/sy
import {
PROPERTY_CURRENCIES,
PROPERTY_IS_READ_ONLY_MODE,
PROPERTY_IS_USER_SIGNUP_ENABLED
PROPERTY_IS_USER_SIGNUP_ENABLED,
PropertyKey
} from '@ghostfolio/common/config';
import {
getAssetProfileIdentifier,
@ -347,9 +348,14 @@ export class AdminService {
let response: Property;
if (value) {
response = await this.propertyService.put({ key, value });
response = await this.propertyService.put({
key: key as PropertyKey,
value
});
} else {
response = await this.propertyService.delete({ key });
response = await this.propertyService.delete({
key: key as PropertyKey
});
}
if (key === PROPERTY_IS_READ_ONLY_MODE && value === 'true') {

9
apps/api/src/services/property/property.service.ts

@ -1,7 +1,8 @@
import { PrismaService } from '@ghostfolio/api/services/prisma/prisma.service';
import {
PROPERTY_CURRENCIES,
PROPERTY_IS_USER_SIGNUP_ENABLED
PROPERTY_IS_USER_SIGNUP_ENABLED,
PropertyKey
} from '@ghostfolio/common/config';
import { Injectable } from '@nestjs/common';
@ -12,7 +13,7 @@ import { PropertyValue } from './interfaces/interfaces';
export class PropertyService {
public constructor(private readonly prismaService: PrismaService) {}
public async delete({ key }: { key: string }) {
public async delete({ key }: { key: PropertyKey }) {
return this.prismaService.property.delete({
where: { key }
});
@ -40,7 +41,7 @@ export class PropertyService {
return response;
}
public async getByKey<TValue extends PropertyValue>(aKey: string) {
public async getByKey<TValue extends PropertyValue>(aKey: PropertyKey) {
const properties = await this.get();
return properties[aKey] as TValue;
}
@ -51,7 +52,7 @@ export class PropertyService {
);
}
public async put({ key, value }: { key: string; value: string }) {
public async put({ key, value }: { key: PropertyKey; value: string }) {
return this.prismaService.property.upsert({
create: { key, value },
update: { value },

29
libs/common/src/lib/config.ts

@ -267,6 +267,35 @@ export const PROPERTY_SYSTEM_MESSAGE = 'SYSTEM_MESSAGE';
export const PROPERTY_UPTIME = 'UPTIME';
export const PROPERTY_WEB_FETCH_ROUTES = 'WEB_FETCH_ROUTES';
export type PropertyKey =
| typeof PROPERTY_API_KEY_GHOSTFOLIO
| typeof PROPERTY_API_KEY_OPENROUTER
| typeof PROPERTY_BENCHMARKS
| typeof PROPERTY_BETTER_UPTIME_MONITOR_ID
| typeof PROPERTY_COUNTRIES_OF_SUBSCRIBERS
| typeof PROPERTY_COUPONS
| typeof PROPERTY_CURRENCIES
| typeof PROPERTY_CUSTOM_CRYPTOCURRENCIES
| typeof PROPERTY_DATA_SOURCE_MAPPING
| typeof PROPERTY_DATA_SOURCES_GHOSTFOLIO_DATA_PROVIDER_MAX_REQUESTS
| typeof PROPERTY_DEMO_ACCOUNT_ID
| typeof PROPERTY_DEMO_USER_ID
| typeof PROPERTY_DOCKER_HUB_PULLS
| typeof PROPERTY_GITHUB_CONTRIBUTORS
| typeof PROPERTY_GITHUB_STARGAZERS
| typeof PROPERTY_IS_DATA_GATHERING_ENABLED
| typeof PROPERTY_IS_READ_ONLY_MODE
| typeof PROPERTY_IS_USER_SIGNUP_ENABLED
| typeof PROPERTY_OPENROUTER_MODEL
| typeof PROPERTY_OPENROUTER_MODEL_WEB_FETCH
| typeof PROPERTY_PROXY_ROUTES
| typeof PROPERTY_REFERRAL_PARTNERS
| typeof PROPERTY_SLACK_COMMUNITY_USERS
| typeof PROPERTY_STRIPE_CONFIG
| typeof PROPERTY_SYSTEM_MESSAGE
| typeof PROPERTY_UPTIME
| typeof PROPERTY_WEB_FETCH_ROUTES;
export const QUEUE_JOB_STATUS_LIST = [
'active',
'completed',

Loading…
Cancel
Save