333
schangxiang@126.com
2025-09-19 18966e02fb573c7e2bb0c6426ed792b38b910940
1
{"version":3,"sources":["../browser/src/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,mBAAmB,EAAC,MAAM,uBAAuB,CAAC;AAI1D;IAEI,4EAA4E;IAC5E,cAAc;IACd,4EAA4E;IAE5E,kDAAsB,aAAiC;QAAjC,kBAAa,GAAb,aAAa,CAAoB;IACvD,CAAC;IAED,4EAA4E;IAC5E,iBAAiB;IACjB,4EAA4E;IAE5E,4DAAS,GAAT;QAEI,cAAc;QACd,wBAAwB;QACxB,mDAAmD;QACnD,2BAA2B;QAC3B,oDAAoD;QACpD,iCAAiC;QACjC,6EAA6E;QARjF,iBA8BC;QApBG,oHAAoH;QACpH,IAAI,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE;YAC9B,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,UAAA,UAAU;gBAChE,IAAM,SAAS,GAAG,KAAI,CAAC,mBAAmB,CAAC,KAAI,CAAC,aAAa,CAAC,SAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;gBAC3F,KAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC5D,CAAC,CAAC,CAAC;SACN;QAED,mHAAmH;QACnH,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,OAAO,CAAC,UAAA,IAAI;YAE1C,2FAA2F;YAC3F,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU;gBAC1C,OAAO;YAEX,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,UAAA,UAAU;gBACxC,IAAM,SAAS,GAAG,KAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;gBACxE,KAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC5D,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IAED,4EAA4E;IAC5E,kBAAkB;IAClB,4EAA4E;IAEpE,sEAAmB,GAA3B,UAA4B,eAAuB,EAAE,UAA8B;QAC/E,OAAO,IAAI,mBAAmB,CAAC,IAAI,CAAC,aAAa,EAAE;YAC/C,YAAY,EAAE,eAAe,GAAG,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,YAAY;YACtE,aAAa,EAAE,eAAe,GAAG,GAAG,GAAG,UAAU,CAAC,YAAY;YAC9D,KAAK,EAAE,UAAU,CAAC,KAAK;YACvB,mBAAmB,EAAE,UAAU,CAAC,mBAAmB;SACtD,CAAC,CAAC;IACP,CAAC;IAEL,+CAAC;AAAD,CA1DA,AA0DC,IAAA","file":"RelationIdMetadataToAttributeTransformer.js","sourcesContent":["import {RelationIdAttribute} from \"./RelationIdAttribute\";\nimport {QueryExpressionMap} from \"../QueryExpressionMap\";\nimport {RelationIdMetadata} from \"../../metadata/RelationIdMetadata\";\n\nexport class RelationIdMetadataToAttributeTransformer {\n\n    // -------------------------------------------------------------------------\n    // Constructor\n    // -------------------------------------------------------------------------\n\n    constructor(protected expressionMap: QueryExpressionMap) {\n    }\n\n    // -------------------------------------------------------------------------\n    // Public Methods\n    // -------------------------------------------------------------------------\n\n    transform() {\n\n        // by example:\n        // post has relation id:\n        // @RelationId(post => post.categories) categoryIds\n        // category has relation id\n        // @RelationId(category => category.images) imageIds\n        // we load post and join category\n        // we expect post.categoryIds and post.category.imageIds to have relation ids\n\n        // first create relation id attributes for all relation id metadatas of the main selected object (post from example)\n        if (this.expressionMap.mainAlias) {\n            this.expressionMap.mainAlias.metadata.relationIds.forEach(relationId => {\n                const attribute = this.metadataToAttribute(this.expressionMap.mainAlias!.name, relationId);\n                this.expressionMap.relationIdAttributes.push(attribute);\n            });\n        }\n\n        // second create relation id attributes for all relation id metadatas of all joined objects (category from example)\n        this.expressionMap.joinAttributes.forEach(join => {\n\n            // ensure this join has a metadata, because relation id can only work for real orm entities\n            if (!join.metadata || join.metadata.isJunction)\n                return;\n\n            join.metadata.relationIds.forEach(relationId => {\n                const attribute = this.metadataToAttribute(join.alias.name, relationId);\n                this.expressionMap.relationIdAttributes.push(attribute);\n            });\n        });\n    }\n\n    // -------------------------------------------------------------------------\n    // Private Methods\n    // -------------------------------------------------------------------------\n\n    private metadataToAttribute(parentAliasName: string, relationId: RelationIdMetadata): RelationIdAttribute {\n        return new RelationIdAttribute(this.expressionMap, {\n            relationName: parentAliasName + \".\" + relationId.relation.propertyName, // category.images\n            mapToProperty: parentAliasName + \".\" + relationId.propertyName, // category.imageIds\n            alias: relationId.alias,\n            queryBuilderFactory: relationId.queryBuilderFactory\n        });\n    }\n\n}"],"sourceRoot":"../.."}