Exemple #1
0
        public void InsertScrapedPersonTest()
        {
            IServiceProvider        serviceProvider         = DIHelper.Initialize();
            PersonDataFetchSettings personDataFetchSettings = new FullPersonDataFetchSettings();
            DbContextOptionsBuilder <JMoviesEntities> dbContextOptionsBuilder = new DbContextOptionsBuilder <JMoviesEntities>();

            dbContextOptionsBuilder.UseLazyLoadingProxies(true);
            using (JMoviesEntities entities = new JMoviesEntities(dbContextOptionsBuilder.Options))
            {
                foreach (long imdbID in personIDsToTest)
                {
                    //DBHelper.EmptyDB(entities);
                    IIMDbDataProvider iMDbDataProvider = serviceProvider.GetRequiredService <IIMDbDataProvider>();
                    Person            person           = iMDbDataProvider.GetPerson(imdbID, personDataFetchSettings);

                    PersonPersistanceManager.Persist(entities, person);

                    Person savedPerson = entities.Person.SingleOrDefault(e => e.IMDbID == person.IMDbID);
                    Assert.IsNotNull(savedPerson);
                    Assert.AreEqual(person.IMDbID, savedPerson.IMDbID);
                    Assert.AreEqual(person.FullName, savedPerson.FullName);
                }
            }
        }
Exemple #2
0
        static void Main(string[] args)
        {
            var builder = new ConfigurationBuilder()
                          .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
                          .AddJsonFile($"appsettings.{EnvironmentUtilities.GetEnvironmentName()}.json", optional: true, reloadOnChange: true)
                          .AddEnvironmentVariables()
                          .AddCommandLine(args);

            BaseJobConfiguration configuration = builder.Build().Get <BaseJobConfiguration>();

            InitializationHelper.Initialize(configuration);
            var services = new ServiceCollection();

            services.AddOptions();
            var serviceProvider = services.BuildServiceProvider();


            if (configuration.MaxRecordCount == default(int))
            {
                configuration.MaxRecordCount = ConfigurationConstants.PersisterRecordCountPerRun;
            }

            using (JMoviesEntities entities = new JMoviesEntities())
            {
                IIMDbDataProvider imdbDataProvider = new IMDbScraperDataProvider();
                if (configuration.StartRecordID == default(long) || configuration.WorkingType == PersisterWorkingTypeEnum.UpdateInternalData)
                {
                    configuration.StartRecordID = PersisterHelper.DetermineTheStartID(EntityType, DataSource, configuration.WorkingType, configuration.StartRecordID, entities);
                }
                long dataID = configuration.StartRecordID;
                for (int i = 0; i < configuration.MaxRecordCount; i++)
                {
                    if (i != 0)
                    {
                        dataID = PersisterHelper.GetNextID(EntityType, DataSource, configuration.WorkingType, entities, dataID);
                    }

                    if (dataID != default(long))
                    {
                        if (dataID > ConfigurationConstants.IMDBMaxID)
                        {
                            dataID = 1;
                        }

                        try
                        {
                            Person person = imdbDataProvider.GetPerson(dataID, PersonDataFetchSettings);
                            DbContextOptionsBuilder <JMoviesEntities> dbContextOptionsBuilder = new DbContextOptionsBuilder <JMoviesEntities>();
                            dbContextOptionsBuilder.UseLazyLoadingProxies(true);
                            using (JMoviesEntities productionPersistanceEntities = new JMoviesEntities(dbContextOptionsBuilder.Options))
                            {
                                PersonPersistanceManager.Persist(productionPersistanceEntities, person);
                            }
                            PersisterHelper.SavePersisterHistory(entities, dataID, DataSource, EntityType, string.Empty);
                        }
                        catch (Exception exception)
                        {
                            PersisterHelper.SavePersisterHistory(entities, dataID, DataSource, EntityType, exception.ToString());
                        }
                        entities.SaveChanges();
                    }
                }
            }
        }