using Microsoft.EntityFrameworkCore; using ReC.Application.Common.Interfaces; using ReC.Domain.QueryOutput; using ReC.Domain.Views; namespace ReC.Infrastructure; public class RecDbContext(DbContextOptions options) : DbContext(options), IRecDbContext { #region DB Sets public DbSet RecActionViews { get; set; } public DbSet ProfileViews { get; set; } public DbSet RecResultViews { get; set; } public DbSet HeaderQueryResults { get; set; } public DbSet BodyQueryResults { get; set; } public DbSet RecResults { get; set; } #endregion DB Sets // TODO: Update to configure via appsettings.json protected override void OnModelCreating(ModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); modelBuilder.Entity(b => { b.ToView("VWREC_ACTION", "dbo"); b.HasKey(e => e.Id); b.Property(e => e.Id).HasColumnName("ACTION_GUID"); b.Property(e => e.ProfileId).HasColumnName("PROFILE_ID"); b.Property(e => e.ProfileName).HasColumnName("PROFILE_NAME"); b.Property(e => e.ProfileType).HasColumnName("PROFILE_TYPE_ID"); b.Property(e => e.Sequence).HasColumnName("SEQUENCE"); b.Property(e => e.EndpointId).HasColumnName("ENDPOINT_ID"); b.Property(e => e.EndpointUri).HasColumnName("ENDPOINT_URI"); b.Property(e => e.EndpointAuthId).HasColumnName("ENDPOINT_AUTH_ID"); b.Property(e => e.EndpointAuthType).HasColumnName("ENDPOINT_AUTH_TYPE_ID"); b.Property(e => e.EndpointAuthTypeName).HasColumnName("ENDPOINT_AUTH_TYPE"); b.Property(e => e.EndpointAuthApiKey).HasColumnName("ENDPOINT_AUTH_API_KEY"); b.Property(e => e.EndpointAuthApiValue).HasColumnName("ENDPOINT_AUTH_API_VALUE"); b.Property(e => e.EndpointAuthApiKeyAddTo).HasColumnName("ENDPOINT_AUTH_API_KEY_ADD_TO_ID"); b.Property(e => e.EndpointAuthApiKeyAddToName).HasColumnName("ENDPOINT_AUTH_API_KEY_ADD_TO"); b.Property(e => e.EndpointAuthToken).HasColumnName("ENDPOINT_AUTH_TOKEN"); b.Property(e => e.EndpointAuthUsername).HasColumnName("ENDPOINT_AUTH_USERNAME"); b.Property(e => e.EndpointAuthPassword).HasColumnName("ENDPOINT_AUTH_PASSWORD"); b.Property(e => e.EndpointAuthDomain).HasColumnName("ENDPOINT_AUTH_DOMAIN"); b.Property(e => e.EndpointAuthWorkstation).HasColumnName("ENDPOINT_AUTH_WORKSTATION"); b.Property(e => e.EndpointParamsId).HasColumnName("ENDPOINT_PARAMS_ID"); b.Property(e => e.SqlConnectionId).HasColumnName("SQL_CONNECTION_ID"); b.Property(e => e.SqlConnectionServer).HasColumnName("SQL_CONNECTION_SERVER"); b.Property(e => e.SqlConnectionDb).HasColumnName("SQL_CONNECTION_DB"); b.Property(e => e.SqlConnectionUsername).HasColumnName("SQL_CONNECTION_USERNAME"); b.Property(e => e.SqlConnectionPassword).HasColumnName("SQL_CONNECTION_PASSWORD"); b.Property(e => e.RestType).HasColumnName("REST_TYPE_ID"); b.Property(e => e.RestTypeName).HasColumnName("REST_TYPE"); b.Property(e => e.PreprocessingQuery).HasColumnName("PREPROCESSING_QUERY"); b.Property(e => e.HeaderQuery).HasColumnName("HEADER_QUERY"); b.Property(e => e.BodyQuery).HasColumnName("BODY_QUERY"); b.Property(e => e.PostprocessingQuery).HasColumnName("POSTPROCESSING_QUERY"); b.Property(e => e.ErrorAction).HasColumnName("ERROR_ACTION_ID"); b.Property(e => e.ErrorActionName).HasColumnName("ERROR_ACTION"); b.HasMany(e => e.Results) .WithOne(r => r.Action) .HasForeignKey(r => r.ActionId); }); modelBuilder.Entity(b => { b.ToView("VWREC_PROFILE", "dbo"); b.HasKey(e => e.Id); b.Property(e => e.Id).HasColumnName("PROFILE_GUID"); b.Property(e => e.Active).HasColumnName("ACTIVE"); b.Property(e => e.TypeId).HasColumnName("TYPE_ID"); b.Property(e => e.Type).HasColumnName("TYPE"); b.Property(e => e.Mandantor).HasColumnName("MANDANTOR"); b.Property(e => e.ProfileName).HasColumnName("PROFILE_NAME"); b.Property(e => e.Description).HasColumnName("DESCRIPTION"); b.Property(e => e.LogLevelId).HasColumnName("LOG_LEVEL_ID"); b.Property(e => e.LogLevel).HasColumnName("LOG_LEVEL"); b.Property(e => e.LanguageId).HasColumnName("LANGUAGE_ID"); b.Property(e => e.Language).HasColumnName("LANGUAGE"); b.Property(e => e.AddedWho).HasColumnName("ADDED_WHO"); b.Property(e => e.AddedWhen).HasColumnName("ADDED_WHEN"); b.Property(e => e.ChangedWho).HasColumnName("CHANGED_WHO"); b.Property(e => e.ChangedWhen).HasColumnName("CHANGED_WHEN"); b.Property(e => e.FirstRun).HasColumnName("FIRST_RUN"); b.Property(e => e.LastRun).HasColumnName("LAST_RUN"); b.Property(e => e.LastResult).HasColumnName("LAST_RESULT"); }); modelBuilder.Entity(b => { b.ToView("VWREC_RESULT", "dbo"); b.HasKey(e => e.Id); b.Property(e => e.Id).HasColumnName("RESULT_GUID"); b.Property(e => e.ActionId).HasColumnName("ACTION_ID"); b.Property(e => e.ProfileId).HasColumnName("PROFILE_ID"); b.Property(e => e.ProfileName).HasColumnName("PROFILE_NAME"); b.Property(e => e.StatusCode).HasColumnName("STATUS_ID"); b.Property(e => e.StatusName).HasColumnName("STATUS"); b.Property(e => e.Header).HasColumnName("RESULT_HEADER"); b.Property(e => e.Body).HasColumnName("RESULT_BODY"); b.Property(e => e.AddedWho).HasColumnName("ADDED_WHO"); b.Property(e => e.AddedWhen).HasColumnName("ADDED_WHEN"); b.Property(e => e.ChangedWho).HasColumnName("CHANGED_WHO"); b.Property(e => e.ChangedWhen).HasColumnName("CHANGED_WHEN"); b.HasOne(r => r.Action) .WithMany(a => a.Results) .HasForeignKey(r => r.ActionId); b.HasOne(r => r.Profile) .WithMany() .HasForeignKey(r => r.ProfileId); }); modelBuilder.Entity(b => { b.HasNoKey(); b.Property(e => e.RawHeader).HasColumnName("REQUEST_HEADER"); }); modelBuilder.Entity(b => { b.HasNoKey(); b.Property(e => e.RawBody).HasColumnName("REQUEST_BODY"); }); modelBuilder.Entity(b => { b.HasNoKey(); b.Property(e => e.NewObjectId).HasColumnName("oGUID"); }); } }