ph-dev-tools
Version:
Development Tools for PHibernate
58 lines (49 loc) • 1.42 kB
text/typescript
/**
* Created by Papa on 5/20/2016.
*/
import {PropertyDocEntry} from "../../parser/DocEntry";
import {QPropertyBuilder} from "./QPropertyBuilder";
import {QRelationBuilder} from "./QRelationBuilder";
import {QBuilder} from "./../QBuilder";
import {EntityCandidate} from "../../parser/EntityCandidate";
import {QEntityBuilder} from "./QEntityBuilder";
export class IQEntityBuilder implements QBuilder {
public propertyBuilders:QPropertyBuilder[];
public relationBuilders:QRelationBuilder[];
constructor(
public entity:EntityCandidate,
qEntityBuilder:QEntityBuilder
) {
this.propertyBuilders = qEntityBuilder.propertyBuilders;
this.relationBuilders = qEntityBuilder.relationBuilders;
}
build():string {
let entityName = `${this.entity.docEntry.name}`;
let properties = ``;
this.propertyBuilders.forEach((
builder:QPropertyBuilder
) => {
properties += ` ${builder.buildInterfaceDefinition()}\n`;
});
let relations = ``;
this.relationBuilders.forEach((
builder:QRelationBuilder
) => {
relations += ` ${builder.buildInterfaceDefinition()}\n`;
});
let interfaceSource = `//Entity Query
export interface I${entityName}
extends IEntity
{
// Properties
${properties}
// Relations
${relations}
}
export interface IQ${entityName}
extends I${entityName}, IQEntity {
}
`;
return interfaceSource;
}
}