using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FrameworkDAL.Query.SysJobRun
{
public static class SysJobRunQB
{
public const string GET_SYSJOBRUN = @"
SELECT
S.SYSJOBRUNID AS SysJobRunId,
S.SYSJOBID AS SysJobId,
--J.JOBNAME AS SysJobName,
--J.JOBCODE AS SysJobCode,
S.STARTEDAT AS StartedAt,
S.ENDEDAT AS EndedAt,
S.STATUS AS Status,
S.LOG AS Log,
S.WORKER AS Worker,
S.RUNIDENTIFIER AS RunIdentifier
FROM TSYSJOBRUN S
LEFT JOIN TSYSJOB J ON S.SYSJOBID = J.SYSJOBID
WHERE S.SYSJOBRUNID = @SysJobRunId;
";
public const string SAVE_SYSJOBRUN = @"
INSERT INTO TSYSJOBRUN(
SYSJOBID,
STARTEDAT,
ENDEDAT,
STATUS,
LOG,
WORKER,
RUNIDENTIFIER
)
VALUES
(
@SysJobId,
@StartedAt,
@EndedAt,
@Status,
@Log,
@Worker,
@RunIdentifier
);
SELECT CAST(SCOPE_IDENTITY() AS INT);
";
public const string UPDATE_SYSJOBRUN = @"
UPDATE TSYSJOBRUN
SET
SYSJOBID = @SysJobId,
STARTEDAT = @StartedAt,
ENDEDAT = @EndedAt,
STATUS = @Status,
LOG = @Log,
WORKER = @Worker,
RUNIDENTIFIER = @RunIdentifier
WHERE SYSJOBRUNID = @SysJobRunId;
";
public const string DELETE_SYSJOBRUN = @"DELETE FROM TSYSJOBRUN
WHERE SYSJOBRUNID = @SysJobRunId;";
///
/// Appends a line to an existing run's LOG without touching any other column.
/// Used by SysJobNotificationDispatcher to record a delivery attempt.
///
public const string APPEND_SYSJOBRUN_LOG = @"
UPDATE TSYSJOBRUN
SET LOG = COALESCE(LOG, '') + @LogSuffix
WHERE SYSJOBRUNID = @SysJobRunId;
";
///
/// Paginated run history. Filter by job, status, and date range.
/// Required index: IX_TSYSJOBRUN_SysJobId_TenantId (SYSJOBID, TENANTID)
///
public const string GET_LIST_SYSJOBRUN = @"
WITH PagedRuns AS (
SELECT
S.SYSJOBRUNID AS SysJobRunId,
S.SYSJOBID AS SysJobId,
S.STARTEDAT AS StartedAt,
S.ENDEDAT AS EndedAt,
S.STATUS AS Status,
S.LOG AS Log,
S.WORKER AS Worker,
S.RUNIDENTIFIER AS RunIdentifier,
ROW_NUMBER() OVER (ORDER BY S.STARTEDAT DESC, S.SYSJOBRUNID DESC) AS RowNum
FROM TSYSJOBRUN S
WHERE (@SysJobId IS NULL OR @SysJobId = -1 OR S.SYSJOBID = @SysJobId)
AND (@Status IS NULL OR @Status = -1 OR S.STATUS = @Status)
AND (@DateFrom IS NULL OR S.STARTEDAT >= @DateFrom)
AND (@DateTo IS NULL OR S.STARTEDAT <= @DateTo)
)
SELECT
SysJobRunId, SysJobId, StartedAt, EndedAt, Status, Log, Worker,
RunIdentifier
FROM PagedRuns
WHERE (@FirstNumber = -1 AND @MaxResult = -1)
OR (RowNum BETWEEN @FirstNumber AND @MaxResult);";
///
/// Total count for GET_LIST_SysJobRun (same WHERE, no pagination).
///
public const string GET_LIST_COUNT_SYSJOBRUN = @"SELECT COUNT(*)
FROM TSYSJOBRUN S
WHERE (@SysJobId IS NULL OR @SysJobId = -1 OR S.SYSJOBID = @SysJobId)
AND (@Status IS NULL OR @Status = -1 OR S.STATUS = @Status)
AND (@DateFrom IS NULL OR S.STARTEDAT >= @DateFrom)
AND (@DateTo IS NULL OR S.STARTEDAT <= @DateTo);";
}
}