LinkedSystemRepository.cs 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228
  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 LinkedSystemRepository : ILinkedSystemRepository
  10. {
  11. private readonly ILogger<LinkedSystemRepository> _log;
  12. private readonly IDatabaseFactory _databaseFactory;
  13. private readonly SqlHelper<LinkedSystemRepository> _sqlHelper;
  14. public LinkedSystemRepository(ILogger<LinkedSystemRepository> log, IDatabaseFactory databaseFactory)
  15. {
  16. _log = log;
  17. _databaseFactory = databaseFactory;
  18. _sqlHelper = new SqlHelper<LinkedSystemRepository>();
  19. }
  20. public async Task<DataCount> FindByName(string systemName)
  21. {
  22. var parameters = new
  23. {
  24. systemName,
  25. };
  26. try
  27. {
  28. using var connection = _databaseFactory.GetDbConnection();
  29. string sql = _sqlHelper.GetSqlFromEmbeddedResource("LinkedSystem.FindByName");
  30. DataCount result = await connection.QueryFirstAsync<DataCount>(
  31. sql,
  32. parameters,
  33. commandType: CommandType.Text
  34. );
  35. return result;
  36. }
  37. catch (Exception)
  38. {
  39. throw;
  40. }
  41. }
  42. public async Task<LinkedSystem> FindById(int systemId)
  43. {
  44. var parameters = new
  45. {
  46. systemId,
  47. };
  48. try
  49. {
  50. using var connection = _databaseFactory.GetDbConnection();
  51. string sql = _sqlHelper.GetSqlFromEmbeddedResource("LinkedSystem.FindById");
  52. LinkedSystem result = await connection.QueryFirstAsync<LinkedSystem>(
  53. sql,
  54. parameters,
  55. commandType: CommandType.Text
  56. );
  57. return result;
  58. }
  59. catch (Exception)
  60. {
  61. throw;
  62. }
  63. }
  64. public async Task<DataCount> Add(string systemName, string systemDesc)
  65. {
  66. var parameters = new
  67. {
  68. systemName,
  69. systemDesc
  70. };
  71. try
  72. {
  73. using var connection = _databaseFactory.GetDbConnection();
  74. string sql = _sqlHelper.GetSqlFromEmbeddedResource("LinkedSystem.Add");
  75. int effectedRows = await connection.ExecuteAsync(
  76. sql,
  77. parameters,
  78. commandType: CommandType.Text
  79. );
  80. _log.LogInformation($"LinkedSystem.Add: {effectedRows} EA.");
  81. DataCount result = new DataCount(effectedRows);
  82. return result;
  83. }
  84. catch (Exception)
  85. {
  86. throw;
  87. }
  88. }
  89. public async Task<DataCount> Delete(int systemId)
  90. {
  91. var parameters = new
  92. {
  93. systemId
  94. };
  95. SqlTransaction? transaction = null;
  96. try
  97. {
  98. using var connection = _databaseFactory.GetDbConnection();
  99. transaction = (SqlTransaction)connection.BeginTransaction();
  100. string sql = _sqlHelper.GetSqlFromEmbeddedResource("LinkedSystem.Delete");
  101. int effectedRows = await connection.ExecuteAsync(
  102. sql,
  103. parameters,
  104. commandType: CommandType.Text
  105. );
  106. _log.LogInformation($"LinkedSystem.Delete: {effectedRows} EA.");
  107. DataCount result = new DataCount(effectedRows);
  108. sql = _sqlHelper.GetSqlFromEmbeddedResource("LinkedServer.Delete");
  109. effectedRows = await connection.ExecuteAsync(
  110. sql,
  111. parameters,
  112. commandType: CommandType.Text
  113. );
  114. _log.LogInformation($"LinkedServer.Delete: {effectedRows} EA.");
  115. sql = _sqlHelper.GetSqlFromEmbeddedResource("LinkedApiKey.Delete");
  116. effectedRows = await connection.ExecuteAsync(
  117. sql,
  118. parameters,
  119. commandType: CommandType.Text
  120. );
  121. _log.LogInformation($"LinkedApiKey.Delete: {effectedRows} EA.");
  122. sql = _sqlHelper.GetSqlFromEmbeddedResource("LinkedDecryptKey.Delete");
  123. effectedRows = await connection.ExecuteAsync(
  124. sql,
  125. parameters,
  126. commandType: CommandType.Text
  127. );
  128. _log.LogInformation($"LinkedDecryptKey.Delete: {effectedRows} EA.");
  129. transaction.Commit();
  130. return result;
  131. }
  132. catch (Exception)
  133. {
  134. if (transaction != null )
  135. {
  136. transaction.Rollback();
  137. }
  138. throw;
  139. }
  140. }
  141. public async Task<DataCount> Update(int systemId, string systemName, string systemDesc)
  142. {
  143. var parameters = new
  144. {
  145. systemId,
  146. systemName,
  147. systemDesc
  148. };
  149. try
  150. {
  151. using var connection = _databaseFactory.GetDbConnection();
  152. string sql = _sqlHelper.GetSqlFromEmbeddedResource("LinkedSystem.Update");
  153. int effectedRows = await connection.ExecuteAsync(
  154. sql,
  155. parameters,
  156. commandType: CommandType.Text
  157. );
  158. _log.LogInformation($"LinkedSystem.Update: {effectedRows} EA.");
  159. DataCount result = new DataCount(effectedRows);
  160. return result;
  161. }
  162. catch (Exception)
  163. {
  164. throw;
  165. }
  166. }
  167. public async Task<Pagination<LinkedSystem>> GetLists(int pagePerCount, int pageSize, int page)
  168. {
  169. try
  170. {
  171. using var connection = _databaseFactory.GetDbConnection();
  172. string sql = _sqlHelper.GetSqlFromEmbeddedResource("LinkedSystem.GetListsTotal");
  173. Int64 totalCount = await connection.QueryFirstAsync<Int64>(
  174. sql,
  175. commandType: CommandType.Text
  176. );
  177. _log.LogInformation($"LinkedSystem.GetListsTotal: {totalCount} EA.");
  178. Pagination<LinkedSystem> result = new Pagination<LinkedSystem>(page, pageSize, pagePerCount, (int)totalCount);
  179. var parameters = new
  180. {
  181. startRow = result.startRow,
  182. endRow = result.endRow
  183. };
  184. sql = _sqlHelper.GetSqlFromEmbeddedResource("LinkedSystem.GetLists");
  185. IEnumerable<LinkedSystem> Results = await connection.QueryAsync<LinkedSystem>(
  186. sql,
  187. parameters,
  188. commandType: CommandType.Text
  189. );
  190. result.lists = Results.ToList();
  191. return result;
  192. }
  193. catch (Exception)
  194. {
  195. throw;
  196. }
  197. }
  198. }
  199. }