121 lines
2.8 KiB
C#
121 lines
2.8 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 Function entity for creating and managing database functions
|
||
|
|
/// </summary>
|
||
|
|
public class SqlFunction : FullAuditedEntity<Guid>, IMultiTenant
|
||
|
|
{
|
||
|
|
public Guid? TenantId { get; set; }
|
||
|
|
|
||
|
|
/// <summary>
|
||
|
|
/// Function name in database
|
||
|
|
/// </summary>
|
||
|
|
public string FunctionName { 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>
|
||
|
|
/// Function type
|
||
|
|
/// </summary>
|
||
|
|
public SqlFunctionType FunctionType { get; set; }
|
||
|
|
|
||
|
|
/// <summary>
|
||
|
|
/// Full function definition (CREATE/ALTER)
|
||
|
|
/// </summary>
|
||
|
|
public string FunctionBody { get; set; }
|
||
|
|
|
||
|
|
/// <summary>
|
||
|
|
/// Return type definition
|
||
|
|
/// </summary>
|
||
|
|
public string ReturnType { 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 function 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 SqlFunction()
|
||
|
|
{
|
||
|
|
}
|
||
|
|
|
||
|
|
public SqlFunction(
|
||
|
|
Guid id,
|
||
|
|
string functionName,
|
||
|
|
string schemaName,
|
||
|
|
string displayName,
|
||
|
|
SqlFunctionType functionType,
|
||
|
|
string functionBody,
|
||
|
|
string returnType,
|
||
|
|
string dataSourceCode,
|
||
|
|
Guid? tenantId = null) : base(id)
|
||
|
|
{
|
||
|
|
FunctionName = functionName;
|
||
|
|
SchemaName = schemaName ?? "dbo";
|
||
|
|
DisplayName = displayName;
|
||
|
|
FunctionType = functionType;
|
||
|
|
FunctionBody = functionBody;
|
||
|
|
ReturnType = returnType;
|
||
|
|
DataSourceCode = dataSourceCode;
|
||
|
|
TenantId = tenantId;
|
||
|
|
Status = SqlQueryStatus.Draft;
|
||
|
|
IsDeployed = false;
|
||
|
|
}
|
||
|
|
|
||
|
|
public void UpdateBody(string body)
|
||
|
|
{
|
||
|
|
FunctionBody = body;
|
||
|
|
}
|
||
|
|
|
||
|
|
public void MarkAsDeployed()
|
||
|
|
{
|
||
|
|
IsDeployed = true;
|
||
|
|
LastDeployedAt = DateTime.UtcNow;
|
||
|
|
Status = SqlQueryStatus.Active;
|
||
|
|
}
|
||
|
|
|
||
|
|
public string GetFullName() => $"{SchemaName}.{FunctionName}";
|
||
|
|
}
|