• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

HicServices / RDMP / 13493861722

24 Feb 2025 08:35AM UTC coverage: 57.414% (-0.03%) from 57.446%
13493861722

push

github

web-flow
marge v8.4.3 into main (#2145)

* simple db update

* add changelog

* revert csproj

* Fix up some codeql/inspection code issues (#2087)

* Update OverviewModel.cs

Fix up some .Dispose/using issues, make finding most recent load ID more efficient

* LINQ tidying

* CodeQL fixups

* Update Catalogue.cs

Add Hashcode, Equals methods.

* Update Catalogue.cs

Tweak equality semantics for RDMP DB oddities

* Bump actions/setup-dotnet from 4.1.0 to 4.2.0

Bumps [actions/setup-dotnet](https://github.com/actions/setup-dotnet) from 4.1.0 to 4.2.0.
- [Release notes](https://github.com/actions/setup-dotnet/releases)
- [Commits](https://github.com/actions/setup-dotnet/compare/v4.1.0...v4.2.0)

---
updated-dependencies:
- dependency-name: actions/setup-dotnet
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump NUnit.Analyzers from 4.4.0 to 4.5.0

Bumps [NUnit.Analyzers](https://github.com/nunit/nunit.analyzers) from 4.4.0 to 4.5.0.
- [Release notes](https://github.com/nunit/nunit.analyzers/releases)
- [Changelog](https://github.com/nunit/nunit.analyzers/blob/master/CHANGES.md)
- [Commits](https://github.com/nunit/nunit.analyzers/compare/4.4.0...4.5.0)

---
updated-dependencies:
- dependency-name: NUnit.Analyzers
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump Minio from 6.0.3 to 6.0.4

Bumps [Minio](https://github.com/minio/minio-dotnet) from 6.0.3 to 6.0.4.
- [Release notes](https://github.com/minio/minio-dotnet/releases)
- [Commits](https://github.com/minio/minio-dotnet/compare/6.0.3...6.0.4)

---
updated-dependencies:
- dependency-name: Minio
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump the aws-sdk group across 1 directory with 4 updates

Bumps the aws-sdk grou... (continued)

11358 of 21338 branches covered (53.23%)

Branch coverage included in aggregate %.

1116 of 1482 new or added lines in 50 files covered. (75.3%)

19 existing lines in 10 files now uncovered.

32283 of 54673 relevant lines covered (59.05%)

17450.76 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

82.5
/Rdmp.Core/DataLoad/Engine/Migration/MigrationConfiguration.cs
1
// Copyright (c) The University of Dundee 2018-2019
2
// This file is part of the Research Data Management Platform (RDMP).
3
// RDMP is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
4
// RDMP is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
5
// You should have received a copy of the GNU General Public License along with RDMP. If not, see <https://www.gnu.org/licenses/>.
6

7
using System;
8
using System.Collections.Generic;
9
using System.Collections.ObjectModel;
10
using System.Linq;
11
using FAnsi.Discovery;
12
using FAnsi.Discovery.Constraints;
13
using Rdmp.Core.Curation.Data;
14
using Rdmp.Core.Curation.Data.EntityNaming;
15
using Rdmp.Core.ReusableLibraryCode.DataAccess;
16

17
namespace Rdmp.Core.DataLoad.Engine.Migration;
18

19
/// <summary>
20
/// Converts a list of TableInfos into MigrationColumnSets to achieve migration of records from STAGING to LIVE during a DLE execution.
21
/// </summary>
22
public class MigrationConfiguration
23
{
24
    private readonly DiscoveredDatabase _fromDatabaseInfo;
25
    private readonly LoadBubble _fromBubble;
26
    private readonly LoadBubble _toBubble;
27
    private readonly INameDatabasesAndTablesDuringLoads _namer;
28

29
    public MigrationConfiguration(DiscoveredDatabase fromDatabaseInfo, LoadBubble fromBubble, LoadBubble toBubble,
82✔
30
        INameDatabasesAndTablesDuringLoads namer)
82✔
31
    {
32
        _fromDatabaseInfo = fromDatabaseInfo;
82✔
33
        _fromBubble = fromBubble;
82✔
34
        _toBubble = toBubble;
82✔
35
        _namer = namer;
82✔
36
    }
82✔
37

38
    public IList<MigrationColumnSet> CreateMigrationColumnSetFromTableInfos(List<ITableInfo> tableInfos,
39
        List<ITableInfo> lookupTableInfos, IMigrationFieldProcessor migrationFieldProcessor)
40
    {
41
        //treat null values as empty
42
        tableInfos ??= new List<ITableInfo>();
118!
43
        lookupTableInfos ??= new List<ITableInfo>();
118✔
44

45
        var columnSet = new List<MigrationColumnSet>();
118✔
46

47
        foreach (var tableInfo in tableInfos.Union(lookupTableInfos))
480✔
48
        {
49
            var fromTableName = tableInfo.GetRuntimeName(_fromBubble, _namer);
122✔
50
            var toTableName = tableInfo.GetRuntimeName(_toBubble, _namer);
122✔
51

52
            var fromTable =
122✔
53
                _fromDatabaseInfo
122✔
54
                    .ExpectTable(
122✔
55
                        fromTableName); //Staging doesn't have schema e.g. even if live schema is not dbo STAGING will be
122✔
56

57
            var toTable = DataAccessPortal
122✔
58
                .ExpectDatabase(tableInfo, DataAccessContext.DataLoad)
122✔
59
                .ExpectTable(toTableName, tableInfo.Schema);
122✔
60

61
            if (!fromTable.Exists())
122!
62
                if (lookupTableInfos
×
63
                    .Contains(tableInfo)) //its a lookup table which doesn't exist in from (Staging) - nevermind
×
64
                    continue;
65
                else
66
                    throw new Exception(
×
NEW
67
                        $"Table {fromTableName} was not found on on server {_fromDatabaseInfo.Server} (Database {_fromDatabaseInfo})"); //its not a lookup table if it isn't in STAGING that's a problem!
×
68

69
            columnSet.Add(new MigrationColumnSet(fromTable, toTable, migrationFieldProcessor));
122✔
70
        }
71

72
        var sorter = new RelationshipTopologicalSort(columnSet.Select(c => c.DestinationTable));
240✔
73
        columnSet = columnSet
118✔
74
            .OrderBy(s => ((ReadOnlyCollection<DiscoveredTable>)sorter.Order).IndexOf(s.DestinationTable)).ToList();
126✔
75

76
        return columnSet;
118✔
77
    }
78
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc