333
schangxiang@126.com
2025-09-19 18966e02fb573c7e2bb0c6426ed792b38b910940
1
{"version":3,"sources":["../../src/metadata/ForeignKeyMetadata.ts"],"names":[],"mappings":";;AAOA;;GAEG;AACH;IA6DI,wEAAwE;IACxE,cAAc;IACd,wEAAwE;IAExE,4BAAY,OASX;QA1DD;;WAEG;QACH,YAAO,GAAqB,EAAE,CAAC;QAE/B;;WAEG;QACH,sBAAiB,GAAqB,EAAE,CAAC;QA2BzC;;WAEG;QACH,gBAAW,GAAa,EAAE,CAAC;QAE3B;;WAEG;QACH,0BAAqB,GAAa,EAAE,CAAC;QAgBjC,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;QAC7C,IAAI,CAAC,wBAAwB,GAAG,OAAO,CAAC,wBAAwB,CAAC;QACjE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC;QACnD,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,WAAW,CAAC;QAChD,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,WAAW,CAAC;QAChD,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;QACrC,IAAI,OAAO,CAAC,cAAc;YACtB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAC3C,CAAC;IAED,wEAAwE;IACxE,iBAAiB;IACjB,wEAAwE;IAExE;;;OAGG;IACH,kCAAK,GAAL,UAAM,cAAuC;QACzC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAA,MAAM,IAAI,OAAA,MAAM,CAAC,YAAY,EAAnB,CAAmB,CAAC,CAAC;QACnE,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,UAAA,MAAM,IAAI,OAAA,MAAM,CAAC,YAAY,EAAnB,CAAmB,CAAC,CAAC;QACvF,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC;QACnE,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IAC/F,CAAC;IAEL,yBAAC;AAAD,CArGA,AAqGC,IAAA;AArGY,gDAAkB","file":"ForeignKeyMetadata.js","sourcesContent":["import {ColumnMetadata} from \"./ColumnMetadata\";\nimport {EntityMetadata} from \"./EntityMetadata\";\nimport {NamingStrategyInterface} from \"../naming-strategy/NamingStrategyInterface\";\nimport {DeferrableType} from \"./types/DeferrableType\";\nimport {OnDeleteType} from \"./types/OnDeleteType\";\nimport {OnUpdateType} from \"./types/OnUpdateType\";\n\n/**\n * Contains all information about entity's foreign key.\n */\nexport class ForeignKeyMetadata {\n\n    // -------------------------------------------------------------------------\n    // Public Properties\n    // -------------------------------------------------------------------------\n\n    /**\n     * Entity metadata where this foreign key is.\n     */\n    entityMetadata: EntityMetadata;\n\n    /**\n     * Entity metadata which this foreign key references.\n     */\n    referencedEntityMetadata: EntityMetadata;\n\n    /**\n     * Array of columns of this foreign key.\n     */\n    columns: ColumnMetadata[] = [];\n\n    /**\n     * Array of referenced columns.\n     */\n    referencedColumns: ColumnMetadata[] = [];\n\n    /**\n     * What to do with a relation on deletion of the row containing a foreign key.\n     */\n    onDelete?: OnDeleteType;\n\n    /**\n     * What to do with a relation on update of the row containing a foreign key.\n     */\n    onUpdate?: OnUpdateType;\n\n    /**\n     * When to check the constraints of a foreign key.\n     */\n    deferrable?: DeferrableType;\n\n    /**\n     * Gets the table name to which this foreign key is referenced.\n     */\n    referencedTablePath: string;\n\n    /**\n     * Gets foreign key name.\n     */\n    name: string;\n\n    /**\n     * Gets array of column names.\n     */\n    columnNames: string[] = [];\n\n    /**\n     * Gets array of referenced column names.\n     */\n    referencedColumnNames: string[] = [];\n\n    // ---------------------------------------------------------------------\n    // Constructor\n    // ---------------------------------------------------------------------\n\n    constructor(options: {\n        entityMetadata: EntityMetadata,\n        referencedEntityMetadata: EntityMetadata,\n        namingStrategy?: NamingStrategyInterface,\n        columns: ColumnMetadata[],\n        referencedColumns: ColumnMetadata[],\n        onDelete?: OnDeleteType,\n        onUpdate?: OnUpdateType,\n        deferrable?: DeferrableType,\n    }) {\n        this.entityMetadata = options.entityMetadata;\n        this.referencedEntityMetadata = options.referencedEntityMetadata;\n        this.columns = options.columns;\n        this.referencedColumns = options.referencedColumns;\n        this.onDelete = options.onDelete || \"NO ACTION\";\n        this.onUpdate = options.onUpdate || \"NO ACTION\";\n        this.deferrable = options.deferrable;\n        if (options.namingStrategy)\n            this.build(options.namingStrategy);\n    }\n\n    // ---------------------------------------------------------------------\n    // Public Methods\n    // ---------------------------------------------------------------------\n\n    /**\n     * Builds some depend foreign key properties.\n     * Must be called after all entity metadatas and their columns are built.\n     */\n    build(namingStrategy: NamingStrategyInterface) {\n        this.columnNames = this.columns.map(column => column.databaseName);\n        this.referencedColumnNames = this.referencedColumns.map(column => column.databaseName);\n        this.referencedTablePath = this.referencedEntityMetadata.tablePath;\n        this.name = namingStrategy.foreignKeyName(this.entityMetadata.tablePath, this.columnNames);\n    }\n\n}\n"],"sourceRoot":".."}