forked from xiongyuxing/tiku-backend.net
feat: add core persistence model
This commit is contained in:
46
Tiku.Domain/Common/Entity.cs
Normal file
46
Tiku.Domain/Common/Entity.cs
Normal file
@@ -0,0 +1,46 @@
|
||||
using System.Text.Json;
|
||||
|
||||
namespace Tiku.Domain.Common;
|
||||
|
||||
public abstract class Entity
|
||||
{
|
||||
public Guid Id { get; set; } = Guid.NewGuid();
|
||||
}
|
||||
|
||||
public interface IHasTimestamps
|
||||
{
|
||||
DateTimeOffset CreatedAt { get; set; }
|
||||
DateTimeOffset UpdatedAt { get; set; }
|
||||
}
|
||||
|
||||
public abstract class AuditableEntity : Entity, IHasTimestamps
|
||||
{
|
||||
public DateTimeOffset CreatedAt { get; set; } = DateTimeOffset.UtcNow;
|
||||
public DateTimeOffset UpdatedAt { get; set; } = DateTimeOffset.UtcNow;
|
||||
}
|
||||
|
||||
public abstract class TenantEntity : Entity
|
||||
{
|
||||
public Guid TenantId { get; set; }
|
||||
}
|
||||
|
||||
public abstract class AuditableTenantEntity : TenantEntity, IHasTimestamps
|
||||
{
|
||||
public DateTimeOffset CreatedAt { get; set; } = DateTimeOffset.UtcNow;
|
||||
public DateTimeOffset UpdatedAt { get; set; } = DateTimeOffset.UtcNow;
|
||||
}
|
||||
|
||||
public static class JsonDefaults
|
||||
{
|
||||
public static JsonElement Object()
|
||||
{
|
||||
using var document = JsonDocument.Parse("{}");
|
||||
return document.RootElement.Clone();
|
||||
}
|
||||
|
||||
public static JsonElement Array()
|
||||
{
|
||||
using var document = JsonDocument.Parse("[]");
|
||||
return document.RootElement.Clone();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user