using GB5Shared.DTO.Framework.Login; using IceImportDAL.DTO.IceMapFtpSource; namespace IceImportDAL.CustomCode.IceMapFtpSource; // Thin Dapper wrapper over MICEMAPFTPSOURCE (Phase 0) + MICEMAPFTPPROCESSEDFILE (Phase 4). // Never touches Vault — HostVaultRef/UsernameVaultRef/CredentialVaultRef are read/written here as // opaque mount-relative path strings only; resolving them to plaintext is // IceImportBLL.Interfaces.IIceImportSecretResolver's job (BLL layer), not this DAL's. public interface IIceMapFtpSourceDAL { Task GetByIceMapIdAsync(int iceMapId, LoginDTO login, CancellationToken ct); Task SaveAsync(MicemapFtpSourceDTO config, LoginDTO login, CancellationToken ct); // Re-process if lastModifiedUtc differs from what's recorded (the file changed) — returns // false (not-yet-processed / needs reprocessing) when no row exists yet OR the stored // timestamp differs from the listing's current one. Task IsFileAlreadyProcessedAsync( int iceMapId, string remoteFileName, DateTime? lastModifiedUtc, LoginDTO login, CancellationToken ct); Task MarkFileProcessedAsync( int iceMapId, string remoteFileName, DateTime? lastModifiedUtc, long? runId, LoginDTO login, CancellationToken ct); }