ApiDbController.cs 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. using Aip.Service.Models.Dto;
  2. using Aip.Service.Models.Response;
  3. using Aip.Service.Repositories;
  4. using Aip.Service.Services.Interfaces;
  5. using Microsoft.AspNetCore.Mvc;
  6. using Swashbuckle.AspNetCore.Annotations;
  7. using System.ComponentModel.DataAnnotations;
  8. namespace Aip.Service.Controllers;
  9. [ApiController]
  10. [Route("/api/v1/db")]
  11. [Produces("application/json")]
  12. public class ApiDbController : BaseController
  13. {
  14. private readonly ILogger<ApiDbController> _log;
  15. private readonly IApiAuthService _authService;
  16. private readonly IApiDbService _service;
  17. public ApiDbController(ILogger<ApiDbController> log, IApiAuthService authService, IApiDbService apiDbService)
  18. {
  19. _log = log;
  20. _authService = authService;
  21. _service = apiDbService;
  22. }
  23. [HttpPost("reload")]
  24. [SwaggerResponse(200, type: typeof(ApiResponseModel<GeneralResponse>))]
  25. public async Task<IResult> ReloadDatabase([Required] string apiKey)
  26. {
  27. return await CreateResponseAsync(async () =>
  28. {
  29. GlobalConstants.SetAuthorization(HttpContext, GlobalConstants.API_DB_RELOAD, apiKey, null);
  30. int authError = _authService.CheckApiKeyValidation(HttpContext, apiKey, GlobalConstants.API_DB_RELOAD);
  31. if (authError != 0)
  32. {
  33. throw ResponseApiKeyValidationError(HttpContext, authError);
  34. }
  35. var response = await _service.ReloadDatabase();
  36. var result = Results.Ok(ResponseSuccess(HttpContext, response));
  37. HttpContext.Items[GlobalConstants.API_RESULT] = result;
  38. return result;
  39. });
  40. }
  41. [HttpGet("linked-systems")]
  42. [SwaggerResponse(200, type: typeof(ApiResponseModel<List<LinkedSystemDto>>))]
  43. public async Task<IResult> GetDbLinkedSystems([Required] string apiKey)
  44. {
  45. return await CreateResponseAsync(async () =>
  46. {
  47. GlobalConstants.SetAuthorization(HttpContext, GlobalConstants.API_DB_LINKED_SYSTEMS, apiKey, null);
  48. int authError = _authService.CheckApiKeyValidation(HttpContext, apiKey, GlobalConstants.API_DB_LINKED_SYSTEMS);
  49. if (authError != 0)
  50. {
  51. throw ResponseApiKeyValidationError(HttpContext, authError);
  52. }
  53. var response = await _service.GetLinkedSystems();
  54. var result = Results.Ok(new ApiResponseModel<List<LinkedSystemDto>>()
  55. {
  56. success = true,
  57. errorCode = 0,
  58. errorMessage = GlobalConstants.API_RESULT_SUCCESS,
  59. result = response,
  60. });
  61. HttpContext.Items[GlobalConstants.API_RESULT_CODE] = GlobalConstants.API_RESULT_SUCCESS_CODE;
  62. HttpContext.Items[GlobalConstants.API_RESULT_MESSAGE] = GlobalConstants.API_RESULT_SUCCESS;
  63. HttpContext.Items[GlobalConstants.API_RESULT] = result;
  64. return result;
  65. });
  66. }
  67. [HttpGet("linked-servers")]
  68. [SwaggerResponse(200, type: typeof(ApiResponseModel<List<LinkedServerDto>>))]
  69. public async Task<IResult> GetDbLinkedServers([Required] string apiKey)
  70. {
  71. return await CreateResponseAsync(async () =>
  72. {
  73. GlobalConstants.SetAuthorization(HttpContext, GlobalConstants.API_DB_LINKED_SERVERS, apiKey, null);
  74. int authError = _authService.CheckApiKeyValidation(HttpContext, apiKey, GlobalConstants.API_DB_LINKED_SERVERS);
  75. if (authError != 0)
  76. {
  77. throw ResponseApiKeyValidationError(HttpContext, authError);
  78. }
  79. var response = await _service.GetLinkedServers();
  80. var result = Results.Ok(new ApiResponseModel<List<LinkedServerDto>>()
  81. {
  82. success = true,
  83. errorCode = 0,
  84. errorMessage = GlobalConstants.API_RESULT_SUCCESS,
  85. result = response,
  86. });
  87. HttpContext.Items[GlobalConstants.API_RESULT_CODE] = GlobalConstants.API_RESULT_SUCCESS_CODE;
  88. HttpContext.Items[GlobalConstants.API_RESULT_MESSAGE] = GlobalConstants.API_RESULT_SUCCESS;
  89. HttpContext.Items[GlobalConstants.API_RESULT] = result;
  90. return result;
  91. });
  92. }
  93. [HttpGet("linked-api-keys")]
  94. [SwaggerResponse(200, type: typeof(ApiResponseModel<List<LinkedApiKeyDto>>))]
  95. public async Task<IResult> GetDbLinkedApiKeys([Required] string apiKey)
  96. {
  97. return await CreateResponseAsync(async () =>
  98. {
  99. GlobalConstants.SetAuthorization(HttpContext, GlobalConstants.API_DB_LINKED_API_KEYS, apiKey, null);
  100. int authError = _authService.CheckApiKeyValidation(HttpContext, apiKey, GlobalConstants.API_DB_LINKED_API_KEYS);
  101. if (authError != 0)
  102. {
  103. throw ResponseApiKeyValidationError(HttpContext, authError);
  104. }
  105. var response = await _service.GetLinkedApiKeys();
  106. var result = Results.Ok(new ApiResponseModel<List<LinkedApiKeyDto>>()
  107. {
  108. success = true,
  109. errorCode = 0,
  110. errorMessage = GlobalConstants.API_RESULT_SUCCESS,
  111. result = response,
  112. });
  113. HttpContext.Items[GlobalConstants.API_RESULT_CODE] = GlobalConstants.API_RESULT_SUCCESS_CODE;
  114. HttpContext.Items[GlobalConstants.API_RESULT_MESSAGE] = GlobalConstants.API_RESULT_SUCCESS;
  115. HttpContext.Items[GlobalConstants.API_RESULT] = result;
  116. return result;
  117. });
  118. }
  119. [HttpGet("linked-decrypt-keys")]
  120. [SwaggerResponse(200, type: typeof(ApiResponseModel<List<LinkedDecryptKeyDto>>))]
  121. public async Task<IResult> GetDbLinkedDecryptKeys([Required] string apiKey)
  122. {
  123. return await CreateResponseAsync(async () =>
  124. {
  125. GlobalConstants.SetAuthorization(HttpContext, GlobalConstants.API_DB_LINKED_DECRYPT_KEYS, apiKey, null);
  126. int authError = _authService.CheckApiKeyValidation(HttpContext, apiKey, GlobalConstants.API_DB_LINKED_DECRYPT_KEYS);
  127. if (authError != 0)
  128. {
  129. throw ResponseApiKeyValidationError(HttpContext, authError);
  130. }
  131. var response = await _service.GetLinkedDecryptKeys();
  132. var result = Results.Ok(new ApiResponseModel<List<LinkedDecryptKeyDto>>()
  133. {
  134. success = true,
  135. errorCode = 0,
  136. errorMessage = GlobalConstants.API_RESULT_SUCCESS,
  137. result = response,
  138. });
  139. HttpContext.Items[GlobalConstants.API_RESULT_CODE] = GlobalConstants.API_RESULT_SUCCESS_CODE;
  140. HttpContext.Items[GlobalConstants.API_RESULT_MESSAGE] = GlobalConstants.API_RESULT_SUCCESS;
  141. HttpContext.Items[GlobalConstants.API_RESULT] = result;
  142. return result;
  143. });
  144. }
  145. }