ionic-orm-3
Version:
Data-mapper ORM for Ionic WebSQL and SQLite
71 lines • 3 kB
JavaScript
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