| | import { VariableListRequestDto } from '@n8n/api-types'; |
| | import { |
| | Delete, |
| | Get, |
| | GlobalScope, |
| | Licensed, |
| | Patch, |
| | Post, |
| | Query, |
| | RestController, |
| | } from '@n8n/decorators'; |
| |
|
| | import { BadRequestError } from '@/errors/response-errors/bad-request.error'; |
| | import { NotFoundError } from '@/errors/response-errors/not-found.error'; |
| | import { VariableCountLimitReachedError } from '@/errors/variable-count-limit-reached.error'; |
| | import { VariableValidationError } from '@/errors/variable-validation.error'; |
| | import { VariablesRequest } from '@/requests'; |
| |
|
| | import { VariablesService } from './variables.service.ee'; |
| |
|
| | @RestController('/variables') |
| | export class VariablesController { |
| | constructor(private readonly variablesService: VariablesService) {} |
| |
|
| | @Get('/') |
| | @GlobalScope('variable:list') |
| | async getVariables(_req: unknown, _res: unknown, @Query query: VariableListRequestDto) { |
| | return await this.variablesService.getAllCached(query.state); |
| | } |
| |
|
| | @Post('/') |
| | @Licensed('feat:variables') |
| | @GlobalScope('variable:create') |
| | async createVariable(req: VariablesRequest.Create) { |
| | const variable = req.body; |
| | delete variable.id; |
| | try { |
| | return await this.variablesService.create(variable); |
| | } catch (error) { |
| | if (error instanceof VariableCountLimitReachedError) { |
| | throw new BadRequestError(error.message); |
| | } else if (error instanceof VariableValidationError) { |
| | throw new BadRequestError(error.message); |
| | } |
| | throw error; |
| | } |
| | } |
| |
|
| | @Get('/:id') |
| | @GlobalScope('variable:read') |
| | async getVariable(req: VariablesRequest.Get) { |
| | const id = req.params.id; |
| | const variable = await this.variablesService.getCached(id); |
| | if (variable === null) { |
| | throw new NotFoundError(`Variable with id ${req.params.id} not found`); |
| | } |
| | return variable; |
| | } |
| |
|
| | @Patch('/:id') |
| | @Licensed('feat:variables') |
| | @GlobalScope('variable:update') |
| | async updateVariable(req: VariablesRequest.Update) { |
| | const id = req.params.id; |
| | const variable = req.body; |
| | delete variable.id; |
| | try { |
| | return await this.variablesService.update(id, variable); |
| | } catch (error) { |
| | if (error instanceof VariableCountLimitReachedError) { |
| | throw new BadRequestError(error.message); |
| | } else if (error instanceof VariableValidationError) { |
| | throw new BadRequestError(error.message); |
| | } |
| | throw error; |
| | } |
| | } |
| |
|
| | @Delete('/:id') |
| | @GlobalScope('variable:delete') |
| | async deleteVariable(req: VariablesRequest.Delete) { |
| | const id = req.params.id; |
| | await this.variablesService.delete(id); |
| |
|
| | return true; |
| | } |
| | } |
| |
|