RobotSubTaskHistoryConfiguration.cs 2.66 KB
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Rcs.Domain.Entities;

namespace Rcs.Infrastructure.DB.Configuration.Domain;

/// <summary>
/// RobotSubTaskHistory 实体 EF Core 配置
/// </summary>
public class RobotSubTaskHistoryConfiguration : IEntityTypeConfiguration<RobotSubTaskHistory>
{
    public void Configure(EntityTypeBuilder<RobotSubTaskHistory> builder)
    {
        builder.ToTable("robot_sub_task_histories");

        builder.HasKey(e => e.SubTaskId);

        builder.Property(e => e.SubTaskId)
            .HasColumnName("sub_task_id")
            .ValueGeneratedNever();

        builder.Property(e => e.TaskCode)
            .HasColumnName("task_code")
            .HasMaxLength(50)
            .IsRequired();

        builder.Property(e => e.RobotCode)
            .HasColumnName("robot_code")
            .HasMaxLength(50);

        builder.Property(e => e.BeginNodeCode)
            .HasColumnName("begin_node_code")
            .HasMaxLength(50)
            .IsRequired();

        builder.Property(e => e.EndNodeCode)
            .HasColumnName("end_node_code")
            .HasMaxLength(50)
            .IsRequired();

        builder.Property(e => e.Sequence)
            .HasColumnName("sequence")
            .IsRequired();

        builder.Property(e => e.Status)
            .HasColumnName("status")
            .IsRequired();

        builder.Property(e => e.ExecutionCount)
            .HasColumnName("execution_count")
            .IsRequired();

        builder.Property(e => e.CreatedAt)
            .HasColumnName("created_at")
            .HasColumnType("timestamp without time zone")
            .IsRequired();

        builder.Property(e => e.UpdatedAt)
            .HasColumnName("updated_at")
            .HasColumnType("timestamp without time zone");

        builder.Property(e => e.ArchivedAt)
            .HasColumnName("archived_at")
            .HasColumnType("timestamp without time zone")
            .IsRequired();

        builder.HasIndex(e => e.TaskCode)
            .HasDatabaseName("idx_sub_task_history_task_code");

        builder.HasIndex(e => e.RobotCode)
            .HasDatabaseName("idx_sub_task_history_robot_code");

        builder.HasIndex(e => e.BeginNodeCode)
            .HasDatabaseName("idx_sub_task_history_begin_node_code");

        builder.HasIndex(e => e.EndNodeCode)
            .HasDatabaseName("idx_sub_task_history_end_node_code");

        builder.HasIndex(e => new { e.TaskCode, e.Sequence })
            .HasDatabaseName("idx_sub_task_history_task_sequence");

        builder.HasIndex(e => e.ArchivedAt)
            .HasDatabaseName("idx_sub_task_history_archived_at");
    }
}