using AipDatabase.API.Infrastructures; using AipDatabase.API.Interfaces; using AipDatabase.API.Models; using Dapper; using Microsoft.Data.SqlClient; using System.Data; namespace AipDatabase.API.Repositories { public class LinkedApiKeyRepository : ILinkedApiKeyRepository { private readonly ILogger _log; private readonly IDatabaseFactory _databaseFactory; private readonly SqlHelper _sqlHelper; public LinkedApiKeyRepository(ILogger log, IDatabaseFactory databaseFactory) { _log = log; _databaseFactory = databaseFactory; _sqlHelper = new SqlHelper(); } public async Task> GetLists(int pagePerCount, int pageSize, int page, int systemId) { try { using var connection = _databaseFactory.GetDbConnection(); var parameters1 = new { systemId }; string sql = _sqlHelper.GetSqlFromEmbeddedResource("LinkedApiKey.GetListsTotal"); Int64 totalCount = await connection.QueryFirstAsync( sql, parameters1, commandType: CommandType.Text ); _log.LogInformation($"LinkedApiKey.GetListsTotal: {totalCount} EA."); Pagination result = new Pagination(page, pageSize, pagePerCount, (int)totalCount); var parameters2 = new { systemId, startRow = result.startRow, endRow = result.endRow }; sql = _sqlHelper.GetSqlFromEmbeddedResource("LinkedApiKey.GetLists"); IEnumerable Results = await connection.QueryAsync( sql, parameters2, commandType: CommandType.Text ); result.lists = Results.ToList(); return result; } catch (Exception) { throw; } } } }