< Summary

Information
Class: Elsa.Secrets.Persistence.EFCore.SecretConfiguration
Assembly: Elsa.Secrets.Persistence.EFCore
File(s): /home/runner/work/elsa-core/elsa-core/src/modules/Elsa.Secrets.Persistence.EFCore/SecretConfiguration.cs
Line coverage
100%
Covered lines: 21
Uncovered lines: 0
Coverable lines: 21
Total lines: 37
Line coverage: 100%
Branch coverage
N/A
Covered branches: 0
Total branches: 0
Branch coverage: N/A
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
Configure(...)100%11100%

File(s)

/home/runner/work/elsa-core/elsa-core/src/modules/Elsa.Secrets.Persistence.EFCore/SecretConfiguration.cs

#LineLine coverage
 1using Elsa.Secrets.Models;
 2using Microsoft.EntityFrameworkCore;
 3using Microsoft.EntityFrameworkCore.Metadata.Builders;
 4
 5namespace Elsa.Secrets.Persistence.EFCore;
 6
 7internal class SecretConfiguration : IEntityTypeConfiguration<Secret>
 8{
 9    public void Configure(EntityTypeBuilder<Secret> builder)
 10    {
 111        builder.HasKey(x => x.Id);
 112        builder.Ignore(x => x.Tags);
 113        builder.Ignore(x => x.Versions);
 114        builder.Ignore(x => x.LatestActiveVersion);
 115        builder.Property(x => x.ManagedOwnerId).HasMaxLength(200);
 116        builder.Property(x => x.ManagedGenerationId).HasMaxLength(200);
 117        builder.Property<string>(SecretShadowPropertyNames.SerializedTags).HasColumnName("Tags").IsRequired();
 118        builder.Property<string>(SecretShadowPropertyNames.SerializedVersions).HasColumnName("Versions").IsRequired();
 119        builder.Property(x => x.Name).HasMaxLength(200).IsRequired();
 120        builder.Property<string>(SecretShadowPropertyNames.NormalizedName).HasMaxLength(200).IsRequired();
 121        builder.Property(x => x.DisplayName).HasMaxLength(200).IsRequired();
 122        builder.Property(x => x.TypeName).HasMaxLength(100).IsRequired();
 123        builder.Property(x => x.StoreName).HasMaxLength(100).IsRequired();
 124        builder.Property(x => x.Scope).HasMaxLength(200);
 125        builder.Property(x => x.Status).HasConversion<string>().HasMaxLength(32).IsRequired();
 26        // Uniqueness is per tenant, matching Labels (and User, Role, Application).
 27        // A global unique index would make the name a shared resource across tenants.
 28        // SQL Server still emits a filtered unique index (TenantId IS NOT NULL); leftover
 29        // nulls are stamped to "" first. Oracle stores '' as NULL, so that provider uses
 30        // a function-based unique index on NVL(TenantId, CHR(1)) instead of a filter.
 131        builder.HasIndex("TenantId", SecretShadowPropertyNames.NormalizedName).HasDatabaseName($"IX_{nameof(Secret)}_Ten
 132        builder.HasIndex(x => x.TypeName).HasDatabaseName($"IX_{nameof(Secret)}_{nameof(Secret.TypeName)}");
 133        builder.HasIndex(x => x.StoreName).HasDatabaseName($"IX_{nameof(Secret)}_{nameof(Secret.StoreName)}");
 134        builder.HasIndex(x => x.Scope).HasDatabaseName($"IX_{nameof(Secret)}_{nameof(Secret.Scope)}");
 135        builder.HasIndex(x => x.Status).HasDatabaseName($"IX_{nameof(Secret)}_{nameof(Secret.Status)}");
 136    }
 37}