import { EntityMetadata } from "../metadata/EntityMetadata" import { ObjectUtils } from "../util/ObjectUtils" import { TypeORMError } from "../error" /** */ export class Alias { type: "from" | "select" | "join" | "other" // todo: make something with "other" name: string /** * Table on which this alias is applied. * Used only for aliases which select custom tables. */ tablePath?: string /** * If this alias is for sub query. */ subQuery?: string constructor(alias?: Alias) { ObjectUtils.assign(this, alias || {}) } private _metadata?: EntityMetadata get target(): Function | string { return this.metadata.target } get hasMetadata(): boolean { return !!this._metadata } set metadata(metadata: EntityMetadata) { this._metadata = metadata } get metadata(): EntityMetadata { if (!this._metadata) throw new TypeORMError( `Cannot get entity metadata for the given alias "${this.name}"`, ) return this._metadata } }