333
schangxiang@126.com
2025-09-19 18966e02fb573c7e2bb0c6426ed792b38b910940
1
{"version":3,"sources":["../../src/query-builder/transformer/RawSqlResultsToEntityTransformer.ts"],"names":[],"mappings":"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","file":"RawSqlResultsToEntityTransformer.js","sourcesContent":["import {Driver} from \"../../driver/Driver\";\nimport {RelationIdLoadResult} from \"../relation-id/RelationIdLoadResult\";\nimport {ObjectLiteral} from \"../../common/ObjectLiteral\";\nimport {ColumnMetadata} from \"../../metadata/ColumnMetadata\";\nimport {Alias} from \"../Alias\";\nimport {RelationCountLoadResult} from \"../relation-count/RelationCountLoadResult\";\nimport {RelationMetadata} from \"../../metadata/RelationMetadata\";\nimport {OrmUtils} from \"../../util/OrmUtils\";\nimport {QueryExpressionMap} from \"../QueryExpressionMap\";\nimport {EntityMetadata} from \"../../metadata/EntityMetadata\";\nimport {QueryRunner} from \"../..\";\nimport {DriverUtils} from \"../../driver/DriverUtils\";\n\n/**\n * Transforms raw sql results returned from the database into entity object.\n * Entity is constructed based on its entity metadata.\n */\nexport class RawSqlResultsToEntityTransformer {\n\n    // -------------------------------------------------------------------------\n    // Constructor\n    // -------------------------------------------------------------------------\n\n    constructor(protected expressionMap: QueryExpressionMap,\n                protected driver: Driver,\n                protected rawRelationIdResults: RelationIdLoadResult[],\n                protected rawRelationCountResults: RelationCountLoadResult[],\n                protected queryRunner?: QueryRunner) {\n    }\n\n    // -------------------------------------------------------------------------\n    // Public Methods\n    // -------------------------------------------------------------------------\n\n    /**\n     * Since db returns a duplicated rows of the data where accuracies of the same object can be duplicated\n     * we need to group our result and we must have some unique id (primary key in our case)\n     */\n    transform(rawResults: any[], alias: Alias): any[] {\n        const group = this.group(rawResults, alias);\n        const entities: any[] = [];\n        group.forEach(results => {\n            const entity = this.transformRawResultsGroup(results, alias);\n            if (entity !== undefined)\n                entities.push(entity);\n        });\n        return entities;\n    }\n\n    // -------------------------------------------------------------------------\n    // Protected Methods\n    // -------------------------------------------------------------------------\n\n    /**\n     * Groups given raw results by ids of given alias.\n     */\n    protected group(rawResults: any[], alias: Alias): Map<string, any[]> {\n        const map = new Map();\n        const keys: string[] = [];\n        if (alias.metadata.tableType === \"view\") {\n            keys.push(...alias.metadata.columns.map(column => DriverUtils.buildColumnAlias(this.driver, alias.name, column.databaseName)));\n        } else {\n            keys.push(...alias.metadata.primaryColumns.map(column => DriverUtils.buildColumnAlias(this.driver, alias.name, column.databaseName)));\n        }\n        rawResults.forEach(rawResult => {\n            const id = keys.map(key => rawResult[key]).join(\"_\"); // todo: check partial\n            if (!id) return;\n\n            const items = map.get(id);\n            if (!items) {\n                map.set(id, [rawResult]);\n            } else {\n                items.push(rawResult);\n            }\n        });\n        return map;\n    }\n\n    /**\n     * Transforms set of data results into single entity.\n     */\n    protected transformRawResultsGroup(rawResults: any[], alias: Alias): ObjectLiteral|undefined {\n        // let hasColumns = false; // , hasEmbeddedColumns = false, hasParentColumns = false, hasParentEmbeddedColumns = false;\n        let metadata = alias.metadata;\n\n        if (metadata.discriminatorColumn) {\n            const discriminatorValues = rawResults.map(result => result[DriverUtils.buildColumnAlias(this.driver, alias.name, alias.metadata.discriminatorColumn!.databaseName)]);\n            const discriminatorMetadata = metadata.childEntityMetadatas.find(childEntityMetadata => {\n                return !!discriminatorValues.find(value => value === childEntityMetadata.discriminatorValue);\n            });\n            if (discriminatorMetadata)\n                metadata = discriminatorMetadata;\n        }\n        let entity: any = this.expressionMap.options.indexOf(\"create-pojo\") !== -1 ? {} : metadata.create(this.queryRunner);\n\n        // get value from columns selections and put them into newly created entity\n        const hasColumns = this.transformColumns(rawResults, alias, entity, metadata);\n        const hasRelations = this.transformJoins(rawResults, entity, alias, metadata);\n        const hasRelationIds = this.transformRelationIds(rawResults, alias, entity, metadata);\n        const hasRelationCounts = this.transformRelationCounts(rawResults, alias, entity);\n\n        // if we have at least one selected column then return this entity\n        // since entity must have at least primary columns to be really selected and transformed into entity\n        if (hasColumns)\n            return entity;\n\n        // if we don't have any selected column we should not return entity,\n        // except for the case when entity only contain a primary column as a relation to another entity\n        // in this case its absolutely possible our entity to not have any columns except a single relation\n        const hasOnlyVirtualPrimaryColumns = metadata.primaryColumns.filter(column => column.isVirtual === false).length === 0; // todo: create metadata.hasOnlyVirtualPrimaryColumns\n        if (hasOnlyVirtualPrimaryColumns && (hasRelations || hasRelationIds || hasRelationCounts))\n            return entity;\n\n        return undefined;\n    }\n\n    // get value from columns selections and put them into object\n    protected transformColumns(rawResults: any[], alias: Alias, entity: ObjectLiteral, metadata: EntityMetadata): boolean {\n        let hasData = false;\n        metadata.columns.forEach(column => {\n\n            // if table inheritance is used make sure this column is not child's column\n            if (metadata.childEntityMetadatas.length > 0 && metadata.childEntityMetadatas.map(metadata => metadata.target).indexOf(column.target) !== -1)\n                return;\n\n            const value = rawResults[0][DriverUtils.buildColumnAlias(this.driver, alias.name, column.databaseName)];\n            if (value === undefined || column.isVirtual)\n                return;\n\n            // if user does not selected the whole entity or he used partial selection and does not select this particular column\n            // then we don't add this column and its value into the entity\n            if (!this.expressionMap.selects.find(select => select.selection === alias.name || select.selection === alias.name + \".\" + column.propertyPath))\n                return;\n\n            column.setEntityValue(entity, this.driver.prepareHydratedValue(value, column));\n            if (value !== null) // we don't mark it as has data because if we will have all nulls in our object - we don't need such object\n                hasData = true;\n        });\n        return hasData;\n    }\n\n    /**\n     * Transforms joined entities in the given raw results by a given alias and stores to the given (parent) entity\n     */\n    protected transformJoins(rawResults: any[], entity: ObjectLiteral, alias: Alias, metadata: EntityMetadata) {\n        let hasData = false;\n\n        // let discriminatorValue: string = \"\";\n        // if (metadata.discriminatorColumn)\n        //     discriminatorValue = rawResults[0][DriverUtils.buildColumnAlias(this.connection.driver, alias.name, alias.metadata.discriminatorColumn!.databaseName)];\n\n        this.expressionMap.joinAttributes.forEach(join => { // todo: we have problem here - when inner joins are used without selects it still create empty array\n\n            // skip joins without metadata\n            if (!join.metadata)\n                return;\n\n            // if simple left or inner join was performed without selection then we don't need to do anything\n            if (!join.isSelected)\n                return;\n\n            // this check need to avoid setting properties than not belong to entity when single table inheritance used. (todo: check if we still need it)\n            // const metadata = metadata.childEntityMetadatas.find(childEntityMetadata => discriminatorValue === childEntityMetadata.discriminatorValue);\n            if (join.relation && !metadata.relations.find(relation => relation === join.relation))\n                return;\n\n            // some checks to make sure this join is for current alias\n            if (join.mapToProperty) {\n                if (join.mapToPropertyParentAlias !== alias.name)\n                    return;\n            } else {\n                if (!join.relation || join.parentAlias !== alias.name || join.relationPropertyPath !== join.relation!.propertyPath)\n                    return;\n            }\n\n            // transform joined data into entities\n            let result: any = this.transform(rawResults, join.alias);\n            result = !join.isMany ? result[0] : result;\n            result = !join.isMany && result === undefined ? null : result; // this is needed to make relations to return null when its joined but nothing was found in the database\n            if (result === undefined) // if nothing was joined then simply return\n                return;\n\n            // if join was mapped to some property then save result to that property\n            if (join.mapToPropertyPropertyName) {\n                entity[join.mapToPropertyPropertyName] = result; // todo: fix embeds\n\n            } else { // otherwise set to relation\n                join.relation!.setEntityValue(entity, result);\n            }\n\n            hasData = true;\n        });\n        return hasData;\n    }\n\n    protected transformRelationIds(rawSqlResults: any[], alias: Alias, entity: ObjectLiteral, metadata: EntityMetadata): boolean {\n        let hasData = false;\n        this.rawRelationIdResults.forEach(rawRelationIdResult => {\n            if (rawRelationIdResult.relationIdAttribute.parentAlias !== alias.name)\n                return;\n\n            const relation = rawRelationIdResult.relationIdAttribute.relation;\n            const valueMap = this.createValueMapFromJoinColumns(relation, rawRelationIdResult.relationIdAttribute.parentAlias, rawSqlResults);\n            if (valueMap === undefined || valueMap === null)\n                return;\n\n            const idMaps = rawRelationIdResult.results.map(result => {\n                const entityPrimaryIds = this.extractEntityPrimaryIds(relation, result);\n                if (EntityMetadata.compareIds(entityPrimaryIds, valueMap) === false)\n                    return;\n\n                let columns: ColumnMetadata[];\n                if (relation.isManyToOne || relation.isOneToOneOwner) {\n                    columns = relation.joinColumns.map(joinColumn => joinColumn);\n                } else if (relation.isOneToMany || relation.isOneToOneNotOwner) {\n                    columns = relation.inverseEntityMetadata.primaryColumns.map(joinColumn => joinColumn);\n                    // columns = relation.inverseRelation!.joinColumns.map(joinColumn => joinColumn.referencedColumn!); //.inverseEntityMetadata.primaryColumns.map(joinColumn => joinColumn);\n                } else { // ManyToMany\n                    if (relation.isOwning) {\n                        columns = relation.inverseJoinColumns.map(joinColumn => joinColumn);\n                    } else {\n                        columns = relation.inverseRelation!.joinColumns.map(joinColumn => joinColumn);\n                    }\n                }\n\n                const idMap = columns.reduce((idMap, column) => {\n                    let value = result[column.databaseName];\n                    if (relation.isOneToMany || relation.isOneToOneNotOwner) {\n                        if (column.referencedColumn) // if column is a relation\n                            value = column.referencedColumn.createValueMap(value);\n\n                        return OrmUtils.mergeDeep(idMap, column.createValueMap(value));\n                    } else {\n                        if (column.referencedColumn!.referencedColumn) // if column is a relation\n                            value = column.referencedColumn!.referencedColumn!.createValueMap(value);\n\n                        return OrmUtils.mergeDeep(idMap, column.referencedColumn!.createValueMap(value));\n                    }\n                }, {} as ObjectLiteral);\n\n                if (columns.length === 1 && rawRelationIdResult.relationIdAttribute.disableMixedMap === false) {\n                    if (relation.isOneToMany || relation.isOneToOneNotOwner) {\n                        return columns[0].getEntityValue(idMap);\n                    } else {\n                        return columns[0].referencedColumn!.getEntityValue(idMap);\n                    }\n                }\n                return idMap;\n            }).filter(result => result);\n\n\n            const properties = rawRelationIdResult.relationIdAttribute.mapToPropertyPropertyPath.split(\".\");\n            const mapToProperty = (properties: string[], map: ObjectLiteral, value: any): any => {\n\n                const property = properties.shift();\n                if (property && properties.length === 0) {\n                    map[property] = value;\n                    return map;\n                } else if (property && properties.length > 0) {\n                    mapToProperty(properties, map[property], value);\n                } else {\n                    return map;\n                }\n            };\n            if (relation.isOneToOne || relation.isManyToOne) {\n                if (idMaps[0] !== undefined) {\n                    mapToProperty(properties, entity, idMaps[0]);\n                    hasData = true;\n                }\n            } else {\n                mapToProperty(properties, entity, idMaps);\n                if (idMaps.length > 0) {\n                    hasData = true;\n                }\n            }\n        });\n\n        return hasData;\n    }\n\n    protected transformRelationCounts(rawSqlResults: any[], alias: Alias, entity: ObjectLiteral): boolean {\n        let hasData = false;\n        this.rawRelationCountResults\n            .filter(rawRelationCountResult => rawRelationCountResult.relationCountAttribute.parentAlias === alias.name)\n            .forEach(rawRelationCountResult => {\n                const relation = rawRelationCountResult.relationCountAttribute.relation;\n                let referenceColumnName: string;\n\n                if (relation.isOneToMany) {\n                    referenceColumnName = relation.inverseRelation!.joinColumns[0].referencedColumn!.databaseName;  // todo: fix joinColumns[0]\n\n                } else {\n                    referenceColumnName = relation.isOwning ? relation.joinColumns[0].referencedColumn!.databaseName : relation.inverseRelation!.joinColumns[0].referencedColumn!.databaseName;\n                }\n\n                const referenceColumnValue = rawSqlResults[0][DriverUtils.buildColumnAlias(this.driver, alias.name, referenceColumnName)]; // we use zero index since its grouped data // todo: selection with alias for entity columns wont work\n                if (referenceColumnValue !== undefined && referenceColumnValue !== null) {\n                    entity[rawRelationCountResult.relationCountAttribute.mapToPropertyPropertyName] = 0;\n                    rawRelationCountResult.results\n                        .filter(result => result[\"parentId\"] === referenceColumnValue)\n                        .forEach(result => {\n                            entity[rawRelationCountResult.relationCountAttribute.mapToPropertyPropertyName] = parseInt(result[\"cnt\"]);\n                            hasData = true;\n                        });\n                }\n            });\n\n        return hasData;\n    }\n\n    private createValueMapFromJoinColumns(relation: RelationMetadata, parentAlias: string, rawSqlResults: any[]): ObjectLiteral {\n        let columns: ColumnMetadata[];\n        if (relation.isManyToOne || relation.isOneToOneOwner) {\n            columns = relation.entityMetadata.primaryColumns.map(joinColumn => joinColumn);\n        } else if (relation.isOneToMany || relation.isOneToOneNotOwner) {\n            columns = relation.inverseRelation!.joinColumns.map(joinColumn => joinColumn);\n        } else {\n            if (relation.isOwning) {\n                columns = relation.joinColumns.map(joinColumn => joinColumn);\n            } else {\n                columns = relation.inverseRelation!.inverseJoinColumns.map(joinColumn => joinColumn);\n            }\n        }\n        return columns.reduce((valueMap, column) => {\n            rawSqlResults.forEach(rawSqlResult => {\n                if (relation.isManyToOne || relation.isOneToOneOwner) {\n                    valueMap[column.databaseName] = this.driver.prepareHydratedValue(rawSqlResult[DriverUtils.buildColumnAlias(this.driver, parentAlias, column.databaseName)], column);\n                } else {\n                    valueMap[column.databaseName] =  this.driver.prepareHydratedValue(rawSqlResult[DriverUtils.buildColumnAlias(this.driver, parentAlias, column.referencedColumn!.databaseName)], column);\n                }\n            });\n            return valueMap;\n        }, {} as ObjectLiteral);\n\n    }\n\n    private extractEntityPrimaryIds(relation: RelationMetadata, relationIdRawResult: any) {\n        let columns: ColumnMetadata[];\n        if (relation.isManyToOne || relation.isOneToOneOwner) {\n            columns = relation.entityMetadata.primaryColumns.map(joinColumn => joinColumn);\n        } else if (relation.isOneToMany || relation.isOneToOneNotOwner) {\n            columns = relation.inverseRelation!.joinColumns.map(joinColumn => joinColumn);\n        } else {\n            if (relation.isOwning) {\n                columns = relation.joinColumns.map(joinColumn => joinColumn);\n            } else {\n                columns = relation.inverseRelation!.inverseJoinColumns.map(joinColumn => joinColumn);\n            }\n        }\n        return columns.reduce((data, column) => {\n            data[column.databaseName] = relationIdRawResult[column.databaseName];\n            return data;\n        }, {} as ObjectLiteral);\n    }\n\n    /*private removeVirtualColumns(entity: ObjectLiteral, alias: Alias) {\n        const virtualColumns = this.expressionMap.selects\n            .filter(select => select.virtual)\n            .map(select => select.selection.replace(alias.name + \".\", \"\"));\n\n        virtualColumns.forEach(virtualColumn => delete entity[virtualColumn]);\n    }*/\n\n}\n"],"sourceRoot":"../.."}