erp-platform/api/modules/Erp.SqlQueryManager/Erp.SqlQueryManager.Domain/Entities/SqlQuery.cs

117 lines
2.5 KiB
C#
Raw Normal View History

2025-12-05 08:56:53 +00:00
using System;
using Erp.SqlQueryManager.Domain.Shared;
using Volo.Abp.Domain.Entities.Auditing;
using Volo.Abp.MultiTenancy;
namespace Erp.SqlQueryManager.Domain.Entities;
/// <summary>
/// SQL Query entity for storing and managing SQL queries
/// </summary>
public class SqlQuery : FullAuditedEntity<Guid>, IMultiTenant
{
public Guid? TenantId { get; set; }
/// <summary>
/// Unique code for the query
/// </summary>
public string Code { get; set; }
/// <summary>
/// Display name
/// </summary>
public string Name { get; set; }
/// <summary>
/// Description of the query
/// </summary>
public string Description { get; set; }
/// <summary>
/// SQL query content
/// </summary>
public string QueryText { get; set; }
/// <summary>
/// DataSource code to use for execution
/// </summary>
public string DataSourceCode { get; set; }
/// <summary>
/// Query status
/// </summary>
public SqlQueryStatus Status { get; set; }
/// <summary>
/// Category for organization
/// </summary>
public string Category { get; set; }
/// <summary>
/// Tags for filtering
/// </summary>
public string Tags { get; set; }
/// <summary>
/// Last execution time
/// </summary>
public DateTime? LastExecutedAt { get; set; }
/// <summary>
/// Execution count
/// </summary>
public int ExecutionCount { get; set; }
/// <summary>
/// Whether query modifies data
/// </summary>
public bool IsModifyingData { get; set; }
/// <summary>
/// Expected parameter definitions (JSON format)
/// </summary>
public string Parameters { get; set; }
protected SqlQuery()
{
}
public SqlQuery(
Guid id,
string code,
string name,
string queryText,
string dataSourceCode,
Guid? tenantId = null) : base(id)
{
Code = code;
Name = name;
QueryText = queryText;
DataSourceCode = dataSourceCode;
TenantId = tenantId;
Status = SqlQueryStatus.Draft;
ExecutionCount = 0;
}
public void UpdateQueryText(string queryText)
{
QueryText = queryText;
}
public void MarkAsExecuted()
{
LastExecutedAt = DateTime.UtcNow;
ExecutionCount++;
}
public void Activate()
{
Status = SqlQueryStatus.Active;
}
public void Archive()
{
Status = SqlQueryStatus.Archived;
}
}