public void Process(InstallationRepositoriesUpdateReceived @event) { var repositoriesList = _repositoryForRepositoriesList.GetById(0); @event.RepositoriesAdded.ForEach(name => { if (!repositoriesList.Repositories.Contains(name)) { repositoriesList.Repositories.Add(name); } }); @event.RepositoriesRemoved.ForEach(name => { repositoriesList.Repositories.Remove(name); }); _repositoryForRepositoriesList.Update(repositoriesList); var installation = _repositoryForInstallationRepositories.GetById(@event.InstallationId); @event.RepositoriesAdded.ForEach(name => { if (!installation.Repositories.Contains(name)) { installation.Repositories.Add(name); } }); @event.RepositoriesRemoved.ForEach(name => { installation.Repositories.Remove(name); }); _repositoryForInstallationRepositories.Update(installation); }
void On(InstallationRepositoriesUpdateReceived @event) { var installation = _installations[@event.InstallationId]; _installations[@event.InstallationId] = new Installation( installation.Id, installation.TargetType, installation.TargetAccount, installation.Repositories.Where(_ => [email protected]((string)_)).Union(@event.RepositoriesAdded.Select(_ => (RepositoryFullName)_)) ); }
public async void Process(InstallationRepositoriesUpdateReceived @event) { await _lock.WaitAsync(); var list = GetOrCreateGlobalRepositoriesList(); @event.RepositoriesAdded.ForEach(name => list.Repositories.Add(name)); @event.RepositoriesRemoved.ForEach(name => list.Repositories.Remove(name)); _repositoryForRepositoriesList.Update(list); var installation = GetOrCreateInstallationById(@event.InstallationId); @event.RepositoriesAdded.ForEach(name => installation.Repositories.Add(name)); @event.RepositoriesRemoved.ForEach(name => installation.Repositories.Remove(name)); _repositoryForInstallationRepositories.Update(installation); _lock.Release(); }