ToolJet/server/src/modules/versions/controller.ts
2025-02-25 12:22:50 +05:30

41 lines
1.8 KiB
TypeScript

import { InitModule } from '@modules/app/decorators/init-module';
import { VersionService } from './service';
import { Body, Controller, Delete, Get, Post, UseGuards } from '@nestjs/common';
import { MODULES } from '@modules/app/constants/modules';
import { JwtAuthGuard } from '@modules/session/guards/jwt-auth.guard';
import { ValidAppGuard } from '@modules/apps/guards/valid-app.guard';
import { FeatureAbilityGuard } from './ability/guard';
import { InitFeature } from '@modules/app/decorators/init-feature.decorator';
import { FEATURE_KEY } from './constants';
import { User } from '@modules/app/decorators/user.decorator';
import { User as UserEntity } from '@entities/user.entity';
import { App as AppEntity } from '@entities/app.entity';
import { AppDecorator as App } from '@modules/app/decorators/app.decorator';
import { VersionCreateDto } from './dto';
import { IVersionController } from './interfaces/IController';
@InitModule(MODULES.VERSION)
@Controller('apps')
export class VersionController implements IVersionController {
constructor(protected readonly versionService: VersionService) {}
@InitFeature(FEATURE_KEY.GET)
@UseGuards(JwtAuthGuard, ValidAppGuard, FeatureAbilityGuard)
@Get(':id/versions')
fetchVersions(@App() app: AppEntity) {
return this.versionService.getAllVersions(app);
}
@InitFeature(FEATURE_KEY.CREATE)
@UseGuards(JwtAuthGuard, ValidAppGuard, FeatureAbilityGuard)
@Post(':id/versions')
createVersion(@User() user, @App() app: AppEntity, @Body() versionCreateDto: VersionCreateDto) {
return this.versionService.createVersion(app, user, versionCreateDto);
}
@InitFeature(FEATURE_KEY.DELETE)
@UseGuards(JwtAuthGuard, ValidAppGuard, FeatureAbilityGuard)
@Delete(':id/versions/:versionId')
deleteVersion(@User() user: UserEntity, @App() app: AppEntity) {
return this.versionService.deleteVersion(app, user);
}
}