49 lines
1.8 KiB
TypeScript
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;
|
|
}
|