UNPKG

15.9 kBSource Map (JSON)View Raw
1{"version":3,"sources":["../../src/metadata/EmbeddedMetadata.ts"],"names":[],"mappings":"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","file":"EmbeddedMetadata.js","sourcesContent":["import {ColumnMetadata} from \"./ColumnMetadata\";\nimport {RelationMetadata} from \"./RelationMetadata\";\nimport {EntityMetadata} from \"./EntityMetadata\";\nimport {EmbeddedMetadataArgs} from \"../metadata-args/EmbeddedMetadataArgs\";\nimport {RelationIdMetadata} from \"./RelationIdMetadata\";\nimport {RelationCountMetadata} from \"./RelationCountMetadata\";\nimport {Connection} from \"../connection/Connection\";\nimport {MongoDriver} from \"../driver/mongodb/MongoDriver\";\nimport {EntityListenerMetadata} from \"./EntityListenerMetadata\";\nimport {IndexMetadata} from \"./IndexMetadata\";\nimport {UniqueMetadata} from \"./UniqueMetadata\";\n\n/**\n * Contains all information about entity's embedded property.\n */\nexport class EmbeddedMetadata {\n\n // ---------------------------------------------------------------------\n // Public Properties\n // ---------------------------------------------------------------------\n\n /**\n * Entity metadata where this embedded is.\n */\n entityMetadata: EntityMetadata;\n\n /**\n * Parent embedded in the case if this embedded inside other embedded.\n */\n parentEmbeddedMetadata?: EmbeddedMetadata;\n\n /**\n * Embedded target type.\n */\n type: Function;\n\n /**\n * Property name on which this embedded is attached.\n */\n propertyName: string;\n\n /**\n * Gets full path to this embedded property (including embedded property name).\n * Full path is relevant when embedded is used inside other embeds (one or multiple nested).\n * For example it will return \"counters.subcounters\".\n */\n propertyPath: string;\n\n /**\n * Columns inside this embed.\n */\n columns: ColumnMetadata[] = [];\n\n /**\n * Relations inside this embed.\n */\n relations: RelationMetadata[] = [];\n\n /**\n * Entity listeners inside this embed.\n */\n listeners: EntityListenerMetadata[] = [];\n\n /**\n * Indices applied to the embed columns.\n */\n indices: IndexMetadata[] = [];\n\n /**\n * Uniques applied to the embed columns.\n */\n uniques: UniqueMetadata[] = [];\n\n /**\n * Relation ids inside this embed.\n */\n relationIds: RelationIdMetadata[] = [];\n\n /**\n * Relation counts inside this embed.\n */\n relationCounts: RelationCountMetadata[] = [];\n\n /**\n * Nested embeddable in this embeddable (which has current embedded as parent embedded).\n */\n embeddeds: EmbeddedMetadata[] = [];\n\n /**\n * Indicates if this embedded is in array mode.\n *\n * This option works only in mongodb.\n */\n isArray: boolean = false;\n\n /**\n * Prefix of the embedded, used instead of propertyName.\n * If set to empty string or false, then prefix is not set at all.\n */\n customPrefix: string|boolean|undefined;\n\n /**\n * Gets the prefix of the columns.\n * By default its a property name of the class where this prefix is.\n * But if custom prefix is set then it takes its value as a prefix.\n * However if custom prefix is set to empty string or false, then prefix to column is not applied at all.\n */\n prefix: string;\n\n /**\n * Returns array of property names of current embed and all its parent embeds.\n *\n * example: post[data][information][counters].id where \"data\", \"information\" and \"counters\" are embeds\n * we need to get value of \"id\" column from the post real entity object.\n * this method will return [\"data\", \"information\", \"counters\"]\n */\n parentPropertyNames: string[] = [];\n\n /**\n * Returns array of prefixes of current embed and all its parent embeds.\n */\n parentPrefixes: string[] = [];\n\n /**\n * Returns embed metadatas from all levels of the parent tree.\n *\n * example: post[data][information][counters].id where \"data\", \"information\" and \"counters\" are embeds\n * this method will return [embed metadata of data, embed metadata of information, embed metadata of counters]\n */\n embeddedMetadataTree: EmbeddedMetadata[] = [];\n\n /**\n * Embed metadatas from all levels of the parent tree.\n *\n * example: post[data][information][counters].id where \"data\", \"information\" and \"counters\" are embeds\n * this method will return [embed metadata of data, embed metadata of information, embed metadata of counters]\n */\n columnsFromTree: ColumnMetadata[] = [];\n\n /**\n * Relations of this embed and all relations from its child embeds.\n */\n relationsFromTree: RelationMetadata[] = [];\n\n /**\n * Relations of this embed and all relations from its child embeds.\n */\n listenersFromTree: EntityListenerMetadata[] = [];\n\n /**\n * Indices of this embed and all indices from its child embeds.\n */\n indicesFromTree: IndexMetadata[] = [];\n\n /**\n * Uniques of this embed and all uniques from its child embeds.\n */\n uniquesFromTree: UniqueMetadata[] = [];\n\n /**\n * Relation ids of this embed and all relation ids from its child embeds.\n */\n relationIdsFromTree: RelationIdMetadata[] = [];\n\n /**\n * Relation counts of this embed and all relation counts from its child embeds.\n */\n relationCountsFromTree: RelationCountMetadata[] = [];\n\n // ---------------------------------------------------------------------\n // Constructor\n // ---------------------------------------------------------------------\n\n constructor(options: {\n entityMetadata: EntityMetadata,\n args: EmbeddedMetadataArgs,\n }) {\n this.entityMetadata = options.entityMetadata;\n this.type = options.args.type();\n this.propertyName = options.args.propertyName;\n this.customPrefix = options.args.prefix;\n this.isArray = options.args.isArray;\n }\n\n // ---------------------------------------------------------------------\n // Public Methods\n // ---------------------------------------------------------------------\n\n /**\n * Creates a new embedded object.\n */\n create(): any {\n return new (this.type as any);\n }\n\n // ---------------------------------------------------------------------\n // Builder Methods\n // ---------------------------------------------------------------------\n\n build(connection: Connection): this {\n this.embeddeds.forEach(embedded => embedded.build(connection));\n this.prefix = this.buildPrefix(connection);\n this.parentPropertyNames = this.buildParentPropertyNames();\n this.parentPrefixes = this.buildParentPrefixes();\n this.propertyPath = this.parentPropertyNames.join(\".\");\n this.embeddedMetadataTree = this.buildEmbeddedMetadataTree();\n this.columnsFromTree = this.buildColumnsFromTree();\n this.relationsFromTree = this.buildRelationsFromTree();\n this.listenersFromTree = this.buildListenersFromTree();\n this.indicesFromTree = this.buildIndicesFromTree();\n this.uniquesFromTree = this.buildUniquesFromTree();\n this.relationIdsFromTree = this.buildRelationIdsFromTree();\n this.relationCountsFromTree = this.buildRelationCountsFromTree();\n return this;\n }\n\n // ---------------------------------------------------------------------\n // Protected Methods\n // ---------------------------------------------------------------------\n\n protected buildPartialPrefix(): string[] {\n // if prefix option was not set or explicitly set to true - default prefix\n if (this.customPrefix === undefined || this.customPrefix === true) {\n return [this.propertyName];\n }\n\n // if prefix option was set to empty string or explicity set to false - disable prefix\n if (this.customPrefix === \"\" || this.customPrefix === false) {\n return [];\n }\n\n // use custom prefix\n if (typeof this.customPrefix === \"string\") {\n return [this.customPrefix];\n }\n\n throw new Error(`Invalid prefix option given for ${this.entityMetadata.targetName}#${this.propertyName}`);\n }\n\n protected buildPrefix(connection: Connection): string {\n if (connection.driver instanceof MongoDriver)\n return this.propertyName;\n\n let prefixes: string[] = [];\n if (this.parentEmbeddedMetadata)\n prefixes.push(this.parentEmbeddedMetadata.buildPrefix(connection));\n\n prefixes.push(...this.buildPartialPrefix());\n\n return prefixes.join(\"_\"); // todo: use naming strategy instead of \"_\" !!!\n }\n\n protected buildParentPropertyNames(): string[] {\n return this.parentEmbeddedMetadata ? this.parentEmbeddedMetadata.buildParentPropertyNames().concat(this.propertyName) : [this.propertyName];\n }\n\n protected buildParentPrefixes(): string[] {\n return this.parentEmbeddedMetadata ? this.parentEmbeddedMetadata.buildParentPrefixes().concat(this.buildPartialPrefix()) : this.buildPartialPrefix();\n }\n\n protected buildEmbeddedMetadataTree(): EmbeddedMetadata[] {\n return this.parentEmbeddedMetadata ? this.parentEmbeddedMetadata.buildEmbeddedMetadataTree().concat(this) : [this];\n }\n\n protected buildColumnsFromTree(): ColumnMetadata[] {\n return this.embeddeds.reduce((columns, embedded) => columns.concat(embedded.buildColumnsFromTree()), this.columns);\n }\n\n protected buildRelationsFromTree(): RelationMetadata[] {\n return this.embeddeds.reduce((relations, embedded) => relations.concat(embedded.buildRelationsFromTree()), this.relations);\n }\n\n protected buildListenersFromTree(): EntityListenerMetadata[] {\n return this.embeddeds.reduce((relations, embedded) => relations.concat(embedded.buildListenersFromTree()), this.listeners);\n }\n\n protected buildIndicesFromTree(): IndexMetadata[] {\n return this.embeddeds.reduce((relations, embedded) => relations.concat(embedded.buildIndicesFromTree()), this.indices);\n }\n\n protected buildUniquesFromTree(): UniqueMetadata[] {\n return this.embeddeds.reduce((relations, embedded) => relations.concat(embedded.buildUniquesFromTree()), this.uniques);\n }\n\n protected buildRelationIdsFromTree(): RelationIdMetadata[] {\n return this.embeddeds.reduce((relations, embedded) => relations.concat(embedded.buildRelationIdsFromTree()), this.relationIds);\n }\n\n protected buildRelationCountsFromTree(): RelationCountMetadata[] {\n return this.embeddeds.reduce((relations, embedded) => relations.concat(embedded.buildRelationCountsFromTree()), this.relationCounts);\n }\n\n}\n"],"sourceRoot":".."}
\No newline at end of file