Как внедрить зависимости с OData-v4-Server и Inversify - PullRequest
0 голосов
/ 14 октября 2019

Я использую JayStack OData-v4-Server от JayData. Я хочу реализовать Inversify в качестве DI-фреймворка. Проблема, с которой я сейчас сталкиваюсь, заключается в том, что я не могу объявить все свои зависимости в одном месте, потому что мне приходится вручную вызывать контейнер DI в каждом ODataController.

Я хочу внедрить зависимости контроллера через его конструктор, напримерв UserInteractor. Итак, контроллеры должны быть аннотацией @injectable, и мне нужно внедрить зависимости в ODataServer, но инициализация осуществляется через аннотацию @odata.controller.

Есть ли хороший способ использовать лучшие практики Inversify с фреймворком JayStack OData?

index.ts

...

app.use(ENDPOINT_ODATA, MyODataServer.create());

app.listen(PORT, () => {
    console.log(`Example app listening on port ${PORT}!`)
});

MyODataServer.ts

@odata.controller(UserController, true)
export default class MyODataServer extends ODataServer {

}

UserController.ts

export default class UserController extends ODataController {

    private static userService: UserInteractor = container.get<UserInteractor>(UserInteractor);

    ...
}

UserInteractor.ts

@injectable()
export class UserInteractor {

    public constructor(
        @inject(InterfaceTypes.UserRepo) private readonly userRepo: IUserRepo
    ) {}

    ...
}
...