< Summary

Information
Class: Elsa.Persistence.VNext.Relational.RelationalSchemaPlanner
Assembly: Elsa.Persistence.VNext
File(s): /home/runner/work/elsa-core/elsa-core/src/modules/Elsa.Persistence.VNext/Relational/RelationalSchemaPlanner.cs
Line coverage
69%
Covered lines: 18
Uncovered lines: 8
Coverable lines: 26
Total lines: 60
Line coverage: 69.2%
Branch coverage
50%
Covered branches: 4
Total branches: 8
Branch coverage: 50%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
Plan(...)75%4477.77%
PlanTable(...)0%620%
PlanIndex(...)100%210%
PlanTable(...)50%22100%
PlanIndex(...)100%11100%

File(s)

/home/runner/work/elsa-core/elsa-core/src/modules/Elsa.Persistence.VNext/Relational/RelationalSchemaPlanner.cs

#LineLine coverage
 1using Elsa.Persistence.VNext.Contracts;
 2
 3namespace Elsa.Persistence.VNext.Relational;
 4
 65public class RelationalSchemaPlanner(IRelationalTypeMapper typeMapper) : IPersistenceSchemaPlanner<RelationalSchemaPlan>
 6{
 7    public RelationalSchemaPlan Plan(PersistenceSchema schema)
 8    {
 59        var tables = new List<RelationalTable>();
 510        var indexes = new List<RelationalIndex>();
 11
 1012        foreach (var table in schema.Tables)
 13        {
 014            tables.Add(PlanTable(table));
 015            indexes.AddRange(table.Indexes.Select(index => PlanIndex(table, index)));
 16        }
 17
 2018        foreach (var storageUnit in schema.StorageUnits)
 19        {
 520            tables.Add(PlanTable(storageUnit));
 3021            indexes.AddRange(storageUnit.Indexes.Select(index => PlanIndex(storageUnit, index)));
 22        }
 23
 524        return new RelationalSchemaPlan(tables, indexes);
 25    }
 26
 27    private RelationalTable PlanTable(PersistenceTable table)
 28    {
 029        var columns = table.Columns
 030            .Select(column => new RelationalColumn(column.Name, typeMapper.Map(column), column.IsNullable))
 031            .ToList();
 032        var primaryKey = table.PrimaryKey is null ? null : new RelationalPrimaryKey(table.PrimaryKey.Name, table.Primary
 33
 034        return new RelationalTable(table.Name, table.Schema, columns, primaryKey);
 35    }
 36
 37    private static RelationalIndex PlanIndex(PersistenceTable table, PersistenceIndex index)
 38    {
 039        return new RelationalIndex(index.Name, table.Name, table.Schema, index.Columns, index.IsUnique);
 40    }
 41
 42    private RelationalTable PlanTable(PersistenceStorageUnit storageUnit)
 43    {
 544        var columns = storageUnit.Fields
 545            .Select(field =>
 546            {
 6047                var column = new PersistenceColumn(field.Name, field.Type, field.IsNullable, field.Length);
 6048                return new RelationalColumn(field.Name, typeMapper.Map(column), field.IsNullable);
 549            })
 550            .ToList();
 551        var primaryKey = storageUnit.Key is null ? null : new RelationalPrimaryKey(storageUnit.Key.Name, storageUnit.Key
 52
 553        return new RelationalTable(storageUnit.Name, storageUnit.Namespace, columns, primaryKey);
 54    }
 55
 56    private static RelationalIndex PlanIndex(PersistenceStorageUnit storageUnit, PersistenceIndex index)
 57    {
 2558        return new RelationalIndex(index.Name, storageUnit.Name, storageUnit.Namespace, index.Columns, index.IsUnique);
 59    }
 60}