Пример #1
0
        static void Main(string[] args)
        {
            var serviceCollection = new ServiceCollection();

            var serviceProvider = ConfigureLog(serviceCollection);
            var logger          = serviceProvider.GetService <ILogger <Program> >();

            TopperImportExportConfig topperImportExportConfig = ReadConfiguration(logger, args);

            serviceProvider = ConfigureServices(serviceCollection, topperImportExportConfig);

            if (topperImportExportConfig.OperationType == OperationType.Export)
            {
                ExecuteExport(logger, serviceProvider, topperImportExportConfig);
            }
            else if (topperImportExportConfig.OperationType == OperationType.Import)
            {
                ExecuteImport(logger, serviceProvider, topperImportExportConfig);
            }
        }
Пример #2
0
        private static ServiceProvider ConfigureServices(ServiceCollection serviceCollection, TopperImportExportConfig topperImportExportConfig)
        {
            serviceCollection.AddSingleton <IRepository <TopItem> >(r => new Repository <TopItem>(r.GetRequiredService <ILogger <Repository <TopItem> > >(), topperImportExportConfig.CosmosDbConfig, topperImportExportConfig.Collection));
            serviceCollection.AddSingleton <IRepository <TopItemWithPartitionKey> >(r => new Repository <TopItemWithPartitionKey>(r.GetRequiredService <ILogger <Repository <TopItemWithPartitionKey> > >(), topperImportExportConfig.CosmosDbConfig, topperImportExportConfig.Collection));


            return(serviceCollection.BuildServiceProvider());
        }
Пример #3
0
        private static void ExecuteExport(ILogger <Program> logger, ServiceProvider serviceProvider, TopperImportExportConfig topperImportExportConfig)
        {
            int noOfItemsExported = 0;

            if (topperImportExportConfig.CosmosDbConfig.CosmosDbCollections
                .FirstOrDefault(c => c.CollectionId == topperImportExportConfig.Collection).TypeOfItem == typeof(TopItem).Name)
            {
                noOfItemsExported = new Exporter <TopItem>(
                    serviceProvider.GetService <ILogger <Exporter <TopItem> > >(),
                    serviceProvider.GetService <IRepository <TopItem> >())
                                    .Export(topperImportExportConfig.Csv);
            }

            if (topperImportExportConfig.CosmosDbConfig.CosmosDbCollections
                .FirstOrDefault(c => c.CollectionId == topperImportExportConfig.Collection).TypeOfItem == typeof(TopItemWithPartitionKey).Name)
            {
                noOfItemsExported = new Exporter <TopItemWithPartitionKey>(
                    serviceProvider.GetService <ILogger <Exporter <TopItemWithPartitionKey> > >(),
                    serviceProvider.GetService <IRepository <TopItemWithPartitionKey> >())
                                    .Export(topperImportExportConfig.Csv);
            }
            logger.LogInformation("Exported: {0} items from collection {1}", noOfItemsExported, topperImportExportConfig.Collection);
        }
Пример #4
0
        private static void ExecuteImport(ILogger <Program> logger, ServiceProvider serviceProvider, TopperImportExportConfig topperImportExportConfig)
        {
            int noOfItemsImported = 0;

            if (topperImportExportConfig.CosmosDbConfig.CosmosDbCollections
                .FirstOrDefault(c => c.CollectionId == topperImportExportConfig.Collection).TypeOfItem == typeof(TopItem).Name)
            {
                var repository = serviceProvider.GetService <IRepository <TopItem> >();
                repository.OpenConnection();
                noOfItemsImported = new Importer <TopItem>(
                    serviceProvider.GetService <ILogger <Importer <TopItem> > >(),
                    repository
                    )
                                    .Import(topperImportExportConfig.Csv, topperImportExportConfig.ImportTransformations);
            }

            if (topperImportExportConfig.CosmosDbConfig.CosmosDbCollections
                .FirstOrDefault(c => c.CollectionId == topperImportExportConfig.Collection).TypeOfItem == typeof(TopItemWithPartitionKey).Name)
            {
                var repository = serviceProvider.GetService <IRepository <TopItemWithPartitionKey> >();
                repository.OpenConnection();
                noOfItemsImported = new Importer <TopItemWithPartitionKey>(
                    serviceProvider.GetService <ILogger <Importer <TopItemWithPartitionKey> > >(),
                    repository)
                                    .Import(topperImportExportConfig.Csv, topperImportExportConfig.ImportTransformations);
            }
            logger.LogInformation("Imported: {0} items in collection {1}", noOfItemsImported, topperImportExportConfig.Collection);
        }