diff --git a/src/NetrunnerChallenge/Controllers/HomeController.cs b/src/NetrunnerChallenge/Controllers/HomeController.cs index 3b1df96..c0d7fd6 100644 --- a/src/NetrunnerChallenge/Controllers/HomeController.cs +++ b/src/NetrunnerChallenge/Controllers/HomeController.cs @@ -15,6 +15,7 @@ namespace NetrunnerChallenge.Controllers { public class HomeController : Controller { + [OutputCache(Duration = int.MaxValue)] public ActionResult Index() { using (var db = new DatabaseContext()) @@ -30,6 +31,7 @@ namespace NetrunnerChallenge.Controllers } + [OutputCache(Duration = int.MaxValue, VaryByParam = "id")] /// Always. public ActionResult Challenge(string id) { @@ -82,7 +84,8 @@ namespace NetrunnerChallenge.Controllers } var generator = new Generator(); string rnmId = null; - while (rnmId == null || db.ChallengeDb.ToList().Any(a => string.Equals(a.Id, rnmId))) + var currentChallenges = db.ChallengeDb.ToList(); + while (rnmId == null || currentChallenges.Any(a => string.Equals(a.Id, rnmId))) { rnmId = generator.GenerateRandomString(); } diff --git a/src/NetrunnerChallenge/Data/Generator.cs b/src/NetrunnerChallenge/Data/Generator.cs index 6e8850a..81ddc4f 100644 --- a/src/NetrunnerChallenge/Data/Generator.cs +++ b/src/NetrunnerChallenge/Data/Generator.cs @@ -8,6 +8,7 @@ namespace NetrunnerChallenge.Data public class Generator { static readonly string Chars = "abcdefghijklmnopqrstuvwxyz0123456789"; + public string GenerateRandomString() { var random = new Random(); @@ -16,15 +17,5 @@ namespace NetrunnerChallenge.Data .Take(8) .ToArray()); } - - public T RandomEnumValue() - { - var _Random = new Random(); - return Enum - .GetValues(typeof(T)) - .Cast() - .OrderBy(x => _Random.Next()) - .FirstOrDefault(); - } } } \ No newline at end of file diff --git a/src/NetrunnerChallenge/Data/NetrunnerApi.cs b/src/NetrunnerChallenge/Data/NetrunnerApi.cs index 63def50..c046435 100644 --- a/src/NetrunnerChallenge/Data/NetrunnerApi.cs +++ b/src/NetrunnerChallenge/Data/NetrunnerApi.cs @@ -6,6 +6,9 @@ using NetrunnerDb.Net.Responses; namespace NetrunnerChallenge.Data { + /// + /// Wraps the netrunner API in a cache so we don't keep requesting data when we don't need to + /// public class NetrunnerApi { public IList GetCards()