using System;
using System.Collections.Generic;

namespace ExtensiblePortfolioSite.SDK.Git
{
    internal static class GitManager
    {
        private static readonly SortedDictionary<String, GitService> Providers = new ();

        public static void Register(String Service, IGitProvider Provider)
        {
            if(Providers.TryGetValue(Service, out GitService? GitService))
            {
                GitService.addProvider(Provider);
                return;
            }
            lock (Providers)
            {
                if (Providers.TryGetValue(Service, out GitService))
                {
                    GitService.addProvider(Provider);
                    return;
                }

                GitService = new GitService(Service);
                GitService.addProvider(Provider);
                Providers.Add(Service, GitService);
            }
        }

        public static void Unregister(String Service, IGitProvider Provider)
        {
            if (Providers.TryGetValue(Service, out GitService? GitService))
                GitService.removeProvider(Provider);
        }

        public static GitService GetService(String Website) => Providers[Website];
    }
}
