using GB5Shared.DTO.Framework.Login; using GB5Shared.QueryExecutor; using IceImportDAL.DTO.EntityMemberFieldMap; using IceImportDAL.Query.EntityMemberFieldMap; using Microsoft.Extensions.Logging; namespace IceImportDAL.CustomCode.EntityMemberFieldMap; public class EntityMemberFieldMapDAL : IEntityMemberFieldMapDAL { private readonly IQueryExecutor _qe; private readonly ILogger _logger; public EntityMemberFieldMapDAL(IQueryExecutor qe, ILogger logger) { _qe = qe; _logger = logger; } public async Task> GetFieldMapAsync( int entityId, LoginDTO login, CancellationToken ct) { try { var rows = await _qe.QueryAsync( login, EntityMemberFieldMapQB.GET_FIELD_MAP, new { EntityId = entityId }, cancellationToken: ct).ConfigureAwait(false); return rows.ToList(); } catch (OperationCanceledException) { throw; } catch (Exception ex) { _logger.LogError(ex, "IceImport: EntityMemberFieldMapDAL.GetFieldMapAsync failed for EntityId {EntityId}", entityId); throw; } } public async Task GetAddonTableNameAsync(int rootEntityId, LoginDTO login, CancellationToken ct) { try { var row = await _qe.QuerySingleAsync( login, EntityMemberFieldMapQB.GET_ADDON_TABLE_NAME, new { RootEntityId = rootEntityId }, cancellationToken: ct).ConfigureAwait(false); return row?.TableName; } catch (OperationCanceledException) { throw; } catch (Exception ex) { _logger.LogError(ex, "IceImport: EntityMemberFieldMapDAL.GetAddonTableNameAsync failed for RootEntityId {RootEntityId}", rootEntityId); throw; } } private sealed class AddonTableRowDTO { public string? TableName { get; set; } } }