using CredentialManager.Models; namespace CredentialManager.Services; /// /// Interfaccia per il servizio di gestione delle associazioni record /// public interface IRecordAssociationService { /// /// Salva una nuova associazione tra record sorgente e destinazione /// Task SaveAssociationAsync(RecordAssociation association); /// /// Cerca un'associazione esistente tramite chiave sorgente /// Task FindAssociationAsync(string sourceName, string sourceKey, string destinationEntity); /// /// Ottiene tutte le associazioni per una sorgente specifica /// Task> GetAssociationsBySourceAsync(string sourceName, string sourceType); /// /// Ottiene tutte le associazioni per un'entità di destinazione specifica /// Task> GetAssociationsByDestinationAsync(string destinationEntity, string restCredentialName); /// /// Ottiene tutte le associazioni attive /// Task> GetAllActiveAssociationsAsync(); /// /// Aggiorna un'associazione esistente /// Task UpdateAssociationAsync(RecordAssociation association); /// /// Disattiva un'associazione (soft delete) /// Task DeactivateAssociationAsync(int id); /// /// Elimina definitivamente un'associazione /// Task DeleteAssociationAsync(int id); /// /// Pulisce le associazioni obsolete (opzionale) /// Task CleanupOldAssociationsAsync(TimeSpan olderThan); /// /// Elimina tutte le associazioni per una specifica combinazione sorgente-destinazione /// Task ClearAssociationsAsync(string sourceName, string destinationEntity, string restCredentialName); /// /// Elimina tutte le associazioni nel sistema /// Task ClearAllAssociationsAsync(); /// /// Verifica se un ID di destinazione esiste ancora nel sistema target /// Task ValidateDestinationIdAsync(string destinationId, string destinationEntity, string restCredentialName); /// /// Ottiene tutte le associazioni con ID di destinazione non validi /// Task> GetInvalidAssociationsAsync(string destinationEntity, string restCredentialName); /// /// Pulisce le associazioni con ID di destinazione non più validi /// Task CleanupInvalidAssociationsAsync(string destinationEntity, string restCredentialName); }