56 lines
1.4 KiB
C#
56 lines
1.4 KiB
C#
using NodaTime;
|
|
|
|
namespace DysonNetwork.Sphere.Storage;
|
|
|
|
/// <summary>
|
|
/// Common interface for cloud file entities that can be used in file operations.
|
|
/// This interface exposes the essential properties needed for file operations
|
|
/// and is implemented by both CloudFile and CloudFileReferenceObject.
|
|
/// </summary>
|
|
public interface ICloudFile
|
|
{
|
|
public Instant CreatedAt { get; }
|
|
public Instant UpdatedAt { get; }
|
|
public Instant? DeletedAt { get; }
|
|
|
|
/// <summary>
|
|
/// Gets the unique identifier of the cloud file.
|
|
/// </summary>
|
|
string Id { get; }
|
|
|
|
/// <summary>
|
|
/// Gets the name of the cloud file.
|
|
/// </summary>
|
|
string Name { get; }
|
|
|
|
/// <summary>
|
|
/// Gets the file metadata dictionary.
|
|
/// </summary>
|
|
Dictionary<string, object>? FileMeta { get; }
|
|
|
|
/// <summary>
|
|
/// Gets the user metadata dictionary.
|
|
/// </summary>
|
|
Dictionary<string, object>? UserMeta { get; }
|
|
|
|
/// <summary>
|
|
/// Gets the MIME type of the file.
|
|
/// </summary>
|
|
string? MimeType { get; }
|
|
|
|
/// <summary>
|
|
/// Gets the hash of the file content.
|
|
/// </summary>
|
|
string? Hash { get; }
|
|
|
|
/// <summary>
|
|
/// Gets the size of the file in bytes.
|
|
/// </summary>
|
|
long Size { get; }
|
|
|
|
/// <summary>
|
|
/// Gets whether the file has a compressed version available.
|
|
/// </summary>
|
|
bool HasCompression { get; }
|
|
}
|