Advertisement
Guest User

Untitled

a guest
Nov 22nd, 2017
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.04 KB | None | 0 0
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using System.Diagnostics;
  5. using System.Drawing.Text;
  6. using Microsoft.EntityFrameworkCore;
  7. using Microsoft.Extensions.Options;
  8. using System.IO;
  9. using NuGet.Common;
  10.  
  11. namespace brokerportaldemo.Models.DAOs.DBQuery
  12. {
  13. public class Query
  14. {
  15. private readonly AppConfig _config;
  16. private DateTime _nextInvalidationAt;
  17.  
  18. private IReadOnlyDictionary<string, string> _queryPaths;
  19. private Dictionary<string, string> _queryCache;
  20.  
  21. //private IReadOnlyDictionary<string, string> _queryPaths;
  22. //private IReadOnlyDictionary<string, string> _queryCache;
  23.  
  24.  
  25. public Query(IOptions<AppConfig> options)
  26. {
  27. _config = options.Value;
  28. _nextInvalidationAt = DateTime.MinValue;
  29. }
  30.  
  31.  
  32. public string GetQuery(string name)
  33. {
  34. if (DateTime.Now > _nextInvalidationAt)
  35. {
  36. _queryCache = new Dictionary<string, string>();
  37.  
  38. _nextInvalidationAt = DateTime.Now.AddMinutes(_config.SqlQueryCacheTTL);
  39. }
  40.  
  41.  
  42. if (!_queryCache.ContainsKey(name))
  43. {
  44. LoadQueryToCache(name);
  45. }
  46.  
  47.  
  48. return _queryCache[name];
  49. }
  50.  
  51.  
  52. private string LoadQueryToCache(string name)
  53. {
  54. _queryPaths = new Dictionary<string, string>
  55. {
  56. {
  57. "CurrentAppStatsTrue",
  58. Path.Combine(Directory.GetCurrentDirectory(), "./SQL/CurrentAppStatsApprovedTrue.sql")
  59. },
  60. {
  61. "CurrentAppStatsFalse",
  62. Path.Combine(Directory.GetCurrentDirectory(), "./SQL/CurrentAppStatsApprovedFalse.sql")
  63. },
  64. {
  65. "SettlementStats",
  66. Path.Combine(Directory.GetCurrentDirectory(), "./SQL/SettlementStatsQuery.sql")
  67. },
  68. {"Account_RetrieveAccount",
  69. Path.Combine(Directory.GetCurrentDirectory(), "./SQL/Account_RetrieveAccount.sql")
  70. },
  71. {"Account_RetrieveAccountCount",
  72. Path.Combine(Directory.GetCurrentDirectory(), "./SQL/Account_RetrieveAccountCount.sql")
  73. },
  74. {"Client_Existingclient",
  75. Path.Combine(Directory.GetCurrentDirectory(), "./SQL/Client_ExistingClient.sql")
  76. },
  77. {"DraftApplication_RetrieveDraftAccount",
  78. Path.Combine(Directory.GetCurrentDirectory(), "./SQL/DraftApplication_RetrieveDraftAccount.sql")
  79. },
  80. {"DraftApplication_RetrieveDraftAccountsForBrokers",
  81. Path.Combine(Directory.GetCurrentDirectory(), "./SQL/DraftApplication_RetrieveDraftAccountForBroker.sql")
  82. },
  83. {"DraftApplication_RetrieveDraftCountForBrokers",
  84. Path.Combine(Directory.GetCurrentDirectory(), "./SQL/DraftApplication_RetrieveDraftCountForBrokers.sql")
  85. },
  86. {"DraftApplication_SaveApplication",
  87. Path.Combine(Directory.GetCurrentDirectory(), "./SQL/DraftApplication_SaveApplication.sql")
  88. },
  89. {"DraftApplication_UpdateApplication",
  90. Path.Combine(Directory.GetCurrentDirectory(), "./SQL/DraftApplication_UpdateApplication.sql")
  91. },
  92. {"DraftApplication_DiscardApplication",
  93. Path.Combine(Directory.GetCurrentDirectory(), "./SQL/DraftApplication_DiscardApplication.sql")
  94. },
  95. };
  96.  
  97.  
  98. var queryPath = _queryPaths[name];
  99.  
  100. var sqlScript = File.ReadAllText(queryPath);
  101.  
  102. _queryCache.Add(name, sqlScript);
  103.  
  104. return sqlScript;
  105. }
  106. }
  107. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement