106 lines
2.5 KiB
C#
106 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 Stored Procedure entity for creating and managing stored procedures
|
|
/// </summary>
|
|
public class SqlStoredProcedure : FullAuditedEntity<Guid>, IMultiTenant
|
|
{
|
|
public Guid? TenantId { get; set; }
|
|
|
|
/// <summary>
|
|
/// Procedure name in database
|
|
/// </summary>
|
|
public string ProcedureName { get; set; }
|
|
|
|
/// <summary>
|
|
/// Schema name (default: dbo)
|
|
/// </summary>
|
|
public string SchemaName { get; set; }
|
|
|
|
/// <summary>
|
|
/// Display name
|
|
/// </summary>
|
|
public string DisplayName { get; set; }
|
|
|
|
/// <summary>
|
|
/// Description
|
|
/// </summary>
|
|
public string Description { get; set; }
|
|
|
|
/// <summary>
|
|
/// Full procedure definition (CREATE/ALTER)
|
|
/// </summary>
|
|
public string ProcedureBody { get; set; }
|
|
|
|
/// <summary>
|
|
/// DataSource code
|
|
/// </summary>
|
|
public string DataSourceCode { get; set; }
|
|
|
|
/// <summary>
|
|
/// Status
|
|
/// </summary>
|
|
public SqlQueryStatus Status { get; set; }
|
|
|
|
/// <summary>
|
|
/// Category
|
|
/// </summary>
|
|
public string Category { get; set; }
|
|
|
|
/// <summary>
|
|
/// Whether procedure exists in database
|
|
/// </summary>
|
|
public bool IsDeployed { get; set; }
|
|
|
|
/// <summary>
|
|
/// Last deployment time
|
|
/// </summary>
|
|
public DateTime? LastDeployedAt { get; set; }
|
|
|
|
/// <summary>
|
|
/// Parameter definitions (JSON)
|
|
/// </summary>
|
|
public string Parameters { get; set; }
|
|
|
|
protected SqlStoredProcedure()
|
|
{
|
|
}
|
|
|
|
public SqlStoredProcedure(
|
|
Guid id,
|
|
string procedureName,
|
|
string schemaName,
|
|
string displayName,
|
|
string procedureBody,
|
|
string dataSourceCode,
|
|
Guid? tenantId = null) : base(id)
|
|
{
|
|
ProcedureName = procedureName;
|
|
SchemaName = schemaName ?? "dbo";
|
|
DisplayName = displayName;
|
|
ProcedureBody = procedureBody;
|
|
DataSourceCode = dataSourceCode;
|
|
TenantId = tenantId;
|
|
Status = SqlQueryStatus.Draft;
|
|
IsDeployed = false;
|
|
}
|
|
|
|
public void UpdateBody(string body)
|
|
{
|
|
ProcedureBody = body;
|
|
}
|
|
|
|
public void MarkAsDeployed()
|
|
{
|
|
IsDeployed = true;
|
|
LastDeployedAt = DateTime.UtcNow;
|
|
Status = SqlQueryStatus.Active;
|
|
}
|
|
|
|
public string GetFullName() => $"{SchemaName}.{ProcedureName}";
|
|
}
|