UNPKG

ionic-orm-3

Version:

Data-mapper ORM for Ionic WebSQL and SQLite

71 lines 3 kB
import { ColumnMetadata } from "../metadata/ColumnMetadata"; import { ForeignKeyMetadata } from "../metadata/ForeignKeyMetadata"; import { TableMetadata } from "../metadata/TableMetadata"; import { IndexMetadata } from "../metadata/IndexMetadata"; import { EntityMetadata } from "../metadata/EntityMetadata"; /** * Helps to create EntityMetadatas for junction tables. */ var JunctionEntityMetadataBuilder = (function () { function JunctionEntityMetadataBuilder() { } JunctionEntityMetadataBuilder.prototype.build = function (driver, lazyRelationsWrapper, args) { var column1 = args.joinTable.referencedColumn; var column2 = args.joinTable.inverseReferencedColumn; var tableMetadata = new TableMetadata({ target: "", name: args.joinTable.name, type: "junction" }); var junctionColumn1 = new ColumnMetadata({ target: "__virtual__", propertyType: column1.type, propertyName: args.joinTable.joinColumnName, mode: "virtual", options: { length: column1.length, type: column1.type, name: args.joinTable.joinColumnName, nullable: false, primary: true } }); var junctionColumn2 = new ColumnMetadata({ target: "__virtual__", propertyType: column2.type, propertyName: args.joinTable.inverseJoinColumnName, mode: "virtual", options: { length: column2.length, type: column2.type, name: args.joinTable.inverseJoinColumnName, nullable: false, primary: true } }); var entityMetadata = new EntityMetadata({ target: "__virtual__", tablesPrefix: driver.options.tablesPrefix, namingStrategy: args.namingStrategy, tableMetadata: tableMetadata, columnMetadatas: [ junctionColumn1, junctionColumn2 ], foreignKeyMetadatas: [ new ForeignKeyMetadata([junctionColumn1], args.firstTable, [column1]), new ForeignKeyMetadata([junctionColumn2], args.secondTable, [column2]) ], indexMetadatas: [ new IndexMetadata({ columns: [args.joinTable.joinColumnName], unique: false }), new IndexMetadata({ columns: [args.joinTable.inverseJoinColumnName], unique: false }) ] }, lazyRelationsWrapper); entityMetadata.columns[0].entityMetadata = entityMetadata; entityMetadata.columns[1].entityMetadata = entityMetadata; return entityMetadata; }; return JunctionEntityMetadataBuilder; }()); export { JunctionEntityMetadataBuilder }; //# sourceMappingURL=JunctionEntityMetadataBuilder.js.map