Introduced the `ECMJobRunner.Domain` project to support both .NET Framework 4.8 and .NET 8.0. Added `Profile`, `ProfileSqlJob`, and `ProfileHistory` entities to map to the database schema, including relationships and audit fields. Updated `ECMJobRunner.Domain.csproj` to enable multi-targeting and added dependencies for Entity Framework 6.5.1 and EF Core 8.0.11. Enabled nullable reference types and set the language version to `latest`. Added comprehensive documentation in `AGENTS.md` detailing the project structure, entities, database schema, and build instructions.
102 lines
2.8 KiB
C#
102 lines
2.8 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel.DataAnnotations;
|
|
using System.ComponentModel.DataAnnotations.Schema;
|
|
|
|
namespace ECMJobRunner.Domain.Entities
|
|
{
|
|
/// <summary>
|
|
/// Job Runner Configuration Profile Entity
|
|
/// Represents a job runner profile configuration
|
|
/// Type: 0 = ADSync; 1 = GraphQL; 2 = SQL-Job; 3 = SQL and REST-Job
|
|
/// </summary>
|
|
[Table("TBJR_CFG_PROFILE", Schema = "dbo")]
|
|
public class Profile
|
|
{
|
|
/// <summary>
|
|
/// Primary Key
|
|
/// </summary>
|
|
[Key]
|
|
[Column("PK_TBJR_CFG_PROFILE_ID")]
|
|
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
|
public long Id { get; set; }
|
|
|
|
/// <summary>
|
|
/// Active / Inactive switch
|
|
/// </summary>
|
|
[Required]
|
|
[Column("ACTIVE")]
|
|
public bool Active { get; set; } = true;
|
|
|
|
/// <summary>
|
|
/// Optional profile name
|
|
/// </summary>
|
|
[Required]
|
|
[Column("PROFILE_NAME")]
|
|
[MaxLength(150)]
|
|
public string ProfileName { get; set; } = null!;
|
|
|
|
/// <summary>
|
|
/// Profile type: 0 = ADSync; 1 = GraphQL; 2 = SQL-Job; 3 = SQL and REST-Job
|
|
/// </summary>
|
|
[Required]
|
|
[Column("TYPE_ID")]
|
|
public byte TypeId { get; set; }
|
|
|
|
/// <summary>
|
|
/// Schedule in Cron format
|
|
/// </summary>
|
|
[Required]
|
|
[Column("SCHEDULE")]
|
|
[MaxLength(150)]
|
|
public string Schedule { get; set; } = "0 30 4 ? * MON-SAT";
|
|
|
|
/// <summary>
|
|
/// Optional description
|
|
/// </summary>
|
|
[Column("COMMENT")]
|
|
[MaxLength(500)]
|
|
public string? Comment { get; set; }
|
|
|
|
/// <summary>
|
|
/// Created by
|
|
/// </summary>
|
|
[Required]
|
|
[Column("ADDED_WHO")]
|
|
[MaxLength(50)]
|
|
public string AddedWho { get; set; } = "DEFAULT";
|
|
|
|
/// <summary>
|
|
/// Created at
|
|
/// </summary>
|
|
[Required]
|
|
[Column("ADDED_WHEN")]
|
|
public DateTime AddedWhen { get; set; } = DateTime.Now;
|
|
|
|
/// <summary>
|
|
/// Modified by
|
|
/// </summary>
|
|
[Column("CHANGED_WHO")]
|
|
[MaxLength(50)]
|
|
public string? ChangedWho { get; set; }
|
|
|
|
/// <summary>
|
|
/// Modified at
|
|
/// </summary>
|
|
[Column("CHANGED_WHEN")]
|
|
public DateTime? ChangedWhen { get; set; }
|
|
|
|
// Navigation properties
|
|
|
|
/// <summary>
|
|
/// SQL Jobs associated with this profile
|
|
/// </summary>
|
|
public virtual ICollection<ProfileSqlJob> SqlJobs { get; set; } = new List<ProfileSqlJob>();
|
|
|
|
/// <summary>
|
|
/// Profile execution history
|
|
/// </summary>
|
|
public virtual ICollection<ProfileHistory> ProfileHistories { get; set; } = new List<ProfileHistory>();
|
|
}
|
|
}
|