RenaiApp/src/main/modules/serialization/get-deserialized.ts

49 lines
1.8 KiB
TypeScript

import type { EntityTarget } from 'typeorm';
import { getRepository } from '../../core/database';
export function getDeserializedEntityPromise<T>(serializedProperty: number, entityTarget: EntityTarget<T>): Promise<T>;
export function getDeserializedEntityPromise<T>(
serializedProperty: undefined,
entityTarget: EntityTarget<T>,
): undefined;
export function getDeserializedEntityPromise<T>(serializedProperty: null, entityTarget: EntityTarget<T>): null;
export function getDeserializedEntityPromise<T>(
serializedProperty: number | undefined,
entityTarget: EntityTarget<T>,
): Promise<T> | undefined;
export function getDeserializedEntityPromise<T>(
serializedProperty: number | undefined | null,
entityTarget: EntityTarget<T>,
): Promise<T> | undefined | null;
export function getDeserializedEntityPromise<T>(
serializedProperty: number | undefined | null,
entityTarget: EntityTarget<T>,
): Promise<T> | undefined | null {
return serializedProperty === null
? null
: serializedProperty
? getRepository(entityTarget).then((repo) => repo.findOneOrFail(serializedProperty))
: undefined;
}
export function getDeserializedEntitiesPromise<T>(
serializedProperty: number[],
entityTarget: EntityTarget<T>,
): Promise<T[]>;
export function getDeserializedEntitiesPromise<T>(
serializedProperty: undefined,
entityTarget: EntityTarget<T>,
): undefined;
export function getDeserializedEntitiesPromise<T>(
serializedProperty: number[] | undefined,
entityTarget: EntityTarget<T>,
): Promise<T[]> | undefined;
export function getDeserializedEntitiesPromise<T>(
serializedProperty: number[] | undefined,
entityTarget: EntityTarget<T>,
): Promise<T[]> | undefined {
return serializedProperty
? Promise.all(serializedProperty.map((id) => getRepository(entityTarget).then((repo) => repo.findOneOrFail(id))))
: undefined;
}