Files
SoaFE-Portal/src/Data/Models/AppSetting.cs
2026-02-21 18:48:45 -06:00

57 lines
1.8 KiB
C#

using System.Text.Json;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
namespace SoaFE.Portal.Data.Models;
public sealed class AppSetting : IEntityTypeConfiguration<AppSetting>
{
#region Scalar Properties
public required string AppSettingKey { get; set; }
public JsonElement? Value { get; set; }
public DateTimeOffset? ModifiedAt { get; set; }
public long? ModifiedBy { get; set; }
#endregion
#region Navigation Properties
public User? ModifiedByUser { get; set; }
#endregion
public void Configure(EntityTypeBuilder<AppSetting> builder)
{
// Configure Table
builder.ToTable("app_setting");
builder.HasKey(e => e.AppSettingKey)
.HasName("pk_app_setting");
builder.HasIndex(e => e.ModifiedBy)
.HasDatabaseName("ix_app_setting_modified_by");
// Configure Columns
var order = 0;
builder.Property(e => e.AppSettingKey)
.HasColumnName("app_setting_key")
.HasMaxLength(16)
.HasColumnOrder(order++);
builder.Property(e => e.Value)
.HasColumnName("value")
.HasColumnType("jsonb")
.HasColumnOrder(order++);
builder.Property(e => e.ModifiedAt)
.HasColumnName("modified_at")
.HasColumnOrder(order++);
builder.Property(e => e.ModifiedBy)
.HasColumnName("modified_by")
.HasColumnOrder(order++);
// Configure Relationships
builder.HasOne(e => e.ModifiedByUser)
.WithMany()
.HasForeignKey(e => e.ModifiedBy)
.HasConstraintName("fk_app_setting_user_modified_by")
.OnDelete(DeleteBehavior.SetNull);
}
}