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()