mirror of
https://github.com/immich-app/immich.git
synced 2026-03-07 02:27:23 +03:00
* feat: user license endpoints * feat: server license endpoints * chore: pr feedback * chore: add more test cases * chore: add prod license public keys * chore: open-api generation
37 lines
1.3 KiB
TypeScript
37 lines
1.3 KiB
TypeScript
import { Injectable } from '@nestjs/common';
|
|
import { InjectRepository } from '@nestjs/typeorm';
|
|
import { readFile } from 'node:fs/promises';
|
|
import { SystemMetadata, SystemMetadataEntity } from 'src/entities/system-metadata.entity';
|
|
import { ISystemMetadataRepository } from 'src/interfaces/system-metadata.interface';
|
|
import { Instrumentation } from 'src/utils/instrumentation';
|
|
import { Repository } from 'typeorm';
|
|
|
|
@Instrumentation()
|
|
@Injectable()
|
|
export class SystemMetadataRepository implements ISystemMetadataRepository {
|
|
constructor(
|
|
@InjectRepository(SystemMetadataEntity)
|
|
private repository: Repository<SystemMetadataEntity>,
|
|
) {}
|
|
|
|
async get<T extends keyof SystemMetadata>(key: T): Promise<SystemMetadata[T] | null> {
|
|
const metadata = await this.repository.findOne({ where: { key } });
|
|
if (!metadata) {
|
|
return null;
|
|
}
|
|
return metadata.value as SystemMetadata[T];
|
|
}
|
|
|
|
async set<T extends keyof SystemMetadata>(key: T, value: SystemMetadata[T]): Promise<void> {
|
|
await this.repository.upsert({ key, value }, { conflictPaths: { key: true } });
|
|
}
|
|
|
|
async delete<T extends keyof SystemMetadata>(key: T): Promise<void> {
|
|
await this.repository.delete({ key });
|
|
}
|
|
|
|
readFile(filename: string): Promise<string> {
|
|
return readFile(filename, { encoding: 'utf8' });
|
|
}
|
|
}
|