UNPKG

ph-dev-tools

Version:
58 lines (49 loc) 1.42 kB
/** * 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; } }