60 lines
1.4 KiB
TypeScript
60 lines
1.4 KiB
TypeScript
import { PrismaService } from '@ghostfolio/api/services/prisma/prisma.service';
|
|
import {
|
|
PROPERTY_CURRENCIES,
|
|
PROPERTY_IS_USER_SIGNUP_ENABLED
|
|
} from '@ghostfolio/common/config';
|
|
import { Injectable } from '@nestjs/common';
|
|
|
|
@Injectable()
|
|
export class PropertyService {
|
|
public constructor(private readonly prismaService: PrismaService) {}
|
|
|
|
public async delete({ key }: { key: string }) {
|
|
return this.prismaService.property.delete({
|
|
where: { key }
|
|
});
|
|
}
|
|
|
|
public async get() {
|
|
const response: {
|
|
[key: string]: boolean | object | string | string[];
|
|
} = {
|
|
[PROPERTY_CURRENCIES]: []
|
|
};
|
|
|
|
const properties = await this.prismaService.property.findMany();
|
|
|
|
for (const property of properties) {
|
|
let value = property.value;
|
|
|
|
try {
|
|
value = JSON.parse(property.value);
|
|
} catch {}
|
|
|
|
response[property.key] = value;
|
|
}
|
|
|
|
return response;
|
|
}
|
|
|
|
public async getByKey(aKey: string) {
|
|
const properties = await this.get();
|
|
return properties?.[aKey];
|
|
}
|
|
|
|
public async isUserSignupEnabled() {
|
|
return (
|
|
((await this.getByKey(PROPERTY_IS_USER_SIGNUP_ENABLED)) as boolean) ??
|
|
true
|
|
);
|
|
}
|
|
|
|
public async put({ key, value }: { key: string; value: string }) {
|
|
return this.prismaService.property.upsert({
|
|
create: { key, value },
|
|
update: { value },
|
|
where: { key }
|
|
});
|
|
}
|
|
}
|