import { ContainerModule, interfaces } from 'inversify'; import { SERVER_TYPES } from 'common/server'; import { AwsS3Config } from '@container-stack/file-info-core'; import { config } from '../config'; import { AWSS3Service, FileInfoService } from '../services'; import { FileInfoRepository } from '../store'; import { FileInfoDataLoader } from '../graphql/dataloaders/FileInfoDataLoader'; /** * Local services and exposed micro services to serve remote connections. * Operates within in the Gateway. * */ export const localContainerModule: (settings) => interfaces.ContainerModule = () => new ContainerModule((bind: interfaces.Bind) => { bind(SERVER_TYPES.AwsConfig) .toConstantValue({ region: config.AWS_S3_REGION, accessKeyId: config.AWS_S3_ACCESS_KEY_ID, secretAccessKey: config.AWS_S3_SECRET_ACCESS_KEY, destinationBucketName: config.AWS_S3_BUCKET, imageProcessingService: config.IMAGE_PROCESSING_SERVICE, imageHandlerService: config.IMAGE_HANDLER_SERVICE, }) .whenTargetIsDefault(); bind(SERVER_TYPES.FileInfoRepository).to(FileInfoRepository).inSingletonScope().whenTargetIsDefault(); bind(SERVER_TYPES.FileInfoService).to(FileInfoService).inSingletonScope().whenTargetIsDefault(); bind(SERVER_TYPES.FileInfoDataLoader).to(FileInfoDataLoader).inSingletonScope().whenTargetIsDefault(); bind(SERVER_TYPES.AwsS3Service).to(AWSS3Service).inSingletonScope().whenTargetIsDefault(); });