nope/lib/templates/backendClassInterface.handlebars
2020-09-08 10:46:52 +02:00

61 lines
1.7 KiB
Handlebars

// Automatic Genearted File for Backendclass: "{{className}}"
// To update run `npm run build:backend`
import { nopeDispatcher } from "../dispatcher/nopeDispatcher"
import { nopeRemoteObservable } from "../observables/nopeRemoteObservable"
{{!--
/**
* Interface for the Analyzing Result
*/
export interface IAnalyzeResult {
// Name of the Class
className: string,
// Decorators of the Class
classDecorator: DecoratorInformation,
// Methods of the Class
methods: (MethodInformation & DecoratorInformation)[],
// Properties of the Class
properties: (PropertyInformation & DecoratorInformation)[],
// Imports of the Class (contians external Files)
imports: {
content: string,
required: boolean,
}
}
--}}
{{#if imports.required}}
{{{imports.content}}}
{{/if}}
export class {{className}} {
{{#each properties}}
public {{name}}: nopeRemoteObservable<{{{simplifiedSubType}}}>
{{/each}}
/**
* Creates an instance of the Class.
* @param _dispatcher The Dispatcher to use.
*/
constructor(protected _dispatcher: nopeDispatcher){
{{#each properties}}
this.{{name}} = new nopeRemoteObservable(_dispatcher,{
path: '{{uri}}'
})
{{/each}}
}
{{!--
Iterate over the Methods and create the Function Interface
--}}
{{#each methods}}
{{!-- Use the Docu of the Author --}}
{{{authorDescription}}}
public async {{name}}{{{head}}}{
// Perform the Method via the Dispatcher.
{{!-- Perform the Dispather-Call --}}
return await this._dispatcher.performCall<{{{returnType.simplifiedSubType}}}>('{{uri}}', [{{#each params}}{{name}}{{#unless @last}}, {{/unless}}{{/each}}])
}
{{/each}}
}