diff --git a/src/ReC.Infrastructure/RecDbContext.cs b/src/ReC.Infrastructure/RecDbContext.cs index 98debc8..dc8c734 100644 --- a/src/ReC.Infrastructure/RecDbContext.cs +++ b/src/ReC.Infrastructure/RecDbContext.cs @@ -1,12 +1,16 @@ using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.Options; using ReC.Application.Common.Interfaces; +using ReC.Application.Common.Options.DbModel; using ReC.Domain.QueryOutput; using ReC.Domain.Views; namespace ReC.Infrastructure; -public class RecDbContext(DbContextOptions options) : DbContext(options), IRecDbContext +public class RecDbContext(DbContextOptions options, IOptions dbModelOptions) : DbContext(options), IRecDbContext { + private readonly DbModelOptions _dbModelOptions = dbModelOptions.Value; + #region DB Sets public DbSet RecActionViews { get; set; } @@ -21,100 +25,102 @@ public class RecDbContext(DbContextOptions options) : DbContext(op public DbSet RecResults { get; set; } #endregion DB Sets - // TODO: Update to configure via appsettings.json protected override void OnModelCreating(ModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); + var actionOpt = _dbModelOptions.RecActionView; modelBuilder.Entity(b => { - b.ToView("VWREC_ACTION", "dbo"); + b.ToView(actionOpt.View.Name, actionOpt.View.Schema); 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.Property(e => e.Id).HasColumnName(actionOpt.Id); + b.Property(e => e.ProfileId).HasColumnName(actionOpt.ProfileId); + b.Property(e => e.ProfileName).HasColumnName(actionOpt.ProfileName); + b.Property(e => e.ProfileType).HasColumnName(actionOpt.ProfileType); + b.Property(e => e.Sequence).HasColumnName(actionOpt.Sequence); + b.Property(e => e.EndpointId).HasColumnName(actionOpt.EndpointId); + b.Property(e => e.EndpointUri).HasColumnName(actionOpt.EndpointUri); + b.Property(e => e.EndpointAuthId).HasColumnName(actionOpt.EndpointAuthId); + b.Property(e => e.EndpointAuthType).HasColumnName(actionOpt.EndpointAuthType); + b.Property(e => e.EndpointAuthTypeName).HasColumnName(actionOpt.EndpointAuthTypeName); + b.Property(e => e.EndpointAuthApiKey).HasColumnName(actionOpt.EndpointAuthApiKey); + b.Property(e => e.EndpointAuthApiValue).HasColumnName(actionOpt.EndpointAuthApiValue); + b.Property(e => e.EndpointAuthApiKeyAddTo).HasColumnName(actionOpt.EndpointAuthApiKeyAddTo); + b.Property(e => e.EndpointAuthApiKeyAddToName).HasColumnName(actionOpt.EndpointAuthApiKeyAddToName); + b.Property(e => e.EndpointAuthToken).HasColumnName(actionOpt.EndpointAuthToken); + b.Property(e => e.EndpointAuthUsername).HasColumnName(actionOpt.EndpointAuthUsername); + b.Property(e => e.EndpointAuthPassword).HasColumnName(actionOpt.EndpointAuthPassword); + b.Property(e => e.EndpointAuthDomain).HasColumnName(actionOpt.EndpointAuthDomain); + b.Property(e => e.EndpointAuthWorkstation).HasColumnName(actionOpt.EndpointAuthWorkstation); + b.Property(e => e.EndpointParamsId).HasColumnName(actionOpt.EndpointParamsId); + b.Property(e => e.SqlConnectionId).HasColumnName(actionOpt.SqlConnectionId); + b.Property(e => e.SqlConnectionServer).HasColumnName(actionOpt.SqlConnectionServer); + b.Property(e => e.SqlConnectionDb).HasColumnName(actionOpt.SqlConnectionDb); + b.Property(e => e.SqlConnectionUsername).HasColumnName(actionOpt.SqlConnectionUsername); + b.Property(e => e.SqlConnectionPassword).HasColumnName(actionOpt.SqlConnectionPassword); + b.Property(e => e.RestType).HasColumnName(actionOpt.RestType); + b.Property(e => e.RestTypeName).HasColumnName(actionOpt.RestTypeName); + b.Property(e => e.PreprocessingQuery).HasColumnName(actionOpt.PreprocessingQuery); + b.Property(e => e.HeaderQuery).HasColumnName(actionOpt.HeaderQuery); + b.Property(e => e.BodyQuery).HasColumnName(actionOpt.BodyQuery); + b.Property(e => e.PostprocessingQuery).HasColumnName(actionOpt.PostprocessingQuery); + b.Property(e => e.ErrorAction).HasColumnName(actionOpt.ErrorAction); + b.Property(e => e.ErrorActionName).HasColumnName(actionOpt.ErrorActionName); b.HasMany(e => e.Results) .WithOne(r => r.Action) .HasForeignKey(r => r.ActionId); }); + var profileOpt = _dbModelOptions.ProfileView; modelBuilder.Entity(b => { - b.ToView("VWREC_PROFILE", "dbo"); + b.ToView(profileOpt.View.Name, profileOpt.View.Schema); 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"); + b.Property(e => e.Id).HasColumnName(profileOpt.Id); + b.Property(e => e.Active).HasColumnName(profileOpt.Active); + b.Property(e => e.TypeId).HasColumnName(profileOpt.TypeId); + b.Property(e => e.Type).HasColumnName(profileOpt.Type); + b.Property(e => e.Mandantor).HasColumnName(profileOpt.Mandantor); + b.Property(e => e.ProfileName).HasColumnName(profileOpt.ProfileName); + b.Property(e => e.Description).HasColumnName(profileOpt.Description); + b.Property(e => e.LogLevelId).HasColumnName(profileOpt.LogLevelId); + b.Property(e => e.LogLevel).HasColumnName(profileOpt.LogLevel); + b.Property(e => e.LanguageId).HasColumnName(profileOpt.LanguageId); + b.Property(e => e.Language).HasColumnName(profileOpt.Language); + b.Property(e => e.AddedWho).HasColumnName(profileOpt.AddedWho); + b.Property(e => e.AddedWhen).HasColumnName(profileOpt.AddedWhen); + b.Property(e => e.ChangedWho).HasColumnName(profileOpt.ChangedWho); + b.Property(e => e.ChangedWhen).HasColumnName(profileOpt.ChangedWhen); + b.Property(e => e.FirstRun).HasColumnName(profileOpt.FirstRun); + b.Property(e => e.LastRun).HasColumnName(profileOpt.LastRun); + b.Property(e => e.LastResult).HasColumnName(profileOpt.LastResult); }); + var resultOpt = _dbModelOptions.ResultView; modelBuilder.Entity(b => { - b.ToView("VWREC_RESULT", "dbo"); + b.ToView(resultOpt.View.Name, resultOpt.View.Schema); 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.Type).HasColumnName("RESULT_TYPE_ID"); - b.Property(e => e.TypeName).HasColumnName("RESULT_TYPE"); - b.Property(e => e.Header).HasColumnName("RESULT_HEADER"); - b.Property(e => e.Body).HasColumnName("RESULT_BODY"); - b.Property(e => e.Info).HasColumnName("RESULT_INFO"); - b.Property(e => e.Error).HasColumnName("RESULT_ERROR"); - 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.Id).HasColumnName(resultOpt.Id); + b.Property(e => e.ActionId).HasColumnName(resultOpt.ActionId); + b.Property(e => e.ProfileId).HasColumnName(resultOpt.ProfileId); + b.Property(e => e.ProfileName).HasColumnName(resultOpt.ProfileName); + b.Property(e => e.StatusCode).HasColumnName(resultOpt.StatusCode); + b.Property(e => e.StatusName).HasColumnName(resultOpt.StatusName); + b.Property(e => e.Type).HasColumnName(resultOpt.Type); + b.Property(e => e.TypeName).HasColumnName(resultOpt.TypeName); + b.Property(e => e.Header).HasColumnName(resultOpt.Header); + b.Property(e => e.Body).HasColumnName(resultOpt.Body); + b.Property(e => e.Info).HasColumnName(resultOpt.Info); + b.Property(e => e.Error).HasColumnName(resultOpt.Error); + b.Property(e => e.AddedWho).HasColumnName(resultOpt.AddedWho); + b.Property(e => e.AddedWhen).HasColumnName(resultOpt.AddedWhen); + b.Property(e => e.ChangedWho).HasColumnName(resultOpt.ChangedWho); + b.Property(e => e.ChangedWhen).HasColumnName(resultOpt.ChangedWhen); b.HasOne(r => r.Action) .WithMany(a => a.Results) @@ -125,22 +131,25 @@ public class RecDbContext(DbContextOptions options) : DbContext(op .HasForeignKey(r => r.ProfileId); }); + var headerOpt = _dbModelOptions.HeaderQueryResult; modelBuilder.Entity(b => { b.HasNoKey(); - b.Property(e => e.RawHeader).HasColumnName("REQUEST_HEADER"); + b.Property(e => e.RawHeader).HasColumnName(headerOpt.RawHeader); }); + var bodyOpt = _dbModelOptions.BodyQueryResult; modelBuilder.Entity(b => { b.HasNoKey(); - b.Property(e => e.RawBody).HasColumnName("REQUEST_BODY"); + b.Property(e => e.RawBody).HasColumnName(bodyOpt.RawBody); }); + var insertOpt = _dbModelOptions.InsertObjectResult; modelBuilder.Entity(b => { b.HasNoKey(); - b.Property(e => e.NewObjectId).HasColumnName("oGUID"); + b.Property(e => e.NewObjectId).HasColumnName(insertOpt.NewObjectId); }); } } \ No newline at end of file