public MarvelMutation(IComicRepository comicRepository)
        {
            Name = "MarvelMutation";

            Field <ComicType>(
                "createComic",
                arguments: new QueryArguments(
                    new QueryArgument <NonNullGraphType <ComicInputType> > {
                Name = "comic"
            }
                    ),
                resolve: context =>
            {
                var comic = context.GetArgument <Comic>("comic");
                return(comicRepository.Add(comic));
            });
        }
 public Comic Add(Comic comic)
 {
     comic = _comicRepository.Add(comic);
     SaveChanges();
     return(comic);
 }
        /// <summary>
        /// Preencho o repositório com as HQs novas
        /// </summary>
        public void Dump(IComicRepository comicRepository, IAuthorRepository authorRepository,
                                IGenreRepository genreRepository, IPublisherRepository publisherRepository,
                                ILogRepository logRepository)
        {
            //Se já processei nesse período, retorno
            DateTime lastSyncDate = logRepository.GetLastComicListUpdate();
            if (lastSyncDate.AddHours(24) > DateTime.Now) return;

            //Espero terminar de processar
            while (_working) Thread.Sleep(10);

            //Busco todas as HQs do banco
            IList<Comic> repoList = comicRepository.Read();

            //Comparo o que mudou
            foreach (ComicVisitor cacheComic in _cache)
            {
                if (repoList.Any(c => c.ComicName.ToUpper().Equals(cacheComic.ComicName.ToUpper()))) continue;

                //Se tem uma HQ nova, adiciono
                Comic dbComic = ComicVisitor.ToComic(cacheComic);
                comicRepository.Add(dbComic);
                cacheComic.ComicId = dbComic.ComicId;
            }

            comicRepository.Save();
            logRepository.SetLastComicListUpdate(DateTime.Now);
        }