refactor(core): Use Dependency Injection for all Controller classes (no-changelog) (#8146)
## Review / Merge checklist - [x] PR title and summary are descriptive
This commit is contained in:
committed by
GitHub
parent
518a99e528
commit
f69ddcd796
@@ -24,6 +24,7 @@ import { type ServiceClass, ShutdownService } from '@/shutdown/Shutdown.service'
|
||||
export const OnShutdown =
|
||||
(priority = 100): MethodDecorator =>
|
||||
(prototype, propertyKey, descriptor) => {
|
||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
||||
const serviceClass = prototype.constructor as ServiceClass;
|
||||
const methodName = String(propertyKey);
|
||||
// TODO: assert that serviceClass is decorated with @Service
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
import { Service } from 'typedi';
|
||||
import { CONTROLLER_BASE_PATH } from './constants';
|
||||
|
||||
export const RestController =
|
||||
(basePath: `/${string}` = '/'): ClassDecorator =>
|
||||
(target: object) => {
|
||||
Reflect.defineMetadata(CONTROLLER_BASE_PATH, basePath, target);
|
||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
||||
return Service()(target);
|
||||
};
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
import { Container } from 'typedi';
|
||||
import { Router } from 'express';
|
||||
import type { Application, Request, Response, RequestHandler } from 'express';
|
||||
import type { Config } from '@/config';
|
||||
import type { Class } from 'n8n-core';
|
||||
|
||||
import config from '@/config';
|
||||
import type { AuthenticatedRequest } from '@/requests';
|
||||
import { send } from '@/ResponseHelper'; // TODO: move `ResponseHelper.send` to this file
|
||||
import {
|
||||
@@ -21,7 +24,7 @@ import type {
|
||||
ScopeMetadata,
|
||||
} from './types';
|
||||
import type { BooleanLicenseFeature } from '@/Interfaces';
|
||||
import Container from 'typedi';
|
||||
|
||||
import { License } from '@/License';
|
||||
import type { Scope } from '@n8n/permissions';
|
||||
import { ApplicationError } from 'n8n-workflow';
|
||||
@@ -81,9 +84,8 @@ const authFreeRoutes: string[] = [];
|
||||
export const canSkipAuth = (method: string, path: string): boolean =>
|
||||
authFreeRoutes.includes(`${method.toLowerCase()} ${path}`);
|
||||
|
||||
export const registerController = (app: Application, config: Config, cObj: object) => {
|
||||
const controller = cObj as Controller;
|
||||
const controllerClass = controller.constructor;
|
||||
export const registerController = (app: Application, controllerClass: Class<object>) => {
|
||||
const controller = Container.get(controllerClass as Class<Controller>);
|
||||
const controllerBasePath = Reflect.getMetadata(CONTROLLER_BASE_PATH, controllerClass) as
|
||||
| string
|
||||
| undefined;
|
||||
|
||||
Reference in New Issue
Block a user