Skip to content

Commit f7fea56

Browse files
authored
Merge pull request #813 from code0-tech/validation-preparations
Add location to all ValidationResults
2 parents d511219 + fe0825b commit f7fea56

11 files changed

+88
-27
lines changed

app/services/namespaces/projects/flows/validation/data_type/data_type_identifier_validation_service.rb

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,20 +28,30 @@ def execute
2828
flow: flow.id,
2929
data_type_identifier: data_type_identifier.id,
3030
errors: data_type_identifier.errors.full_messages)
31-
errors << ValidationResult.error(:data_type_identifier_model_invalid, data_type_identifier.errors)
31+
errors << ValidationResult.error(
32+
:data_type_identifier_model_invalid,
33+
details: data_type_identifier.errors,
34+
location: data_type_identifier
35+
)
3236
end
3337
if data_type_identifier.runtime != flow.project.primary_runtime
3438
logger.debug(message: 'Data type identifier runtime mismatch',
3539
primary_runtime: flow.project.primary_runtime.id,
3640
given_runtime: data_type_identifier.runtime.id,
3741
flow: flow.id,
3842
data_type_identifier: data_type_identifier.id)
39-
errors << ValidationResult.error(:data_type_identifier_runtime_mismatch)
43+
errors << ValidationResult.error(
44+
:data_type_identifier_runtime_mismatch,
45+
location: data_type_identifier
46+
)
4047
end
4148

4249
if data_type_identifier.generic_key.present?
4350
unless node.runtime_function.generic_keys.include?(data_type_identifier.generic_key)
44-
errors << ValidationResult.error(:data_type_identifier_generic_key_not_found)
51+
errors << ValidationResult.error(
52+
:data_type_identifier_generic_key_not_found,
53+
location: data_type_identifier
54+
)
4555
end
4656
elsif data_type_identifier.generic_type.present?
4757
errors += ::NodeFunction::GenericTypeValidationService.new(

app/services/namespaces/projects/flows/validation/data_type/data_type_rule_validation_service.rb

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,11 @@ def execute
2929
data_type: data_type.id,
3030
rule: rule.id,
3131
errors: rule.errors.full_messages)
32-
errors << ValidationResult.error(:data_type_rule_model_invalid, rule.errors)
32+
errors << ValidationResult.error(
33+
:data_type_rule_model_invalid,
34+
details: rule.errors,
35+
location: rule
36+
)
3337
end
3438
end
3539
errors

app/services/namespaces/projects/flows/validation/data_type/data_type_validation_service.rb

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,11 @@ def execute
2727
flow: flow.id,
2828
data_type: data_type.id,
2929
errors: data_type.errors.full_messages)
30-
errors << ValidationResult.error(:data_type_model_invalid, data_type.errors)
30+
errors << ValidationResult.error(
31+
:data_type_model_invalid,
32+
details: data_type.errors,
33+
location: data_type
34+
)
3135
end
3236

3337
primary_runtime = flow.project.primary_runtime
@@ -38,7 +42,10 @@ def execute
3842
given_runtime: data_type.runtime.id,
3943
flow: flow.id,
4044
data_type: data_type.id)
41-
errors << ValidationResult.error(:data_type_runtime_mismatch)
45+
errors << ValidationResult.error(
46+
:data_type_runtime_mismatch,
47+
location: data_type
48+
)
4249
end
4350

4451
data_type.parent_type&.tap do |parent_type|

app/services/namespaces/projects/flows/validation/flow_setting_validation_service.rb

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,11 @@ def execute
2222

2323
if setting.invalid?
2424
logger.debug("Invalid setting: #{setting.errors.full_messages.join(', ')}")
25-
errors << ValidationResult.error(:flow_setting_model_invalid, setting.errors)
25+
errors << ValidationResult.error(
26+
:flow_setting_model_invalid,
27+
details: setting.errors,
28+
location: setting
29+
)
2630
end
2731
errors
2832
end

app/services/namespaces/projects/flows/validation/flow_type_validation_service.rb

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,10 @@ def execute
2121
logger.debug("Validating flow_type: #{flow_type.inspect} for flow: #{flow.id}")
2222

2323
if flow_type.runtime != flow.project.primary_runtime
24-
errors << ValidationResult.error(:flow_type_runtime_mismatch)
24+
errors << ValidationResult.error(
25+
:flow_type_runtime_mismatch,
26+
location: flow_type
27+
)
2528
end
2629
errors
2730
end

app/services/namespaces/projects/flows/validation/node_function/generic_mapper_validation_service.rb

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,10 @@ def execute
2626

2727
# Validate the target the identifier gets validated later
2828
unless parameter.node_function.runtime_function.generic_keys.include?(target)
29-
errors << ValidationResult.error(:generic_key_not_found)
29+
errors << ValidationResult.error(
30+
:generic_key_not_found,
31+
location: generic_mapper
32+
)
3033
end
3134

3235
generic_mapper.generic_combination_strategies.each do |_strategy|

app/services/namespaces/projects/flows/validation/node_function/node_function_parameter_validation_service.rb

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,17 @@ def execute
2525
if parameter.invalid?
2626
logger.debug(message: 'Node parameter validation failed',
2727
errors: parameter.errors.full_messages)
28-
errors << ValidationResult.error(:node_parameter_model_invalid, parameter.errors)
28+
errors << ValidationResult.error(
29+
:node_parameter_model_invalid,
30+
details: parameter.errors,
31+
location: parameter
32+
)
2933
end
3034
if parameter.runtime_parameter.runtime_function_definition.runtime != flow.project.primary_runtime
31-
errors << ValidationResult.error(:node_parameter_runtime_mismatch)
35+
errors << ValidationResult.error(
36+
:node_parameter_runtime_mismatch,
37+
location: parameter
38+
)
3239
end
3340

3441
if parameter.literal_value.present?

app/services/namespaces/projects/flows/validation/node_function/node_function_validation_service.rb

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,17 +24,27 @@ def execute
2424
if node_function.invalid?
2525
logger.debug(message: 'Node function validation failed',
2626
errors: node_function.errors.full_messages)
27-
errors << ValidationResult.error(:node_function_model_invalid, node_function.errors)
27+
errors << ValidationResult.error(
28+
:node_function_model_invalid,
29+
details: node_function.errors,
30+
location: node_function
31+
)
2832
end
2933
if node_function.runtime_function.runtime != flow.project.primary_runtime
30-
errors << ValidationResult.error(:node_function_runtime_mismatch)
34+
errors << ValidationResult.error(
35+
:node_function_runtime_mismatch,
36+
location: node_function
37+
)
3138
end
3239

3340
node_function.runtime_function.tap do |runtime_function|
3441
logger
3542
.debug("Validating runtime function: #{runtime_function.id} for node function: #{node_function.id}")
3643
if runtime_function.runtime != flow.project.primary_runtime
37-
errors << ValidationResult.error(:node_function_runtime_mismatch)
44+
errors << ValidationResult.error(
45+
:node_function_runtime_mismatch,
46+
location: node_function
47+
)
3848
end
3949
end
4050

@@ -46,7 +56,10 @@ def execute
4656
node_function: node_function.id,
4757
runtime_parameter: parameter.runtime_parameter.id,
4858
flow: flow.id)
49-
errors << ValidationResult.error(:parameter_mismatch)
59+
errors << ValidationResult.error(
60+
:parameter_mismatch,
61+
location: parameter
62+
)
5063
end
5164

5265
errors += NodeFunctionParameterValidationService.new(

app/services/namespaces/projects/flows/validation/node_function/reference_value_validation_service.rb

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,11 @@ def execute
2222
errors = []
2323

2424
unless reference_value.valid?
25-
errors << ValidationResult.error(:reference_value_invalid, reference_value.errors)
25+
errors << ValidationResult.error(
26+
:reference_value_invalid,
27+
details: reference_value.errors,
28+
location: reference_value
29+
)
2630
end
2731

2832
# https://github.com/code0-tech/sagittarius/issues/508 Validate the usage and datatypes

app/services/namespaces/projects/flows/validation/validation_result.rb

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,30 +5,31 @@ module Projects
55
module Flows
66
module Validation
77
class ValidationResult
8-
def self.typo(error_code, details = nil)
9-
new(severity: :typo, error_code: error_code, details: details)
8+
def self.typo(error_code, location:, details: nil)
9+
new(severity: :typo, error_code: error_code, details: details, location: location)
1010
end
1111

12-
def self.error(error_code, details = nil)
13-
new(severity: :error, error_code: error_code, details: details)
12+
def self.error(error_code, location:, details: nil)
13+
new(severity: :error, error_code: error_code, details: details, location: location)
1414
end
1515

16-
def self.weak(error_code, details = nil)
17-
new(severity: :weak, error_code: error_code, details: details)
16+
def self.weak(error_code, location:, details: nil)
17+
new(severity: :weak, error_code: error_code, details: details, location: location)
1818
end
1919

20-
def self.warning(error_code, details = nil)
21-
new(severity: :warning, error_code: error_code, details: details)
20+
def self.warning(error_code, location:, details: nil)
21+
new(severity: :warning, error_code: error_code, details: details, location: location)
2222
end
2323

24-
attr_reader :severity, :error_code, :details
24+
attr_reader :severity, :error_code, :details, :location
2525

26-
def initialize(severity:, error_code:, details:)
26+
def initialize(severity:, error_code:, details:, location:)
2727
FlowValidationErrorCode.validate_error_code!(error_code)
2828

2929
@severity = severity
3030
@error_code = error_code
3131
@details = details
32+
@location = location
3233
end
3334
end
3435
end

0 commit comments

Comments
 (0)