File size: 2,483 Bytes
aec3094 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 | 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;
}
}
|