forked from xiongyuxing/tiku-backend.net
269 lines
6.4 KiB
C#
269 lines
6.4 KiB
C#
using System.ComponentModel.DataAnnotations;
|
|
using System.Text.Json;
|
|
using Tiku.Application.Assets;
|
|
using Tiku.Domain.Common;
|
|
|
|
namespace Tiku.Api.Contracts;
|
|
|
|
public sealed class AssetUploadSignDto
|
|
{
|
|
public Guid? AssetId { get; set; }
|
|
|
|
public Guid? RegionId { get; set; }
|
|
|
|
public Guid? SubjectId { get; set; }
|
|
|
|
public Guid? CategoryId { get; set; }
|
|
|
|
public Guid? ContentNodeId { get; set; }
|
|
|
|
[StringLength(200)]
|
|
public string? AssetKey { get; set; }
|
|
|
|
[StringLength(300)]
|
|
public string? Title { get; set; }
|
|
|
|
[StringLength(100)]
|
|
public string? Category { get; set; }
|
|
|
|
[StringLength(1000)]
|
|
public string? Description { get; set; }
|
|
|
|
[Required]
|
|
[StringLength(500)]
|
|
public string FileName { get; set; } = string.Empty;
|
|
|
|
[Required]
|
|
[StringLength(200)]
|
|
public string MimeType { get; set; } = string.Empty;
|
|
|
|
[Range(0, long.MaxValue)]
|
|
public long? FileSizeBytes { get; set; }
|
|
|
|
[RegularExpression("^[A-Fa-f0-9]{64}$")]
|
|
public string? ChecksumSha256 { get; set; }
|
|
|
|
[StringLength(50)]
|
|
public string? AssetType { get; set; }
|
|
|
|
[StringLength(50)]
|
|
public string? Visibility { get; set; }
|
|
|
|
public bool? IsPublic { get; set; }
|
|
|
|
[StringLength(50)]
|
|
public string? Provider { get; set; }
|
|
|
|
[StringLength(200)]
|
|
public string? Bucket { get; set; }
|
|
|
|
[StringLength(1000)]
|
|
public string? ObjectKey { get; set; }
|
|
|
|
[Range(1, 3600)]
|
|
public int? ExpiresInSeconds { get; set; }
|
|
|
|
public JsonElement Metadata { get; set; } = JsonDefaults.Object();
|
|
|
|
public AssetUploadSignCommand ToCommand()
|
|
{
|
|
return new AssetUploadSignCommand(
|
|
AssetId,
|
|
RegionId,
|
|
SubjectId,
|
|
CategoryId,
|
|
ContentNodeId,
|
|
AssetKey,
|
|
Title,
|
|
Category,
|
|
Description,
|
|
FileName,
|
|
MimeType,
|
|
FileSizeBytes,
|
|
ChecksumSha256,
|
|
AssetType,
|
|
Visibility,
|
|
IsPublic,
|
|
Provider,
|
|
Bucket,
|
|
ObjectKey,
|
|
ExpiresInSeconds,
|
|
Metadata);
|
|
}
|
|
}
|
|
|
|
public sealed class AssetUploadConfirmDto
|
|
{
|
|
[Required]
|
|
public Guid AssetId { get; set; }
|
|
|
|
[StringLength(200)]
|
|
public string? MimeType { get; set; }
|
|
|
|
[Range(0, long.MaxValue)]
|
|
public long? FileSizeBytes { get; set; }
|
|
|
|
[RegularExpression("^[A-Fa-f0-9]{64}$")]
|
|
public string? ChecksumSha256 { get; set; }
|
|
|
|
public AssetUploadConfirmCommand ToCommand()
|
|
{
|
|
return new AssetUploadConfirmCommand(AssetId, MimeType, FileSizeBytes, ChecksumSha256);
|
|
}
|
|
}
|
|
|
|
public sealed class UpsertAssetDto
|
|
{
|
|
public Guid? AssetId { get; set; }
|
|
public Guid? RegionId { get; set; }
|
|
public Guid? SubjectId { get; set; }
|
|
public Guid? CategoryId { get; set; }
|
|
public Guid? ContentNodeId { get; set; }
|
|
public string? LegacyId { get; set; }
|
|
public string? AssetKey { get; set; }
|
|
public string? Title { get; set; }
|
|
public string? Category { get; set; }
|
|
public string? Description { get; set; }
|
|
public string? FileName { get; set; }
|
|
public string? CdnUrl { get; set; }
|
|
public bool? IsPublic { get; set; }
|
|
public string? AssetType { get; set; }
|
|
public string? Visibility { get; set; }
|
|
public string? Status { get; set; }
|
|
public string? Provider { get; set; }
|
|
public string? Bucket { get; set; }
|
|
public string? ObjectKey { get; set; }
|
|
public string? MimeType { get; set; }
|
|
public long? FileSizeBytes { get; set; }
|
|
public string? ChecksumSha256 { get; set; }
|
|
public string? PreviewUrl { get; set; }
|
|
public string? PreviewObjectKey { get; set; }
|
|
public int? Order { get; set; }
|
|
public JsonElement AccessRules { get; set; } = JsonDefaults.Object();
|
|
public JsonElement Metadata { get; set; } = JsonDefaults.Object();
|
|
|
|
public UpsertAssetCommand ToCommand()
|
|
{
|
|
return new UpsertAssetCommand(
|
|
AssetId,
|
|
RegionId,
|
|
SubjectId,
|
|
CategoryId,
|
|
ContentNodeId,
|
|
LegacyId,
|
|
AssetKey,
|
|
Title,
|
|
Category,
|
|
Description,
|
|
FileName,
|
|
CdnUrl,
|
|
IsPublic,
|
|
AssetType,
|
|
Visibility,
|
|
Status,
|
|
Provider,
|
|
Bucket,
|
|
ObjectKey,
|
|
MimeType,
|
|
FileSizeBytes,
|
|
ChecksumSha256,
|
|
PreviewUrl,
|
|
PreviewObjectKey,
|
|
Order,
|
|
AccessRules,
|
|
Metadata);
|
|
}
|
|
}
|
|
|
|
public sealed class AssetAccessSignDto
|
|
{
|
|
[Required]
|
|
public Guid AssetId { get; set; }
|
|
|
|
[Range(60, 3600)]
|
|
public int? ExpiresInSeconds { get; set; }
|
|
|
|
public AssetAccessSignCommand ToCommand()
|
|
{
|
|
return new AssetAccessSignCommand(AssetId, ExpiresInSeconds);
|
|
}
|
|
}
|
|
|
|
public sealed class AssetManagementQueryDto
|
|
{
|
|
public Guid? RegionId { get; set; }
|
|
|
|
public Guid? SubjectId { get; set; }
|
|
|
|
public Guid? CategoryId { get; set; }
|
|
|
|
public Guid? ContentNodeId { get; set; }
|
|
|
|
[StringLength(50)]
|
|
public string? AssetType { get; set; }
|
|
|
|
[StringLength(100)]
|
|
public string? Category { get; set; }
|
|
|
|
[StringLength(50)]
|
|
public string? UploadStatus { get; set; }
|
|
|
|
[StringLength(50)]
|
|
public string? SecurityScanStatus { get; set; }
|
|
|
|
[StringLength(100)]
|
|
public string? Keyword { get; set; }
|
|
|
|
[Range(1, 500)]
|
|
public int? Limit { get; set; }
|
|
|
|
public AssetManagementFilter ToFilter()
|
|
{
|
|
return new AssetManagementFilter(
|
|
RegionId,
|
|
SubjectId,
|
|
CategoryId,
|
|
ContentNodeId,
|
|
AssetType,
|
|
Category,
|
|
UploadStatus,
|
|
SecurityScanStatus,
|
|
Keyword,
|
|
Limit);
|
|
}
|
|
}
|
|
|
|
public sealed class AssetEventQueryDto
|
|
{
|
|
public Guid? AssetId { get; set; }
|
|
public Guid? UserId { get; set; }
|
|
|
|
[Range(1, 500)]
|
|
public int? Limit { get; set; }
|
|
|
|
public AssetEventFilter ToFilter()
|
|
{
|
|
return new AssetEventFilter(AssetId, UserId, Limit);
|
|
}
|
|
}
|
|
|
|
public sealed class ImportJobQueryDto
|
|
{
|
|
[StringLength(50)]
|
|
public string? Status { get; set; }
|
|
|
|
[StringLength(50)]
|
|
public string? ImportType { get; set; }
|
|
|
|
[StringLength(50)]
|
|
public string? SourceFormat { get; set; }
|
|
|
|
[Range(1, 500)]
|
|
public int? Limit { get; set; }
|
|
|
|
public ImportJobFilter ToFilter()
|
|
{
|
|
return new ImportJobFilter(Status, ImportType, SourceFormat, Limit);
|
|
}
|
|
}
|