Files
few-line-engine/src/project/project.controller.ts
2025-10-14 20:17:18 +03:00

69 lines
1.7 KiB
TypeScript

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);
}
}