using Dpz.Core.Entity.Base;
using Dpz.Core.Entity.Base.Indexes;

namespace Dpz.Core.Public.Entity.V4;

public class PictureRecord : BaseEntity, IIndexedEntity<PictureRecord>
{
    /// <summary>
    /// 上传人
    /// </summary>
    public required UserInfo Creator { get; set; }

    /// <summary>
    /// 上传时间
    /// </summary>
    [BsonDateTimeOptions(Kind = DateTimeKind.Local)]
    public DateTime UploadTime { get; set; }

    /// <summary>
    /// 标签
    /// </summary>
    public List<string> Tags { get; set; } = [];

    /// <summary>
    /// 图片描述
    /// </summary>
    public string? Description { get; set; }

    /// <summary>
    /// 图像类型
    /// </summary>
    [BsonRepresentation(BsonType.String)]
    public PictureCategory Category { get; set; }

    /// <summary>
    /// 图片宽度
    /// </summary>
    public int Width { get; set; }

    /// <summary>
    /// 图片高度
    /// </summary>
    public int Height { get; set; }

    /// <summary>
    /// 访问地址
    /// </summary>
    public required string AccessUrl { get; set; }

    /// <summary>
    /// 图片大小
    /// </summary>
    public long Length { get; set; }

    /// <summary>
    /// MD5
    /// </summary>
    public string? Md5 { get; set; }

    /// <summary>
    /// 云储存上传时间
    /// </summary>
    [BsonDateTimeOptions(Kind = DateTimeKind.Local)]
    public DateTime ObjectStorageUploadTime { get; set; }

    /// <inheritdoc />
    public static IReadOnlyList<EntityIndexDefinition> GetIndexDefinitions() =>
        [new() { Fields = [EntityIndexField.Ascending<PictureRecord>(x => x.Tags)] }];
}
⚠⚠    以下内容为AI分析的结果,请根据实际情况进行判断。

这是一个名为 PictureRecord 的实体类,用于表示图片记录的数据模型。让我详细解释一下这个代码:

类的基本结构

public class PictureRecord : BaseEntity, IIndexedEntity<PictureRecord>
  • 继承自 BaseEntity:提供基础实体功能(如ID、创建时间等)
  • 实现 IIndexedEntity<PictureRecord> 接口:支持数据库索引定义

主要属性说明

基本信息

  • Creator:上传人信息(必需字段)
  • UploadTime:上传时间,使用本地时区
  • Description:图片描述(可选)

图片分类和标签

  • Category:图像类型枚举,在数据库中以字符串形式存储
  • Tags:标签列表,默认为空集合

图片技术参数

  • Width/Height:图片尺寸
  • Length:图片文件大小(字节)
  • Md5:文件MD5哈希值(可选)

存储相关

  • AccessUrl:图片访问地址(必需字段)
  • ObjectStorageUploadTime:云存储上传时间

特殊特性

BSON 属性

[BsonDateTimeOptions(Kind = DateTimeKind.Local)]
[BsonRepresentation(BsonType.String)]

这些属性表明该实体设计用于 MongoDB 数据库:

  • 时间字段使用本地时区
  • 枚举类型以字符串形式存储

索引定义

public static IReadOnlyList<EntityIndexDefinition> GetIndexDefinitions() =>
    [new() { Fields = [EntityIndexField.Ascending<PictureRecord>(x => x.Tags)] }];

Tags 字段创建升序索引,提高基于标签查询的性能。

使用场景

这个实体类适用于:

  • 图片管理系统
  • 内容管理平台
  • 媒体资源库
  • 需要图片元数据管理的应用

整体设计考虑了图片的完整生命周期,从上传到存储,再到检索和管理的各个方面。

评论加载中...