116 lines
2.5 KiB
C#
116 lines
2.5 KiB
C#
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;
|
|
}
|
|
}
|