69 lines
1.7 KiB
TypeScript
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);
|
|
}
|
|
|
|
}
|