import { Body, Controller, Delete, Get, Inject, Put, Req, UseGuards, } from "@nestjs/common"; import { ProjectService } from "./project.service"; import { ApiTokenGuard } from "src/api/guards/api-token.guard"; import { AdminGuard } from "src/api/guards/admin.guard"; import { ProjectSettingService } from "./settings/project.setting.service"; @Controller("project") @UseGuards(ApiTokenGuard) export class ProjectController { constructor( @Inject(ProjectService) private readonly projectService: ProjectService, @Inject(ProjectSettingService) private readonly projectSettingService: ProjectSettingService ) {} @Put("create") createProject(@Body() body: { name: string }) { return this.projectService.create(body.name); } @Put("create-without-db") @UseGuards(AdminGuard) createProjectWithoutDB(@Body() body: { name: string }) { return this.projectService.create(body.name, false); } @Put("settings/create") createSetting( @Body() body: { key: string; value: string }, @Req() req: Request & { apiToken: { id: string } } ) { return this.projectSettingService.create( req.apiToken.id, body.key, body.value ); } @Delete("settings/delete") deleteSetting( @Body() body: { key: string }, @Req() req: Request & { apiToken: { id: string } } ) { return this.projectSettingService.delete(req.apiToken.id, body.key); } @Get("settings") getAllSettings(@Req() req: Request & { apiToken: { id: string } }) { return this.projectSettingService.getAll(req.apiToken.id); } @Get("api-tokens") @UseGuards(AdminGuard) getAllApiTokens(@Req() req: Request & { apiToken: { id: string } }) { return this.projectService.getAllApiTokens(req.apiToken.id); } }