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);
        }
Exemple #2
0
        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)_))
                );
        }
Exemple #3
0
        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();
        }