import {useDecorators, StoreSet} from "@tsed/core";
import {Middleware{{#eq middlewarePosition "before"}}, UseBefore{{/eq}}{{#eq middlewarePosition "after"}}, UseAfter{{/eq}}\} from "@tsed/platform-middlewares";
import {Context} from "@tsed/platform-params";
import {Req, Res} from "@tsed/platform-http";

export interface {{symbolName}}Options {

}

@Middleware()
export class {{symbolName}}Middleware {
  use(@Req() req: Req, @Res() res: Res, @Context() context: Context) {
    const {}: {{symbolName}}Options = context.endpoint.get({{symbolName}}Middleware);
    //do something{{#eq middlewarePosition "after"}}
    const data = context.data;
    // do something with data and return data
    return data{{/eq}}
  }
}

export function {{symbolName}}(options: {{symbolName}}Options): MethodDecorator {
  return useDecorators(
    StoreSet({{symbolName}}Middleware, options),
    {{#eq middlewarePosition "before"}}UseBefore({{symbolName}}Middleware){{/eq}}{{#eq middlewarePosition "after"}}UseAfter({{symbolName}}Middleware){{/eq}}
  );
}
