Skip to content

Commit

Permalink
add secondary constraint
Browse files Browse the repository at this point in the history
  • Loading branch information
JFriel committed Feb 11, 2025
1 parent 4ea8030 commit e5dbf4e
Show file tree
Hide file tree
Showing 7 changed files with 340 additions and 13 deletions.
6 changes: 3 additions & 3 deletions Rdmp.Core/CatalogueAnalysisTools/Data/PrimaryContraint.cs
Original file line number Diff line number Diff line change
Expand Up @@ -49,18 +49,18 @@ public PrimaryContraint(DQERepository repository, DbDataReader r): base(reposito
_result = (ConstraintResults)int.Parse(r["Result"].ToString());
}

public PrimaryContraint(DQERepository repository, ColumnInfo columnInfo, Contraints contraint, ConstraintResults result)
public PrimaryContraint(DQERepository repository, ColumnInfo columnInfo, Contraints constraint, ConstraintResults result)
{
_DQERepository = repository;
_columnInfo = columnInfo;
_constraint = contraint;
_constraint = constraint;
_result = result;

_DQERepository.InsertAndHydrate(this,
new Dictionary<string, object>
{
{ "ColumnInfo_ID", columnInfo.ID },
{ "Constraint", (int)contraint},
{ "Constraint", (int)constraint},
{ "Result", (int)result}
});
}
Expand Down
71 changes: 71 additions & 0 deletions Rdmp.Core/CatalogueAnalysisTools/Data/SecondaryConstraint.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
using Rdmp.Core.Curation.Data;
using Rdmp.Core.MapsDirectlyToDatabaseTable;
using Rdmp.Core.Repositories;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static Rdmp.Core.CatalogueAnalysisTools.Data.PrimaryContraint;

namespace Rdmp.Core.CatalogueAnalysisTools.Data
{
public class SecondaryConstraint: DatabaseEntity
{
public enum Constraints
{
BOUND,
BOUNDDATE,
NOTNULL,
PREDICTION,
REFERENTIALINTEGRITYCONSTRAINT,
REGULAREXPRESSION
}

public enum Consequences
{
WRONG,
MISSING,
INVALIDATESROW
}

private DQERepository _DQERepository { get; set; }
private ColumnInfo _columnInfo;
private Constraints _constraint;
private Consequences _consequence;
private SecondaryConstraintArgument[] _arguments;

public ColumnInfo ColumnInfo { get => _columnInfo; private set => SetField(ref _columnInfo, value); }
public Consequences Consequence { get => _consequence; set => SetField(ref _consequence, value); }
public Constraints Constraint{ get => _constraint; set => SetField(ref _constraint, value); }

public SecondaryConstraintArgument[] Arguments { get => _arguments; set => SetField(ref _arguments, value); }

public SecondaryConstraint() { }

public SecondaryConstraint(DQERepository repository, DbDataReader r) : base(repository, r)
{
_DQERepository = repository;
_columnInfo = _DQERepository.CatalogueRepository.GetObjectByID<ColumnInfo>(int.Parse(r["ColumnInfo_ID"].ToString()));
_constraint = (Constraints)int.Parse(r["Constraint"].ToString());
_consequence = (Consequences)int.Parse(r["Consequence"].ToString());
_arguments = _DQERepository.GetAllObjectsWhere<SecondaryConstraintArgument>("SecondaryConstraint_ID", int.Parse(r["ID"].ToString()));
}

public SecondaryConstraint(DQERepository repository, ColumnInfo columnInfo, Constraints constraint, Consequences consequence) {
_DQERepository = repository;
_columnInfo = columnInfo;
_consequence = consequence;
_constraint = constraint;
_DQERepository.InsertAndHydrate(this, new Dictionary<string, object>
{
{ "ColumnInfo_ID", columnInfo.ID },
{ "Constraint", (int)constraint},
{ "Consequence", (int)consequence}
});

}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
using Rdmp.Core.Curation.Data;
using Rdmp.Core.Repositories;
using System;
using System.Collections.Generic;
using System.Data.Common;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Rdmp.Core.CatalogueAnalysisTools.Data
{
public class SecondaryConstraintArgument: DatabaseEntity
{

private string _key;
private string _value;
private DQERepository _repository;
private SecondaryConstraint _constraint;

public string Key { get => _key; set => SetField(ref _key, value); }
public string Value { get => _value; set => SetField(ref _value, value); }
public SecondaryConstraint Constraint { get => _constraint; private set => SetField(ref _constraint, value); }

public SecondaryConstraintArgument(DQERepository repository, DbDataReader r): base(repository, r)
{
_repository = repository;
_key = r["Key"].ToString();
_value = r["Value"].ToString();
_constraint = _repository.GetObjectByID<SecondaryConstraint>(int.Parse(r["SecondaryConstraint_ID"].ToString()));
}

public SecondaryConstraintArgument(DQERepository repository, string key, string value, SecondaryConstraint constraint)
{
_repository = repository;
_key = key;
_value = value;
_constraint = constraint;

_repository.InsertAndHydrate(this, new Dictionary<string, object>
{
{"Key",key },
{"Value",value },
{"SecondaryConstraint_ID",constraint.ID }
});
}
}
}
31 changes: 31 additions & 0 deletions Rdmp.Core/Databases/CatalogueDatabase/up/091_AddAnalysisTools.sql
Original file line number Diff line number Diff line change
Expand Up @@ -51,4 +51,35 @@ CONSTRAINT [PK_CatalogueValidationResult] PRIMARY KEY CLUSTERED
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
END
GO

if not exists (select 1 from sys.tables where name = 'SecondaryConstraint')
BEGIN
CREATE TABLE [dbo].[SecondaryConstraint](
[ID] [int] IDENTITY(1,1) NOT NULL,
[ColumnInfo_ID] [int] NOT NULL,
[Constraint] [int] NOT NULL,
[Consequence] [int] NOT NULL,
CONSTRAINT [PK_SecondaryConstraint] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
END
GO

if not exists (select 1 from sys.tables where name = 'SecondaryConstraintArgument')
BEGIN
CREATE TABLE [dbo].[SecondaryConstraint](
[ID] [int] IDENTITY(1,1) NOT NULL,
[SecondaryConstraint_ID] [int] NOT NULL,
[Key] [nvarchar](max) NOT NULL,
[Value] [nvarchar](max) NOT NULL,
FOREIGN KEY ([SecondaryConstraint_ID]) REFERENCES [dbo].[SecondaryConstraint_ID](ID) ON DELETE CASCADE,
CONSTRAINT [PK_SecondaryConstraintArgument] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
END
GO

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit e5dbf4e

Please sign in to comment.