using System; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; using DysonNetwork.Drive.Models; namespace DysonNetwork.Drive.Interfaces; public interface IFileReferenceService { Task CreateReferenceAsync( Guid fileId, string resourceId, string resourceType, string referenceType, string? referenceId = null, string? referenceName = null, string? referenceMimeType = null, long? referenceSize = null, string? referenceUrl = null, string? referenceThumbnailUrl = null, string? referencePreviewUrl = null, string? referenceMetadata = null, IDictionary? metadata = null, CancellationToken cancellationToken = default); Task GetReferenceAsync(Guid referenceId, CancellationToken cancellationToken = default); Task> GetReferencesForFileAsync(Guid fileId, CancellationToken cancellationToken = default); Task> GetReferencesForResourceAsync(string resourceId, string resourceType, CancellationToken cancellationToken = default); Task> GetReferencesOfTypeAsync(string referenceType, CancellationToken cancellationToken = default); Task DeleteReferenceAsync(Guid referenceId, CancellationToken cancellationToken = default); Task DeleteReferencesForFileAsync(Guid fileId, CancellationToken cancellationToken = default); Task DeleteReferencesForResourceAsync(string resourceId, string resourceType, CancellationToken cancellationToken = default); Task UpdateReferenceMetadataAsync(Guid referenceId, IDictionary metadata, CancellationToken cancellationToken = default); Task ReferenceExistsAsync(Guid referenceId, CancellationToken cancellationToken = default); Task HasReferenceAsync(Guid fileId, string resourceId, string resourceType, string? referenceType = null, CancellationToken cancellationToken = default); Task UpdateReferenceResourceAsync(Guid referenceId, string newResourceId, string newResourceType, CancellationToken cancellationToken = default); Task> GetFilesForResourceAsync(string resourceId, string resourceType, string? referenceType = null, CancellationToken cancellationToken = default); Task> GetFilesForReferenceTypeAsync(string referenceType, CancellationToken cancellationToken = default); }