public Server AddServer(Server server)
        {
            using (var context = GetConnection(ConnectionString))
            {
                var dbServer = context.Servers.FirstOrDefault(s => s.ServerName == server.ServerInstanceName);
                if (dbServer != null)
                {
                    throw new ArgumentException("Server name already in use");
                }

                dbServer =
                    new Models.Server
                {
                    ServerName       = server.ServerInstanceName,
                    Location         = server.Location,
                    MaxShardsAllowed = server.MaxShardsAllowed,
                };

                context.Servers.Add(dbServer);
                context.SaveChanges();

                server.ServerID        = dbServer.ServerID;
                server.AvailableShards = server.MaxShardsAllowed;
            }

            return(server);
        }
        public Server ModifyServer(Server server)
        {
            using (var context = GetConnection(ConnectionString))
            {
                var dbServer = context.Servers.FirstOrDefault(s => s.ServerID == server.ServerID);
                if (dbServer == null)
                {
                    throw new NullReferenceException("Server not found");
                }

                dbServer.Location         = server.Location;
                dbServer.MaxShardsAllowed = server.MaxShardsAllowed;
                dbServer.ServerName       = server.ServerInstanceName;

                context.SaveChanges();
            }

            return(server);
        }