/// <summary>
 /// Caches a set of jobs along with the query that returned them
 /// </summary>
 /// <param name="query">The query.</param>
 /// <param name="jobs">The jobs.</param>
 public void CacheJobs(JobSearchQuery query, JobSearchResult jobs)
 {
     if (query == null || jobs == null)
     {
         return;
     }
     _cache.Set(_cacheKeyPrefix + "Jobs-" + query.ToHash(), jobs, CalculateCacheTime());
 }
        /// <summary>
        /// Reads the jobs matching a specific query
        /// </summary>
        /// <param name="query">The query.</param>
        /// <returns>
        /// Matching jobs, or <c>null</c> if the result is not in the cache
        /// </returns>
        public JobSearchResult ReadJobs(JobSearchQuery query)
        {
            if (query == null)
            {
                return(null);
            }
            var hash = query.ToHash();

            if (_cache[_cacheKeyPrefix + "Jobs-" + hash] != null)
            {
                return(_cache[_cacheKeyPrefix + "Jobs-" + hash] as JobSearchResult);
            }
            return(null);
        }