222
schangxiang@126.com
2025-06-13 6a8393408d8cefcea02b7a598967de8dc1e565c2
1
{"version":3,"sources":["../browser/src/decorator/columns/PrimaryColumn.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,sBAAsB,EAAC,MAAM,QAAQ,CAAC;AACzE,OAAO,EAAC,wBAAwB,EAAC,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAC,kCAAkC,EAAC,MAAM,gDAAgD,CAAC;AAkBlG;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,aAAwC,EAAE,OAAuB;IAC3F,OAAO,UAAU,MAAc,EAAE,YAAoB;QAEjD,uBAAuB;QACvB,IAAI,IAA0B,CAAC;QAC/B,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE;YACnC,IAAI,GAAgB,aAAa,CAAC;SACrC;aAAM;YACH,OAAO,GAAmB,aAAa,CAAC;SAC3C;QACD,IAAI,CAAC,OAAO;YAAE,OAAO,GAAG,EAAmB,CAAC;QAE5C,uDAAuD;QACvD,IAAM,mBAAmB,GAAG,OAAO,IAAK,OAAe,CAAC,WAAW,CAAC,CAAC,CAAE,OAAe,CAAC,WAAW,CAAC,aAAa,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACpJ,IAAI,CAAC,IAAI,IAAI,mBAAmB;YAC5B,IAAI,GAAG,mBAAmB,CAAC;QAE/B,yGAAyG;QACzG,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI;YACrB,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;QAExB,yFAAyF;QACzF,IAAI,CAAC,OAAO,CAAC,IAAI;YACb,MAAM,IAAI,wBAAwB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QAE7D,wFAAwF;QACxF,IAAI,OAAO,CAAC,QAAQ;YAChB,MAAM,IAAI,kCAAkC,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QAEvE,6CAA6C;QAC7C,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;QAEvB,4CAA4C;QAC5C,sBAAsB,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;YAClC,MAAM,EAAE,MAAM,CAAC,WAAW;YAC1B,YAAY,EAAE,YAAY;YAC1B,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,OAAO;SACG,CAAC,CAAC;QAEzB,IAAI,OAAO,CAAC,SAAS,EAAE;YACnB,sBAAsB,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC;gBACtC,MAAM,EAAE,MAAM,CAAC,WAAW;gBAC1B,YAAY,EAAE,YAAY;gBAC1B,QAAQ,EAAE,OAAO,OAAO,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW;aAC3D,CAAC,CAAC;SAC/B;IACL,CAAC,CAAC;AACN,CAAC","file":"PrimaryColumn.js","sourcesContent":["import {ColumnOptions, ColumnType, getMetadataArgsStorage} from \"../../\";\nimport {ColumnTypeUndefinedError} from \"../../error/ColumnTypeUndefinedError\";\nimport {PrimaryColumnCannotBeNullableError} from \"../../error/PrimaryColumnCannotBeNullableError\";\nimport {ColumnMetadataArgs} from \"../../metadata-args/ColumnMetadataArgs\";\nimport { GeneratedMetadataArgs } from \"../../metadata-args/GeneratedMetadataArgs\";\n\n/**\n * Column decorator is used to mark a specific class property as a table column.\n * Only properties decorated with this decorator will be persisted to the database when entity be saved.\n * Primary columns also creates a PRIMARY KEY for this column in a db.\n */\nexport function PrimaryColumn(options?: ColumnOptions): Function;\n\n/**\n * Column decorator is used to mark a specific class property as a table column.\n * Only properties decorated with this decorator will be persisted to the database when entity be saved.\n * Primary columns also creates a PRIMARY KEY for this column in a db.\n */\nexport function PrimaryColumn(type?: ColumnType, options?: ColumnOptions): Function;\n\n/**\n * Column decorator is used to mark a specific class property as a table column.\n * Only properties decorated with this decorator will be persisted to the database when entity be saved.\n * Primary columns also creates a PRIMARY KEY for this column in a db.\n */\nexport function PrimaryColumn(typeOrOptions?: ColumnType|ColumnOptions, options?: ColumnOptions): Function {\n    return function (object: Object, propertyName: string) {\n\n        // normalize parameters\n        let type: ColumnType|undefined;\n        if (typeof typeOrOptions === \"string\") {\n            type = <ColumnType> typeOrOptions;\n        } else {\n            options = <ColumnOptions> typeOrOptions;\n        }\n        if (!options) options = {} as ColumnOptions;\n\n        // if type is not given explicitly then try to guess it\n        const reflectMetadataType = Reflect && (Reflect as any).getMetadata ? (Reflect as any).getMetadata(\"design:type\", object, propertyName) : undefined;\n        if (!type && reflectMetadataType)\n            type = reflectMetadataType;\n\n        // check if there is no type in column options then set type from first function argument, or guessed one\n        if (!options.type && type)\n            options.type = type;\n\n        // if we still don't have a type then we need to give error to user that type is required\n        if (!options.type)\n            throw new ColumnTypeUndefinedError(object, propertyName);\n\n        // check if column is not nullable, because we cannot allow a primary key to be nullable\n        if (options.nullable)\n            throw new PrimaryColumnCannotBeNullableError(object, propertyName);\n\n        // explicitly set a primary to column options\n        options.primary = true;\n\n        // create and register a new column metadata\n        getMetadataArgsStorage().columns.push({\n            target: object.constructor,\n            propertyName: propertyName,\n            mode: \"regular\",\n            options: options\n        } as ColumnMetadataArgs);\n\n        if (options.generated) {\n            getMetadataArgsStorage().generations.push({\n                target: object.constructor,\n                propertyName: propertyName,\n                strategy: typeof options.generated === \"string\" ? options.generated : \"increment\"\n            } as GeneratedMetadataArgs);\n        }\n    };\n}\n\n"],"sourceRoot":"../.."}