export declare const ControllerTemplate = "\nimport {\n  type T,\n  Controller,\n  Middleware,\n  Get,\n  Post,\n  Put,\n  Delete,\n  ValidateDto\n} from \"tspace-spear\";\nimport { CatService }    from \"./cat.service\";\nimport { CreateCatDto , UpdateCatDto }  from \"./cat.dto\";\nimport { LogMiddleware } from \"../../common/middlewares/log.middleware\";\n\n@Controller(\"/cats\")\nclass CatController {\n\n  constructor(\n    private catService: CatService = new CatService()\n  ) {}\n\n  @Get(\"/\")\n  @Middleware(LogMiddleware)\n  async index() {\n    const cats = this.catService.index();\n    return { cats };\n  }\n\n  @Get(\"/:id\")\n  @Middleware(LogMiddleware)\n  async show({\n    params\n  }: T.Context<{\n    params: {\n      id: number;\n    };\n  }>) {\n    const cat = this.catService.show(+params.id);\n    return { cat }\n  }\n\n  @Post(\"/\")\n  @ValidateDto(CreateCatDto)\n  @Middleware(LogMiddleware)\n  async create({\n    body\n  }: T.Context<{\n    body: CreateCatDto;\n  }>) {\n\n    const cat = this.catService\n    .create({ \n      name: body.name, \n      age: body.age \n    });\n\n    return { cat };\n  }\n\n  @Put(\"/:id\")\n  @ValidateDto(UpdateCatDto)\n  @Middleware(LogMiddleware)\n  async update({\n    params,\n    body\n  }: T.Context<{\n    params: {\n      id: number;\n    };\n    body: UpdateCatDto;\n  }>) {\n\n    const cat = this.catService\n    .update(+params.id, { \n      name: body.name, \n      age: body.age \n    });\n\n    return { cat }\n  }\n\n  @Delete(\"/:id\")\n  @Middleware(LogMiddleware)\n  async remove({\n    params\n  }: T.Context<{\n    params: {\n      id: number;\n    };\n  }>) {\n\n    const deleted = this.catService\n    .remove(+params.id);\n\n    return deleted;\n  }\n}\n\nexport { CatController };\nexport default CatController;\n";
