import { interfaces } from 'inversify'; import { resolver, gitSchema as typeDefs } from './graphql'; import { Feature } from '@common-stack/server-core'; import { GitService } from '@git-stack/hemera-plugin'; import { gitModule, preferences as gitPreferences, gitModuleReload } from '@git-stack/server-core'; import { IGitService, TYPES } from '@git-stack/core'; import { proxyGitServiceModule } from '@git-stack/microservice-nats'; // import { GitRepositoryModule } from '@git-stack/store-mongo'; import { TaggedType } from '@common-stack/core'; import { gitContainerServiceBroker } from './initialization'; const gitServiceGen = (container: interfaces.Container) => { return { gitService: container.getNamed(TYPES.IGitService, TaggedType.MICROSERVICE) }; }; export default new Feature({ createPreference: gitPreferences as any, schema: typeDefs, createResolversFunc: resolver, createServiceFunc: gitServiceGen, updateContainerFunc: [{ git: gitModuleReload }], disposeFunc: [{ ctx: 'gitService', container: 'git' }], createContainerFunc: [proxyGitServiceModule], createHemeraContainerFunc: [gitModule], addBrokerClientServiceClass: [GitService], microservicePostStartFunc: gitContainerServiceBroker, });