Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using System.Diagnostics;
- using System.Drawing.Text;
- using Microsoft.EntityFrameworkCore;
- using Microsoft.Extensions.Options;
- using System.IO;
- using NuGet.Common;
- namespace brokerportaldemo.Models.DAOs.DBQuery
- {
- public class Query
- {
- private readonly AppConfig _config;
- private DateTime _nextInvalidationAt;
- private IReadOnlyDictionary<string, string> _queryPaths;
- private Dictionary<string, string> _queryCache;
- //private IReadOnlyDictionary<string, string> _queryPaths;
- //private IReadOnlyDictionary<string, string> _queryCache;
- public Query(IOptions<AppConfig> options)
- {
- _config = options.Value;
- _nextInvalidationAt = DateTime.MinValue;
- }
- public string GetQuery(string name)
- {
- if (DateTime.Now > _nextInvalidationAt)
- {
- _queryCache = new Dictionary<string, string>();
- _nextInvalidationAt = DateTime.Now.AddMinutes(_config.SqlQueryCacheTTL);
- }
- if (!_queryCache.ContainsKey(name))
- {
- LoadQueryToCache(name);
- }
- return _queryCache[name];
- }
- private string LoadQueryToCache(string name)
- {
- _queryPaths = new Dictionary<string, string>
- {
- {
- "CurrentAppStatsTrue",
- Path.Combine(Directory.GetCurrentDirectory(), "./SQL/CurrentAppStatsApprovedTrue.sql")
- },
- {
- "CurrentAppStatsFalse",
- Path.Combine(Directory.GetCurrentDirectory(), "./SQL/CurrentAppStatsApprovedFalse.sql")
- },
- {
- "SettlementStats",
- Path.Combine(Directory.GetCurrentDirectory(), "./SQL/SettlementStatsQuery.sql")
- },
- {"Account_RetrieveAccount",
- Path.Combine(Directory.GetCurrentDirectory(), "./SQL/Account_RetrieveAccount.sql")
- },
- {"Account_RetrieveAccountCount",
- Path.Combine(Directory.GetCurrentDirectory(), "./SQL/Account_RetrieveAccountCount.sql")
- },
- {"Client_Existingclient",
- Path.Combine(Directory.GetCurrentDirectory(), "./SQL/Client_ExistingClient.sql")
- },
- {"DraftApplication_RetrieveDraftAccount",
- Path.Combine(Directory.GetCurrentDirectory(), "./SQL/DraftApplication_RetrieveDraftAccount.sql")
- },
- {"DraftApplication_RetrieveDraftAccountsForBrokers",
- Path.Combine(Directory.GetCurrentDirectory(), "./SQL/DraftApplication_RetrieveDraftAccountForBroker.sql")
- },
- {"DraftApplication_RetrieveDraftCountForBrokers",
- Path.Combine(Directory.GetCurrentDirectory(), "./SQL/DraftApplication_RetrieveDraftCountForBrokers.sql")
- },
- {"DraftApplication_SaveApplication",
- Path.Combine(Directory.GetCurrentDirectory(), "./SQL/DraftApplication_SaveApplication.sql")
- },
- {"DraftApplication_UpdateApplication",
- Path.Combine(Directory.GetCurrentDirectory(), "./SQL/DraftApplication_UpdateApplication.sql")
- },
- {"DraftApplication_DiscardApplication",
- Path.Combine(Directory.GetCurrentDirectory(), "./SQL/DraftApplication_DiscardApplication.sql")
- },
- };
- var queryPath = _queryPaths[name];
- var sqlScript = File.ReadAllText(queryPath);
- _queryCache.Add(name, sqlScript);
- return sqlScript;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement