From bc6df8b51b98e9d1a5e0fceba2e9f2d6444412fa Mon Sep 17 00:00:00 2001 From: Stefan Negele Date: Fri, 22 Sep 2023 17:02:28 +0200 Subject: [PATCH] Check model added --- schema.go | 20 ++++++++++++++++++++ schema_test.go | 14 ++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/schema.go b/schema.go index e750aad6..5c96870d 100644 --- a/schema.go +++ b/schema.go @@ -52,6 +52,7 @@ const ( DatasetDifferenceTypeFieldAdditionalConstraintAdded DatasetDifferenceTypeFieldAdditionalConstraintRemoved DatasetDifferenceDatasetSchemaTypeChanged + DatasetDifferenceModelAdded ) func (d DatasetDifferenceType) String() string { @@ -74,6 +75,8 @@ func (d DatasetDifferenceType) String() string { // info case DatasetDifferenceDatasetSchemaTypeChanged: return "dataset-schema-type-changed" + case DatasetDifferenceModelAdded: + return "model-added" } return "" @@ -132,6 +135,7 @@ func CompareDatasets(old, new Dataset) (result []DatasetDifference) { fieldConstraintRemoved, // info datasetSchemaTypeChanged, + modelAdded, } for _, comparison := range comparisons { @@ -309,6 +313,22 @@ func datasetSchemaTypeChanged(old, new Dataset) (result []DatasetDifference) { return result } +func modelAdded(old, new Dataset) (result []DatasetDifference) { + for _, newModel := range new.Models { + if newModel.findEquivalent(old.Models) == nil { + result = append(result, DatasetDifference{ + Type: DatasetDifferenceModelAdded, + Level: DatasetDifferenceLevelModel, + Severity: DatasetDifferenceSeverityInfo, + ModelName: newModel.Name, + Description: fmt.Sprintf("model '%v' was added", newModel.Name), + }) + } + } + + return result +} + func (constraint FieldConstraint) isIn(list []FieldConstraint) bool { for _, oldConstraint := range list { if constraint.Type == oldConstraint.Type && constraint.Expression == oldConstraint.Expression { diff --git a/schema_test.go b/schema_test.go index 0edd232d..9b02fa1e 100644 --- a/schema_test.go +++ b/schema_test.go @@ -179,6 +179,20 @@ func TestCompareDatasets(t *testing.T) { Description: "schema type changed from 'dbt' to 'json-schema'", }}, }, + { + name: "modelAdded", + args: args{ + Dataset{}, + Dataset{Models: []Model{{Name: "my_model"}}}, + }, + want: []DatasetDifference{{ + Type: DatasetDifferenceModelAdded, + Level: DatasetDifferenceLevelModel, + Severity: DatasetDifferenceSeverityInfo, + ModelName: "my_model", + Description: "model 'my_model' was added", + }}, + }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) {