public async Task <TResult> ExecuteQueryAsync <TResult>(IQuery <TResult> query)
        {
            using (var scope = ParcelLockersCompositionRoot.BeginLifetimeScope())
            {
                var mediator = scope.Resolve <IMediator>();

                return(await mediator.Send(query));
            }
        }
        private static void ConfigureCompositionRoot(
            string connectionString,
            ILogger moduleLogger)
        {
            var containerBuilder = new ContainerBuilder();
            var loggerFactory    = new SerilogLoggerFactory(moduleLogger);

            containerBuilder.RegisterModule(new LoggingModule(moduleLogger));
            containerBuilder.RegisterModule(new DataAccessModule(connectionString, loggerFactory));
            containerBuilder.RegisterModule(new MediatorModule());
            containerBuilder.RegisterModule(new ProcessingModule());

            _container = containerBuilder.Build();

            ParcelLockersCompositionRoot.SetContainer(_container);
        }