333
schangxiang@126.com
2025-09-19 18966e02fb573c7e2bb0c6426ed792b38b910940
1
{"version":3,"sources":["../browser/src/decorator/relations/ManyToOne.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,sBAAsB,EAA8B,MAAM,QAAQ,CAAC;AAmB3E;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAAI,YAA2C,EAC3C,oBAAkE,EAClE,OAAyB;IAElD,uBAAuB;IACvB,IAAI,mBAAgD,CAAC;IACrD,IAAI,OAAO,oBAAoB,KAAK,QAAQ,EAAE;QAC1C,OAAO,GAAqB,oBAAoB,CAAC;KACpD;SAAM;QACH,mBAAmB,GAAiC,oBAAoB,CAAC;KAC5E;IAED,OAAO,UAAU,MAAc,EAAE,YAAoB;QACjD,IAAI,CAAC,OAAO;YAAE,OAAO,GAAG,EAAqB,CAAC;QAE9C,4CAA4C;QAC5C,IAAI,MAAM,GAAG,OAAO,IAAI,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;QAC7D,IAAI,CAAC,MAAM,IAAI,OAAO,IAAK,OAAe,CAAC,WAAW,EAAE,EAAE,0BAA0B;YAChF,IAAM,aAAa,GAAI,OAAe,CAAC,WAAW,CAAC,aAAa,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;YACxF,IAAI,aAAa,IAAI,OAAO,aAAa,CAAC,IAAI,KAAK,QAAQ,IAAI,aAAa,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,SAAS;gBACzG,MAAM,GAAG,IAAI,CAAC;SACrB;QAED,sBAAsB,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC;YACpC,MAAM,EAAE,MAAM,CAAC,WAAW;YAC1B,YAAY,EAAE,YAAY;YAC1B,+BAA+B;YAC/B,YAAY,EAAE,aAAa;YAC3B,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,YAAY;YAClB,mBAAmB,EAAE,mBAAmB;YACxC,OAAO,EAAE,OAAO;SACK,CAAC,CAAC;IAC/B,CAAC,CAAC;AACN,CAAC","file":"ManyToOne.js","sourcesContent":["import {getMetadataArgsStorage, ObjectType, RelationOptions} from \"../../\";\nimport {RelationMetadataArgs} from \"../../metadata-args/RelationMetadataArgs\";\n\n/**\n * Many-to-one relation allows to create type of relation when Entity1 can have single instance of Entity2, but\n * Entity2 can have a multiple instances of Entity1. Entity1 is an owner of the relationship, and storages Entity2 id\n * on its own side.\n */\nexport function ManyToOne<T>(typeFunction: (type?: any) => ObjectType<T>, options?: RelationOptions): Function;\n\n/**\n * Many-to-one relation allows to create type of relation when Entity1 can have single instance of Entity2, but\n * Entity2 can have a multiple instances of Entity1. Entity1 is an owner of the relationship, and storages Entity2 id\n * on its own side.\n */\nexport function ManyToOne<T>(typeFunction: (type?: any) => ObjectType<T>,\n                             inverseSide?: string|((object: T) => any),\n                             options?: RelationOptions): Function;\n\n/**\n * Many-to-one relation allows to create type of relation when Entity1 can have single instance of Entity2, but\n * Entity2 can have a multiple instances of Entity1. Entity1 is an owner of the relationship, and storages Entity2 id\n * on its own side.\n */\nexport function ManyToOne<T>(typeFunction: (type?: any) => ObjectType<T>,\n                             inverseSideOrOptions?: string|((object: T) => any)|RelationOptions,\n                             options?: RelationOptions): Function {\n\n    // normalize parameters\n    let inverseSideProperty: string|((object: T) => any);\n    if (typeof inverseSideOrOptions === \"object\") {\n        options = <RelationOptions> inverseSideOrOptions;\n    } else {\n        inverseSideProperty = <string|((object: T) => any)> inverseSideOrOptions;\n    }\n\n    return function (object: Object, propertyName: string) {\n        if (!options) options = {} as RelationOptions;\n\n        // now try to determine it its lazy relation\n        let isLazy = options && options.lazy === true ? true : false;\n        if (!isLazy && Reflect && (Reflect as any).getMetadata) { // automatic determination\n            const reflectedType = (Reflect as any).getMetadata(\"design:type\", object, propertyName);\n            if (reflectedType && typeof reflectedType.name === \"string\" && reflectedType.name.toLowerCase() === \"promise\")\n                isLazy = true;\n        }\n\n        getMetadataArgsStorage().relations.push({\n            target: object.constructor,\n            propertyName: propertyName,\n            // propertyType: reflectedType,\n            relationType: \"many-to-one\",\n            isLazy: isLazy,\n            type: typeFunction,\n            inverseSideProperty: inverseSideProperty,\n            options: options\n        } as RelationMetadataArgs);\n    };\n}\n"],"sourceRoot":"../.."}