private async Task UpdateRolesAsync(UpdateSeiyuuMessage updateSeiyuuMessage, ICollection <MalVoiceActingRoleUpdateData> parsedVoiceActingRoles) { var seiyuuExistingRoles = await _seiyuuRoleRepository.GetAllSeiyuuRolesAsync(updateSeiyuuMessage.Id, false); foreach (var parsedRole in parsedVoiceActingRoles) { if (!seiyuuExistingRoles.Any(role => role.Anime.MalId.Equals(parsedRole.AnimeMalId) && role.Character.MalId.Equals(parsedRole.CharacterMaId))) { var animeInDatabase = await InsertAnimeAsync(parsedRole.AnimeMalId); var characterInDatabase = await InsertCharacterAsync(parsedRole.CharacterMaId); if (animeInDatabase != null && characterInDatabase != null) { await _animeRoleRepository.AddAsync(new AnimeRole { Id = Guid.NewGuid(), LanguageId = LanguageId.Japanese, RoleTypeId = parsedRole.RoleType.Equals("Main") ? AnimeRoleTypeId.Main : AnimeRoleTypeId.Supporting, AnimeId = animeInDatabase.Id, CharacterId = characterInDatabase.Id, SeiyuuId = updateSeiyuuMessage.Id }); } } } }
public async Task PublishSeiyuuUpdateAsync(UpdateSeiyuuMessage updateSeiyuuMessage, int delayInSeconds = 0) { var sendMessageRequest = new SendMessageRequest { MessageBody = JsonSerializer.Serialize(updateSeiyuuMessage), QueueUrl = _queueUrl, DelaySeconds = delayInSeconds }; await _sqsService.SendMessageAsync(sendMessageRequest); }
private async Task InsertSeiyuuAsync(UpdateSeiyuuMessage updateSeiyuuMessage, MalSeiyuuUpdateData updateData) { var newSeiyuu = new Seiyuu { Id = updateSeiyuuMessage.Id, MalId = updateSeiyuuMessage.MalId, Name = updateData.Name, About = updateData.About, KanjiName = updateData.JapaneseName, ImageUrl = updateData.ImageUrl, Popularity = updateData.Popularity, Birthday = updateData.Birthday, }; Console.WriteLine($"Inserted seiyuu with malId {updateSeiyuuMessage.MalId} ({updateData.Name})"); await _seiyuuRepository.AddAsync(newSeiyuu); }
public async Task InsertSingleSeiyuu(UpdateSeiyuuMessage updateSeiyuuMessage) { var seiyuuToUpdate = await _seiyuuRepository.GetAsync(updateSeiyuuMessage.MalId); if (seiyuuToUpdate != null) { return; } var updateData = await _malApiService.GetSeiyuuDataAsync(updateSeiyuuMessage.MalId); if (updateData == null || !JikanParserHelper.IsJapanese(updateData.JapaneseName) || !updateData.VoiceActingRoles.Any()) { return; } await InsertSeiyuuAsync(updateSeiyuuMessage, updateData); await InsertRolesAsync(updateSeiyuuMessage, updateData.VoiceActingRoles); }
public async Task HandleAsync(UpdateSeiyuuMessage updateSeiyuuMessage) { var seiyuuToUpdate = await _seiyuuRepository.GetAsync(updateSeiyuuMessage.MalId); if (seiyuuToUpdate == null) { return; } var updateData = await _malApiService.GetSeiyuuDataAsync(updateSeiyuuMessage.MalId); if (updateData == null) { return; } UpdateCharacter(seiyuuToUpdate, updateData); await _seiyuuRepository.UpdateAsync(seiyuuToUpdate); await UpdateRolesAsync(updateSeiyuuMessage, updateData.VoiceActingRoles); }
public async Task RunAsync() { var lambda = new UpdateSeiyuuLambda(); var message = new UpdateSeiyuuMessage { Id = Guid.Parse("9738c977-6eab-447b-8f6a-3f0bc48b111e"), MalId = 212 }; var sqsMessage = new SQSEvent { Records = new List <SQSEvent.SQSMessage> { new SQSEvent.SQSMessage { Body = JsonSerializer.Serialize(message) } } }; await lambda.InvokeAsync(sqsMessage); }