81 lines
2.8 KiB
C#
81 lines
2.8 KiB
C#
using Core.Blueprint.Mongo;
|
|
using MongoDB.Bson;
|
|
using MongoDB.Bson.Serialization.Attributes;
|
|
using System.Text.Json.Serialization;
|
|
|
|
public class Document : IDocument
|
|
{
|
|
/// <summary>
|
|
/// Gets or sets the MongoDB ObjectId for the document.
|
|
/// This property is automatically generated if not provided.
|
|
/// It is used as the primary key for the document in MongoDB.
|
|
/// </summary>
|
|
[BsonId]
|
|
[BsonElement("_id")]
|
|
[BsonRepresentation(BsonType.ObjectId)]
|
|
[JsonPropertyName("_id")]
|
|
public string _Id { get; init; }
|
|
|
|
/// <summary>
|
|
/// Gets or sets a unique identifier for the document, represented as a string (GUID).
|
|
/// This value is automatically generated if not provided and can be used as a secondary key.
|
|
/// </summary>
|
|
[BsonElement("id")]
|
|
[BsonRepresentation(BsonType.String)]
|
|
[JsonPropertyName("id")]
|
|
public string Id { get; init; }
|
|
|
|
/// <summary>
|
|
/// Gets or sets the timestamp of when the document was created.
|
|
/// This value is automatically set to the current UTC time when the document is created.
|
|
/// </summary>
|
|
[BsonElement("createdAt")]
|
|
[BsonRepresentation(BsonType.DateTime)]
|
|
[JsonPropertyName("createdAt")]
|
|
public DateTime CreatedAt { get; init; }
|
|
|
|
/// <summary>
|
|
/// Gets or sets the user or system who created the document.
|
|
/// This field can be used for audit purposes.
|
|
/// </summary>
|
|
[BsonElement("createdBy")]
|
|
[BsonRepresentation(BsonType.String)]
|
|
[JsonPropertyName("createdBy")]
|
|
public string? CreatedBy { get; set; }
|
|
|
|
/// <summary>
|
|
/// Gets or sets the timestamp of when the document was last updated.
|
|
/// This value is nullable and will be set to null if the document has never been updated.
|
|
/// </summary>
|
|
[BsonElement("updatedAt")]
|
|
[BsonRepresentation(BsonType.DateTime)]
|
|
[JsonPropertyName("updatedAt")]
|
|
public DateTime? UpdatedAt { get; set; } = null;
|
|
|
|
/// <summary>
|
|
/// Gets or sets the user or system who last updated the document.
|
|
/// This field can be used for audit purposes.
|
|
/// </summary>
|
|
[BsonElement("updatedBy")]
|
|
[BsonRepresentation(BsonType.String)]
|
|
[JsonPropertyName("updatedBy")]
|
|
public string? UpdatedBy { get; set; } = null;
|
|
|
|
/// <summary>
|
|
/// Gets or sets the status of the document.
|
|
/// The status is represented by an enum and defaults to <see cref="StatusEnum.Active"/>.
|
|
/// </summary>
|
|
[BsonElement("status")]
|
|
[BsonRepresentation(BsonType.String)]
|
|
[JsonPropertyName("status")]
|
|
[JsonConverter(typeof(JsonStringEnumConverter))]
|
|
public StatusEnum? Status { get; set; }
|
|
|
|
public Document()
|
|
{
|
|
_Id = ObjectId.GenerateNewId().ToString();
|
|
Id = Guid.NewGuid().ToString();
|
|
CreatedAt = DateTime.UtcNow;
|
|
Status = StatusEnum.Active;
|
|
}
|
|
} |