< Summary

Information
Class: Elsa.Secrets.Persistence.EFCore.SecretSerialization
Assembly: Elsa.Secrets.Persistence.EFCore
File(s): /home/runner/work/elsa-core/elsa-core/src/modules/Elsa.Secrets.Persistence.EFCore/SecretSerialization.cs
Line coverage
0%
Covered lines: 0
Uncovered lines: 19
Coverable lines: 19
Total lines: 41
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 6
Branch coverage: 0%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.cctor()100%210%
StoreSerializedProperties(...)100%210%
LoadSerializedProperties(...)0%620%
Deserialize(...)0%2040%

File(s)

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

#LineLine coverage
 1using System.Text.Json;
 2using System.Text.Json.Serialization;
 3using Elsa.Secrets.Models;
 4using Microsoft.EntityFrameworkCore;
 5
 6namespace Elsa.Secrets.Persistence.EFCore;
 7
 8internal static class SecretSerialization
 9{
 010    private static readonly JsonSerializerOptions JsonOptions = new(JsonSerializerDefaults.Web)
 011    {
 012        Converters = { new JsonStringEnumConverter() }
 013    };
 14
 15    public static void StoreSerializedProperties(DbContext dbContext, Secret secret)
 16    {
 017        dbContext.Entry(secret).Property(SecretShadowPropertyNames.SerializedTags).CurrentValue = JsonSerializer.Seriali
 018        dbContext.Entry(secret).Property(SecretShadowPropertyNames.SerializedVersions).CurrentValue = JsonSerializer.Ser
 019    }
 20
 21    public static void LoadSerializedProperties(DbContext dbContext, Secret? secret)
 22    {
 023        if (secret == null)
 024            return;
 25
 026        var tagsJson = dbContext.Entry(secret).Property<string>(SecretShadowPropertyNames.SerializedTags).CurrentValue;
 027        var versionsJson = dbContext.Entry(secret).Property<string>(SecretShadowPropertyNames.SerializedVersions).Curren
 028        var tags = Deserialize(tagsJson, static () => new List<string>());
 029        var versions = Deserialize(versionsJson, static () => new List<SecretVersion>());
 030        secret.Tags = tags.ToHashSet(StringComparer.OrdinalIgnoreCase);
 031        secret.Versions = versions;
 032    }
 33
 34    private static T Deserialize<T>(string? json, Func<T> fallback)
 35    {
 036        if (string.IsNullOrWhiteSpace(json))
 037            return fallback();
 38
 039        return JsonSerializer.Deserialize<T>(json, JsonOptions) ?? fallback();
 40    }
 41}