LinkedServerRepository.cs 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295
  1. using AipDatabase.API.Infrastructures;
  2. using AipDatabase.API.Interfaces;
  3. using AipDatabase.API.Models;
  4. using Dapper;
  5. using Microsoft.Data.SqlClient;
  6. using System.Data;
  7. namespace AipDatabase.API.Repositories
  8. {
  9. public class LinkedServerRepository : ILinkedServerRepository
  10. {
  11. private readonly ILogger<LinkedServerRepository> _log;
  12. private readonly IDatabaseFactory _databaseFactory;
  13. private readonly SqlHelper<LinkedServerRepository> _sqlHelper;
  14. public LinkedServerRepository(ILogger<LinkedServerRepository> log, IDatabaseFactory databaseFactory)
  15. {
  16. _log = log;
  17. _databaseFactory = databaseFactory;
  18. _sqlHelper = new SqlHelper<LinkedServerRepository>();
  19. }
  20. public async Task<DataCount> FindByIp(int systemId, string serverIpAddr)
  21. {
  22. var parameters = new
  23. {
  24. systemId,
  25. serverIpAddr
  26. };
  27. try
  28. {
  29. using var connection = _databaseFactory.GetDbConnection();
  30. string sql = _sqlHelper.GetSqlFromEmbeddedResource("LinkedServer.FindByIp");
  31. DataCount result = await connection.QueryFirstAsync<DataCount>(
  32. sql,
  33. parameters,
  34. commandType: CommandType.Text
  35. );
  36. return result;
  37. }
  38. catch (Exception)
  39. {
  40. throw;
  41. }
  42. }
  43. public async Task<DataCount> Add(int systemId, string serverIpAddr, string serverDesc,
  44. string apiKey, DateTime expiredAt,
  45. bool policyLookupYn,
  46. bool fileInfoLookupYn,
  47. bool applyLabelYn,
  48. bool releaseLabelYn,
  49. bool encryptionFileYn,
  50. bool decryptionFileYn)
  51. {
  52. var parameters1 = new
  53. {
  54. systemId,
  55. serverIpAddr,
  56. serverDesc
  57. };
  58. SqlTransaction? transaction = null;
  59. try
  60. {
  61. using var connection = _databaseFactory.GetDbConnection();
  62. transaction = (SqlTransaction)connection.BeginTransaction();
  63. string sql = _sqlHelper.GetSqlFromEmbeddedResource("LinkedServer.Add");
  64. int effectedRows = await connection.ExecuteAsync(
  65. sql,
  66. parameters1,
  67. commandType: CommandType.Text
  68. );
  69. _log.LogInformation($"LinkedServer.Add: {effectedRows} EA.");
  70. if (effectedRows <= 0)
  71. {
  72. return new DataCount(0);
  73. }
  74. DataCount result = new DataCount(effectedRows);
  75. var parameters2 = new
  76. {
  77. systemId,
  78. serverIpAddr,
  79. };
  80. sql = _sqlHelper.GetSqlFromEmbeddedResource("LinkedServer.GetIdentify");
  81. DataIdentify identify = await connection.QueryFirstAsync<DataIdentify>(
  82. sql,
  83. parameters2,
  84. commandType: CommandType.Text
  85. );
  86. _log.LogInformation($"LinkedServer.GetIdentify: {identify.Id}.");
  87. var parameters3 = new
  88. {
  89. identify.Id,
  90. apiKey,
  91. expiredAt,
  92. policyLookupYn,
  93. fileInfoLookupYn,
  94. applyLabelYn,
  95. releaseLabelYn,
  96. encryptionFileYn,
  97. decryptionFileYn
  98. };
  99. sql = _sqlHelper.GetSqlFromEmbeddedResource("LinkedApiKey.Add");
  100. effectedRows = await connection.ExecuteAsync(
  101. sql,
  102. parameters3,
  103. commandType: CommandType.Text
  104. );
  105. _log.LogInformation($"LinkedApiKey.Add: {effectedRows} EA.");
  106. transaction.Commit();
  107. return result;
  108. }
  109. catch (Exception)
  110. {
  111. if (transaction != null)
  112. {
  113. transaction.Rollback();
  114. }
  115. throw;
  116. }
  117. }
  118. public async Task<DataCount> Update(int serverId, string serverIpAddr, string serverDesc,
  119. int apiId, DateTime expiredAt,
  120. bool policyLookupYn,
  121. bool fileInfoLookupYn,
  122. bool applyLabelYn,
  123. bool releaseLabelYn,
  124. bool encryptionFileYn,
  125. bool decryptionFileYn)
  126. {
  127. var parameters1 = new
  128. {
  129. serverId,
  130. serverIpAddr,
  131. serverDesc
  132. };
  133. SqlTransaction? transaction = null;
  134. try
  135. {
  136. using var connection = _databaseFactory.GetDbConnection();
  137. transaction = (SqlTransaction)connection.BeginTransaction();
  138. string sql = _sqlHelper.GetSqlFromEmbeddedResource("LinkedServer.Update");
  139. int effectedRows = await connection.ExecuteAsync(
  140. sql,
  141. parameters1,
  142. commandType: CommandType.Text
  143. );
  144. _log.LogInformation($"LinkedServer.Add: {effectedRows} EA.");
  145. if (effectedRows <= 0)
  146. {
  147. return new DataCount(0);
  148. }
  149. DataCount result = new DataCount(effectedRows);
  150. var parameters2 = new
  151. {
  152. apiId,
  153. expiredAt,
  154. policyLookupYn,
  155. fileInfoLookupYn,
  156. applyLabelYn,
  157. releaseLabelYn,
  158. encryptionFileYn,
  159. decryptionFileYn
  160. };
  161. sql = _sqlHelper.GetSqlFromEmbeddedResource("LinkedApiKey.Update");
  162. effectedRows = await connection.ExecuteAsync(
  163. sql,
  164. parameters2,
  165. commandType: CommandType.Text
  166. );
  167. _log.LogInformation($"LinkedApiKey.Update: {effectedRows} EA.");
  168. transaction.Commit();
  169. return result;
  170. }
  171. catch (Exception)
  172. {
  173. if (transaction != null)
  174. {
  175. transaction.Rollback();
  176. }
  177. throw;
  178. }
  179. }
  180. public async Task<DataCount> Delete(int serverId)
  181. {
  182. var parameters = new
  183. {
  184. serverId
  185. };
  186. SqlTransaction? transaction = null;
  187. try
  188. {
  189. using var connection = _databaseFactory.GetDbConnection();
  190. transaction = (SqlTransaction)connection.BeginTransaction();
  191. string sql = _sqlHelper.GetSqlFromEmbeddedResource("LinkedServer.DeleteById");
  192. int effectedRows = await connection.ExecuteAsync(
  193. sql,
  194. parameters,
  195. commandType: CommandType.Text
  196. );
  197. _log.LogInformation($"LinkedSystem.DeleteById: {effectedRows} EA.");
  198. DataCount result = new DataCount(effectedRows);
  199. sql = _sqlHelper.GetSqlFromEmbeddedResource("LinkedApiKey.DeleteById");
  200. effectedRows = await connection.ExecuteAsync(
  201. sql,
  202. parameters,
  203. commandType: CommandType.Text
  204. );
  205. _log.LogInformation($"LinkedApiKey.DeleteById: {effectedRows} EA.");
  206. sql = _sqlHelper.GetSqlFromEmbeddedResource("LinkedDecryptKey.DeleteById");
  207. effectedRows = await connection.ExecuteAsync(
  208. sql,
  209. parameters,
  210. commandType: CommandType.Text
  211. );
  212. _log.LogInformation($"LinkedDecryptKey.DeleteById: {effectedRows} EA.");
  213. transaction.Commit();
  214. return result;
  215. }
  216. catch (Exception)
  217. {
  218. if (transaction != null)
  219. {
  220. transaction.Rollback();
  221. }
  222. throw;
  223. }
  224. }
  225. public async Task<Pagination<LinkedServer>> GetLists(int pagePerCount, int pageSize, int page, int systemId)
  226. {
  227. try
  228. {
  229. using var connection = _databaseFactory.GetDbConnection();
  230. var parameters1 = new
  231. {
  232. @systemId
  233. };
  234. string sql = _sqlHelper.GetSqlFromEmbeddedResource("LinkedServer.GetListsTotal");
  235. Int64 totalCount = await connection.QueryFirstAsync<Int64>(
  236. sql,
  237. parameters1,
  238. commandType: CommandType.Text
  239. );
  240. _log.LogInformation($"LinkedServer.GetListsTotal: {totalCount} EA.");
  241. Pagination<LinkedServer> result = new Pagination<LinkedServer>(page, pageSize, pagePerCount, (int)totalCount);
  242. var parameters2 = new
  243. {
  244. systemId,
  245. startRow = result.startRow,
  246. endRow = result.endRow
  247. };
  248. sql = _sqlHelper.GetSqlFromEmbeddedResource("LinkedServer.GetLists");
  249. IEnumerable<LinkedServer> Results = await connection.QueryAsync<LinkedServer>(
  250. sql,
  251. parameters2,
  252. commandType: CommandType.Text
  253. );
  254. result.lists = Results.ToList();
  255. return result;
  256. }
  257. catch (Exception)
  258. {
  259. throw;
  260. }
  261. }
  262. }
  263. }