deprecated abstract and embedded decorators

This commit is contained in:
Umed Khudoiberdiev 2017-05-05 12:40:17 +05:00
parent 40f3f31dd5
commit d5c62f3d6c
44 changed files with 61 additions and 127 deletions

View File

@ -1,11 +1,9 @@
import {Column} from "../../../src/index";
import {AbstractEntity} from "../../../src/decorator/entity/AbstractEntity";
import {BasePost} from "./BasePost";
import {PostAuthor} from "./PostAuthor";
import {ManyToOne} from "../../../src/decorator/relations/ManyToOne";
import {PrimaryColumn} from "../../../src/decorator/columns/PrimaryColumn";
@AbstractEntity()
export class BaseObject extends BasePost {
@PrimaryColumn("double", { generated: true })

View File

@ -1,7 +1,5 @@
import {PrimaryGeneratedColumn, Column} from "../../../src/index";
import {AbstractEntity} from "../../../src/decorator/entity/AbstractEntity";
@AbstractEntity()
export class BasePost {
@PrimaryGeneratedColumn()

View File

@ -1,8 +1,6 @@
import {PrimaryGeneratedColumn, Column} from "../../../src/index";
import {Index} from "../../../src/decorator/Index";
import {AbstractEntity} from "../../../src/decorator/entity/AbstractEntity";
@AbstractEntity()
@Index("my_index_with_id_and_text", ["id", "text"])
export class BasePost {

View File

@ -1,7 +1,5 @@
import {Column} from "../../../src/index";
import {EmbeddableEntity} from "../../../src/decorator/entity/EmbeddableEntity";
@EmbeddableEntity()
export class Counters {
@Column()

View File

@ -1,7 +1,5 @@
import {PrimaryGeneratedColumn, Column} from "../../../src/index";
import {AbstractEntity} from "../../../src/decorator/entity/AbstractEntity";
@AbstractEntity()
export class BasePost {
@PrimaryGeneratedColumn()

View File

@ -4,6 +4,8 @@ import {TableMetadataArgs} from "../../metadata-args/TableMetadataArgs";
/**
* Abstract entity is a class that contains columns and relations for all entities that will inherit this entity.
* Database table for the abstract entity is not created.
*
* @deprecated don't use it anymore. Now entity can extend any class with columns, no need to mark it with this decorator
*/
export function AbstractEntity() {
return function (target: Function) {

View File

@ -3,6 +3,8 @@ import {TableMetadataArgs} from "../../metadata-args/TableMetadataArgs";
/**
* This decorator is used on the entities that must be embedded into another entities.
*
* @deprecated don't use it anymore. Now entity can embed any class with columns, no need to mark it with this decorator
*/
export function EmbeddableEntity(): Function {
return function (target: Function) {

View File

@ -17,7 +17,6 @@ import {RelationIdMetadata} from "../metadata/RelationIdMetadata";
import {RelationCountMetadata} from "../metadata/RelationCountMetadata";
import {ColumnTypes} from "../metadata/types/ColumnTypes";
import {ColumnMetadataArgs} from "../metadata-args/ColumnMetadataArgs";
import {TableMetadataArgs} from "../metadata-args/TableMetadataArgs";
import {TableType} from "../metadata/types/TableTypes";
import {MetadataArgsUtils} from "../metadata-args/MetadataArgsUtils";
@ -81,39 +80,6 @@ export class EntityMetadataBuilder {
};
const embeddeds = findEmbeddedsRecursively(MetadataArgsUtils.filterByTarget(allEmbeddeds, inheritanceTree));
// const tables = [mergedArgs.table].concat(mergedArgs.children);
// tables.forEach(tableArgs => {
// find embeddable tables for embeddeds registered in this table and create EmbeddedMetadatas from them
// const findEmbeddedsRecursively = (embeddedArgs: EmbeddedMetadataArgs[]) => {
// const embeddeds: EmbeddedMetadata[] = [];
// embeddedArgs.forEach(embedded => {
// const embeddableTable = embeddableMergedArgs.find(embeddedMergedArgs => embeddedMergedArgs.table.target === embedded.type());
// if (embeddableTable) {
// const columns = embeddableTable.columns.toArray().map(args => new ColumnMetadata(args));
// const relations = embeddableTable.relations.toArray().map(args => new RelationMetadata(args));
// const subEmbeddeds = findEmbeddedsRecursively(embeddableTable.embeddeds.toArray());
// embeddeds.push(new EmbeddedMetadata(columns, relations, subEmbeddeds, embedded));
// }
// });
// return embeddeds;
// };
// const embeddeds = findEmbeddedsRecursively(mergedArgs.embeddeds.toArray());
// create metadatas from args
// const argsForTable = mergedArgs.inheritance && mergedArgs.inheritance.type === "single-table" ? mergedArgs.table : tableArgs;
// const table = new TableMetadata(argsForTable);
// const columns = mergedArgs.columns.toArray().map(args => {
//
// // if column's target is a child table then this column should have all nullable columns
// if (mergedArgs.inheritance &&
// mergedArgs.inheritance.type === "single-table" &&
// args.target !== mergedArgs.table.target && !!mergedArgs.children.find(childTable => childTable.target === args.target)) {
// args.options.nullable = true;
// }
// return new ColumnMetadata(args);
// });
const columns = MetadataArgsUtils.filterByTarget(allColumns, inheritanceTree).map(args => new ColumnMetadata(args));
const relations = MetadataArgsUtils.filterByTarget(allRelations, inheritanceTree).map(args => new RelationMetadata(args));
@ -121,9 +87,6 @@ export class EntityMetadataBuilder {
const relationCounts = MetadataArgsUtils.filterByTarget(allRelationCounts, inheritanceTree).map(args => new RelationCountMetadata(args));
const indices = MetadataArgsUtils.filterByTarget(allIndices, inheritanceTree).map(args => new IndexMetadata(args));
// const discriminatorValueArgs = mergedArgs.discriminatorValues.find(discriminatorValueArgs => {
// return discriminatorValueArgs.target === tableArgs.target;
// });
// create a new entity metadata
const entityMetadata = new EntityMetadata({
junction: false,
@ -174,16 +137,6 @@ export class EntityMetadataBuilder {
});
});
// after all metadatas created we set parent entity metadata for class-table inheritance
// entityMetadatas.forEach(entityMetadata => {
// const mergedArgs = realTables.find(args => args.target === entityMetadata.target);
// if (mergedArgs && mergedArgs.parent) {
// const parentEntityMetadata = entityMetadatas.find(entityMetadata => entityMetadata.target === (mergedArgs!.parent! as any).target); // todo: weird compiler error here, thats why type casing is used
// if (parentEntityMetadata)
// entityMetadata.parentEntityMetadata = parentEntityMetadata;
// }
// });
// generate virtual column with foreign key for class-table inheritance
entityMetadatas
.filter(metadata => !!metadata.parentEntityMetadata)
@ -671,4 +624,54 @@ export class EntityMetadataBuilder {
return metadata;
}*/
}
}
// const tables = [mergedArgs.table].concat(mergedArgs.children);
// tables.forEach(tableArgs => {
// find embeddable tables for embeddeds registered in this table and create EmbeddedMetadatas from them
// const findEmbeddedsRecursively = (embeddedArgs: EmbeddedMetadataArgs[]) => {
// const embeddeds: EmbeddedMetadata[] = [];
// embeddedArgs.forEach(embedded => {
// const embeddableTable = embeddableMergedArgs.find(embeddedMergedArgs => embeddedMergedArgs.table.target === embedded.type());
// if (embeddableTable) {
// const columns = embeddableTable.columns.toArray().map(args => new ColumnMetadata(args));
// const relations = embeddableTable.relations.toArray().map(args => new RelationMetadata(args));
// const subEmbeddeds = findEmbeddedsRecursively(embeddableTable.embeddeds.toArray());
// embeddeds.push(new EmbeddedMetadata(columns, relations, subEmbeddeds, embedded));
// }
// });
// return embeddeds;
// };
// const embeddeds = findEmbeddedsRecursively(mergedArgs.embeddeds.toArray());
// create metadatas from args
// const argsForTable = mergedArgs.inheritance && mergedArgs.inheritance.type === "single-table" ? mergedArgs.table : tableArgs;
// const table = new TableMetadata(argsForTable);
// const columns = mergedArgs.columns.toArray().map(args => {
//
// // if column's target is a child table then this column should have all nullable columns
// if (mergedArgs.inheritance &&
// mergedArgs.inheritance.type === "single-table" &&
// args.target !== mergedArgs.table.target && !!mergedArgs.children.find(childTable => childTable.target === args.target)) {
// args.options.nullable = true;
// }
// return new ColumnMetadata(args);
// });
// const discriminatorValueArgs = mergedArgs.discriminatorValues.find(discriminatorValueArgs => {
// return discriminatorValueArgs.target === tableArgs.target;
// });
// after all metadatas created we set parent entity metadata for class-table inheritance
// entityMetadatas.forEach(entityMetadata => {
// const mergedArgs = realTables.find(args => args.target === entityMetadata.target);
// if (mergedArgs && mergedArgs.parent) {
// const parentEntityMetadata = entityMetadatas.find(entityMetadata => entityMetadata.target === (mergedArgs!.parent! as any).target); // todo: weird compiler error here, thats why type casing is used
// if (parentEntityMetadata)
// entityMetadata.parentEntityMetadata = parentEntityMetadata;
// }
// });

View File

@ -1,7 +1,5 @@
import {Column} from "../../../../../src/decorator/columns/Column";
import {EmbeddableEntity} from "../../../../../src/decorator/entity/EmbeddableEntity";
@EmbeddableEntity()
export class Counters {
@Column()

View File

@ -1,7 +1,5 @@
import {EmbeddableEntity} from "../../../../../src/decorator/entity/EmbeddableEntity";
import {Column} from "../../../../../src/decorator/columns/Column";
@EmbeddableEntity()
export class Counters {
@Column()

View File

@ -1,4 +1,3 @@
import {EmbeddableEntity} from "../../../../../src/decorator/entity/EmbeddableEntity";
import {Column} from "../../../../../src/decorator/columns/Column";
import {Embedded} from "../../../../../src/decorator/Embedded";
import {ManyToMany} from "../../../../../src/decorator/relations/ManyToMany";
@ -6,7 +5,6 @@ import {JoinTable} from "../../../../../src/decorator/relations/JoinTable";
import {Subcounters} from "./Subcounters";
import {User} from "./User";
@EmbeddableEntity()
export class Counters {
@Column()

View File

@ -1,7 +1,5 @@
import {EmbeddableEntity} from "../../../../../src/decorator/entity/EmbeddableEntity";
import {Column} from "../../../../../src/decorator/columns/Column";
@EmbeddableEntity()
export class Subcounters {
@Column()

View File

@ -1,11 +1,9 @@
import {EmbeddableEntity} from "../../../../../src/decorator/entity/EmbeddableEntity";
import {Column} from "../../../../../src/decorator/columns/Column";
import {Embedded} from "../../../../../src/decorator/Embedded";
import {ManyToMany} from "../../../../../src/decorator/relations/ManyToMany";
import {Subcounters} from "./Subcounters";
import {User} from "./User";
@EmbeddableEntity()
export class Counters {
@Column()

View File

@ -1,7 +1,5 @@
import {EmbeddableEntity} from "../../../../../src/decorator/entity/EmbeddableEntity";
import {Column} from "../../../../../src/decorator/columns/Column";
@EmbeddableEntity()
export class Subcounters {
@Column()

View File

@ -1,4 +1,3 @@
import {EmbeddableEntity} from "../../../../../src/decorator/entity/EmbeddableEntity";
import {Column} from "../../../../../src/decorator/columns/Column";
import {Embedded} from "../../../../../src/decorator/Embedded";
import {ManyToMany} from "../../../../../src/decorator/relations/ManyToMany";
@ -7,7 +6,6 @@ import {PrimaryColumn} from "../../../../../src/decorator/columns/PrimaryColumn"
import {Subcounters} from "./Subcounters";
import {User} from "./User";
@EmbeddableEntity()
export class Counters {
@PrimaryColumn()

View File

@ -1,8 +1,6 @@
import {EmbeddableEntity} from "../../../../../src/decorator/entity/EmbeddableEntity";
import {Column} from "../../../../../src/decorator/columns/Column";
import {PrimaryColumn} from "../../../../../src/decorator/columns/PrimaryColumn";
@EmbeddableEntity()
export class Subcounters {
@PrimaryColumn()

View File

@ -1,4 +1,3 @@
import {EmbeddableEntity} from "../../../../../src/decorator/entity/EmbeddableEntity";
import {Column} from "../../../../../src/decorator/columns/Column";
import {JoinColumn} from "../../../../../src/decorator/relations/JoinColumn";
import {ManyToOne} from "../../../../../src/decorator/relations/ManyToOne";
@ -6,7 +5,6 @@ import {Embedded} from "../../../../../src/decorator/Embedded";
import {User} from "./User";
import {Subcounters} from "./Subcounters";
@EmbeddableEntity()
export class Counters {
@Column()

View File

@ -1,7 +1,5 @@
import {EmbeddableEntity} from "../../../../../src/decorator/entity/EmbeddableEntity";
import {Column} from "../../../../../src/decorator/columns/Column";
@EmbeddableEntity()
export class Subcounters {
@Column()

View File

@ -1,11 +1,9 @@
import {EmbeddableEntity} from "../../../../../src/decorator/entity/EmbeddableEntity";
import {Column} from "../../../../../src/decorator/columns/Column";
import {Embedded} from "../../../../../src/decorator/Embedded";
import {OneToMany} from "../../../../../src/decorator/relations/OneToMany";
import {User} from "./User";
import {Subcounters} from "./Subcounters";
@EmbeddableEntity()
export class Counters {
@Column()

View File

@ -1,7 +1,5 @@
import {EmbeddableEntity} from "../../../../../src/decorator/entity/EmbeddableEntity";
import {Column} from "../../../../../src/decorator/columns/Column";
@EmbeddableEntity()
export class Subcounters {
@Column()

View File

@ -1,4 +1,3 @@
import {EmbeddableEntity} from "../../../../../src/decorator/entity/EmbeddableEntity";
import {Column} from "../../../../../src/decorator/columns/Column";
import {JoinColumn} from "../../../../../src/decorator/relations/JoinColumn";
import {ManyToOne} from "../../../../../src/decorator/relations/ManyToOne";
@ -7,7 +6,6 @@ import {User} from "./User";
import {Subcounters} from "./Subcounters";
import {PrimaryColumn} from "../../../../../src/decorator/columns/PrimaryColumn";
@EmbeddableEntity()
export class Counters {
@PrimaryColumn()

View File

@ -1,8 +1,6 @@
import {EmbeddableEntity} from "../../../../../src/decorator/entity/EmbeddableEntity";
import {Column} from "../../../../../src/decorator/columns/Column";
import {PrimaryColumn} from "../../../../../src/decorator/columns/PrimaryColumn";
@EmbeddableEntity()
export class Subcounters {
@PrimaryColumn()

View File

@ -1,4 +1,3 @@
import {EmbeddableEntity} from "../../../../../src/decorator/entity/EmbeddableEntity";
import {Column} from "../../../../../src/decorator/columns/Column";
import {JoinColumn} from "../../../../../src/decorator/relations/JoinColumn";
import {ManyToOne} from "../../../../../src/decorator/relations/ManyToOne";
@ -6,7 +5,6 @@ import {Embedded} from "../../../../../src/decorator/Embedded";
import {User} from "./User";
import {Subcounters} from "./Subcounters";
@EmbeddableEntity()
export class Counters {
@Column()

View File

@ -1,7 +1,5 @@
import {EmbeddableEntity} from "../../../../../src/decorator/entity/EmbeddableEntity";
import {Column} from "../../../../../src/decorator/columns/Column";
@EmbeddableEntity()
export class Subcounters {
@Column()

View File

@ -1,4 +1,3 @@
import {EmbeddableEntity} from "../../../../../src/decorator/entity/EmbeddableEntity";
import {Column} from "../../../../../src/decorator/columns/Column";
import {JoinColumn} from "../../../../../src/decorator/relations/JoinColumn";
import {Embedded} from "../../../../../src/decorator/Embedded";
@ -6,7 +5,6 @@ import {OneToOne} from "../../../../../src/decorator/relations/OneToOne";
import {User} from "./User";
import {Subcounters} from "./Subcounters";
@EmbeddableEntity()
export class Counters {
@Column()

View File

@ -1,7 +1,5 @@
import {EmbeddableEntity} from "../../../../../src/decorator/entity/EmbeddableEntity";
import {Column} from "../../../../../src/decorator/columns/Column";
@EmbeddableEntity()
export class Subcounters {
@Column()

View File

@ -1,10 +1,8 @@
import {EmbeddableEntity} from "../../../../../src/decorator/entity/EmbeddableEntity";
import {Column} from "../../../../../src/decorator/columns/Column";
import {PrimaryColumn} from "../../../../../src/decorator/columns/PrimaryColumn";
import {Embedded} from "../../../../../src/decorator/Embedded";
import {Subcounters} from "./Subcounters";
@EmbeddableEntity()
export class Counters {
@PrimaryColumn()

View File

@ -1,8 +1,6 @@
import {EmbeddableEntity} from "../../../../../src/decorator/entity/EmbeddableEntity";
import {Column} from "../../../../../src/decorator/columns/Column";
import {PrimaryColumn} from "../../../../../src/decorator/columns/PrimaryColumn";
@EmbeddableEntity()
export class Subcounters {
@PrimaryColumn()

View File

@ -1,8 +1,6 @@
import {EmbeddableEntity} from "../../../../../src/decorator/entity/EmbeddableEntity";
import {Column} from "../../../../../src/decorator/columns/Column";
import {PrimaryColumn} from "../../../../../src/decorator/columns/PrimaryColumn";
@EmbeddableEntity()
export class Counters {
@PrimaryColumn({unique: true})

View File

@ -1,8 +1,6 @@
import {EmbeddableEntity} from "../../../../../src/decorator/entity/EmbeddableEntity";
import {Column} from "../../../../../src/decorator/columns/Column";
import {PrimaryColumn} from "../../../../../src/decorator/columns/PrimaryColumn";
@EmbeddableEntity()
export class Counters {
@PrimaryColumn()

View File

@ -1,4 +1,3 @@
import {EmbeddableEntity} from "../../../../src/decorator/entity/EmbeddableEntity";
import {Column} from "../../../../src/decorator/columns/Column";
import {Embedded} from "../../../../src/decorator/Embedded";
import {ManyToMany} from "../../../../src/decorator/relations/ManyToMany";
@ -6,7 +5,6 @@ import {JoinTable} from "../../../../src/decorator/relations/JoinTable";
import {Subcounters} from "./Subcounters";
import {User} from "./User";
@EmbeddableEntity()
export class Counters {
@Column()

View File

@ -1,10 +1,8 @@
import {EmbeddableEntity} from "../../../../src/decorator/entity/EmbeddableEntity";
import {Column} from "../../../../src/decorator/columns/Column";
import {ManyToMany} from "../../../../src/decorator/relations/ManyToMany";
import {JoinTable} from "../../../../src/decorator/relations/JoinTable";
import {User} from "./User";
@EmbeddableEntity()
export class Subcounters {
@Column()

View File

@ -1,9 +1,7 @@
import {EmbeddableEntity} from "../../../../../src/decorator/entity/EmbeddableEntity";
import {Column} from "../../../../../src/decorator/columns/Column";
import {Embedded} from "../../../../../src/decorator/Embedded";
import {Subcounters} from "./Subcounters";
@EmbeddableEntity()
export class Counters {
@Column()

View File

@ -1,7 +1,5 @@
import {EmbeddableEntity} from "../../../../../src/decorator/entity/EmbeddableEntity";
import {Column} from "../../../../../src/decorator/columns/Column";
@EmbeddableEntity()
export class Subcounters {
@Column()

View File

@ -1,7 +1,5 @@
import {EmbeddableEntity} from "../../../../../../src/decorator/entity/EmbeddableEntity";
import {Column} from "../../../../../../src/decorator/columns/Column";
@EmbeddableEntity()
export class Counters {
@Column()

View File

@ -1,9 +1,7 @@
import {EmbeddableEntity} from "../../../../../../src/decorator/entity/EmbeddableEntity";
import {Column} from "../../../../../../src/decorator/columns/Column";
import {Embedded} from "../../../../../../src/decorator/Embedded";
import {Information} from "./Information";
@EmbeddableEntity()
export class Counters {
@Column()

View File

@ -1,7 +1,5 @@
import {EmbeddableEntity} from "../../../../../../src/decorator/entity/EmbeddableEntity";
import {Column} from "../../../../../../src/decorator/columns/Column";
@EmbeddableEntity()
export class Information {
@Column()

View File

@ -1,7 +1,5 @@
import {EmbeddableEntity} from "../../../../../src/decorator/entity/EmbeddableEntity";
import {Column} from "../../../../../src/decorator/columns/Column";
@EmbeddableEntity()
export class Counters {
@Column()

View File

@ -4,7 +4,8 @@ import { Connection } from "../../../src/connection/Connection";
import { Employee } from "./entity/Employee";
import { expect } from "chai";
describe("github issues > #131 Error with single table inheritance query without additional conditions", () => {
// unskip once table inheritance is back
describe.skip("github issues > #131 Error with single table inheritance query without additional conditions", () => {
let connections: Connection[];
before(async () => connections = await createTestingConnections({

View File

@ -3,7 +3,8 @@ import {createTestingConnections, closeTestingConnections, reloadTestingDatabase
import {Connection} from "../../../src/connection/Connection";
import {Student} from "./entity/Student";
describe("github issues > #144 Class Table Inheritance doesn't seem to work", () => {
// unskip once table inheritance is back
describe.skip("github issues > #144 Class Table Inheritance doesn't seem to work", () => {
let connections: Connection[];
before(async () => connections = await createTestingConnections({

View File

@ -4,7 +4,8 @@ import {Connection} from "../../../src/connection/Connection";
import {Department} from "./entity/Department";
import {Employee} from "./entity/Employee";
describe("github issues > #159 Referencing ClassTableChild build table error", () => {
// unskip once table inheritance support is back
describe.skip("github issues > #159 Referencing ClassTableChild build table error", () => {
let connections: Connection[];
before(async () => connections = await createTestingConnections({

View File

@ -1,7 +1,5 @@
import {Column} from "../../../../src/decorator/columns/Column";
import {EmbeddableEntity} from "../../../../src/decorator/entity/EmbeddableEntity";
@EmbeddableEntity()
export class Contact {
@Column()

View File

@ -1,7 +1,5 @@
import {Column} from "../../../../src/decorator/columns/Column";
import {EmbeddableEntity} from "../../../../src/decorator/entity/EmbeddableEntity";
@EmbeddableEntity()
export class Duration {
@Column({ nullable: true })

View File

@ -1,7 +1,5 @@
import {Column} from "../../../../src/decorator/columns/Column";
import {EmbeddableEntity} from "../../../../src/decorator/entity/EmbeddableEntity";
@EmbeddableEntity()
export class Duration {
@Column({ name: "duration_minutes" })