Skip to content

Commit 29ad77d

Browse files
Merge pull request #212 from code0-tech/210-add-data-type-identifier
Added DataTypeIdentifier to ValidationFlow
2 parents 6af4f2f + 2c5b5d5 commit 29ad77d

5 files changed

Lines changed: 67 additions & 56 deletions

File tree

build/ruby/lib/tucana/shared/shared.data_type.rb

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -36,21 +36,21 @@ def rule_config
3636
def create(variant, config)
3737
case variant
3838
when :contains_key
39-
self.contains_key = DefinitionDataTypeContainsKeyRuleConfig.new(config)
39+
self.contains_key = DataTypeContainsKeyRuleConfig.new(config)
4040
when :contains_type
41-
self.contains_type = DefinitionDataTypeContainsTypeRuleConfig.new(config)
41+
self.contains_type = DataTypeContainsTypeRuleConfig.new(config)
4242
when :item_of_collection
4343
self.item_of_collection = DataTypeItemOfCollectionRuleConfig.from_hash(config)
4444
when :number_range
4545
self.number_range = DataTypeNumberRangeRuleConfig.new(config)
4646
when :regex
4747
self.regex = DataTypeRegexRuleConfig.new(config)
4848
when :input_types
49-
self.input_types = DefinitionDataTypeInputTypesRuleConfig.new(config)
49+
self.input_types = DataTypeInputTypesRuleConfig.new(config)
5050
when :return_type
51-
self.return_type = DefinitionDataTypeReturnTypeRuleConfig.new(config)
51+
self.return_type = DataTypeReturnTypeRuleConfig.new(config)
5252
when :parent_type
53-
self.parent_type = DefinitionDataTypeParentTypeRuleConfig.from_hash(config)
53+
self.parent_type = DataTypeParentTypeRuleConfig.from_hash(config)
5454
else
5555
raise UnexpectedRuleType, "Unknown rule type #{variant}"
5656
end
@@ -63,7 +63,7 @@ def self.create(variant, config)
6363
end
6464
end
6565

66-
DefinitionDataTypeContainsKeyRuleConfig.class_eval do
66+
DataTypeContainsKeyRuleConfig.class_eval do
6767
def to_h
6868
{
6969
key: self.key,
@@ -79,7 +79,7 @@ def self.from_hash(config)
7979
end
8080
end
8181

82-
DefinitionDataTypeContainsTypeRuleConfig.class_eval do
82+
DataTypeContainsTypeRuleConfig.class_eval do
8383
def to_h
8484
{
8585
data_type_identifier: self.data_type_identifier.to_h,
@@ -121,7 +121,7 @@ def to_h
121121
end
122122
end
123123

124-
DefinitionDataTypeInputTypesRuleConfig.class_eval do
124+
DataTypeInputTypesRuleConfig.class_eval do
125125
def to_h
126126
{
127127
input_types: self.input_types.map { |input_type| input_type.to_h }
@@ -135,7 +135,7 @@ def self.from_hash(hash)
135135
end
136136
end
137137

138-
DefinitionDataTypeInputTypesRuleConfig::DataTypeInputType.class_eval do
138+
DataTypeInputTypesRuleConfig::DataTypeInputType.class_eval do
139139
def to_h
140140
{
141141
data_type_identifier: self.data_type_identifier,
@@ -151,7 +151,7 @@ def self.from_hash(config)
151151
end
152152
end
153153

154-
DefinitionDataTypeReturnTypeRuleConfig.class_eval do
154+
DataTypeReturnTypeRuleConfig.class_eval do
155155
def to_h
156156
{
157157
data_type_identifier: self.data_type_identifier,
@@ -163,7 +163,7 @@ def self.from_hash(config)
163163
end
164164
end
165165

166-
DefinitionDataTypeParentTypeRuleConfig.class_eval do
166+
DataTypeParentTypeRuleConfig.class_eval do
167167
def to_h
168168
{
169169
parent_type: self.parent_type,

build/ruby/spec/tucana/shared/shared.data_type_spec.rb

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -72,15 +72,15 @@
7272
it 'sets the contains_key field' do
7373
config = { key: 'test_key', data_type_identifier: { data_type_identifier: 'test_type' } }
7474
rule = described_class.create(:contains_key, config)
75-
expect(rule.contains_key).to be_a(Tucana::Shared::DefinitionDataTypeContainsKeyRuleConfig)
75+
expect(rule.contains_key).to be_a(Tucana::Shared::DataTypeContainsKeyRuleConfig)
7676
end
7777
end
7878

7979
context 'with :contains_type variant' do
8080
it 'sets the contains_type field' do
8181
config = { data_type_identifier: { data_type_identifier: 'test_type' } }
8282
rule = described_class.create(:contains_type, config)
83-
expect(rule.contains_type).to be_a(Tucana::Shared::DefinitionDataTypeContainsTypeRuleConfig)
83+
expect(rule.contains_type).to be_a(Tucana::Shared::DataTypeContainsTypeRuleConfig)
8484
end
8585
end
8686

@@ -113,23 +113,23 @@
113113
config = { input_types: [{ data_type_identifier: { data_type_identifier: 'test_type' },
114114
input_identifier: 'test_input' }] }
115115
rule = described_class.create(:input_types, config)
116-
expect(rule.input_types).to be_a(Tucana::Shared::DefinitionDataTypeInputTypesRuleConfig)
116+
expect(rule.input_types).to be_a(Tucana::Shared::DataTypeInputTypesRuleConfig)
117117
end
118118
end
119119

120120
context 'with :return_type variant' do
121121
it 'sets the return_type field' do
122122
config = { data_type_identifier: { data_type_identifier: 'test_type' } }
123123
rule = described_class.create(:return_type, config)
124-
expect(rule.return_type).to be_a(Tucana::Shared::DefinitionDataTypeReturnTypeRuleConfig)
124+
expect(rule.return_type).to be_a(Tucana::Shared::DataTypeReturnTypeRuleConfig)
125125
end
126126
end
127127

128128
context 'with :parent_type variant' do
129129
it 'sets the parent_type field' do
130130
config = { parent_type: { data_type_identifier: 'test_type' } }
131131
rule = described_class.create(:parent_type, config)
132-
expect(rule.parent_type).to be_a(Tucana::Shared::DefinitionDataTypeParentTypeRuleConfig)
132+
expect(rule.parent_type).to be_a(Tucana::Shared::DataTypeParentTypeRuleConfig)
133133
end
134134
end
135135

build/rust/src/shared/helper/rule.rs

Lines changed: 37 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use crate::shared::{
2+
DataTypeContainsKeyRuleConfig, DataTypeContainsTypeRuleConfig, DataTypeIdentifier,
23
DataTypeItemOfCollectionRuleConfig, DataTypeNumberRangeRuleConfig, DataTypeRegexRuleConfig,
3-
ExecutionDataTypeContainsKeyRuleConfig, ExecutionDataTypeContainsTypeRuleConfig,
4-
ExecutionDataTypeRule, Value, execution_data_type_rule::Config,
4+
ExecutionDataTypeRule, Value, data_type_identifier::Type, execution_data_type_rule::Config,
55
};
66

77
pub struct RuleBuilder {
@@ -15,23 +15,23 @@ impl RuleBuilder {
1515

1616
pub fn add_contains_key(mut self, key: String, data_type_identifier: &str) -> Self {
1717
self.rules.push(ExecutionDataTypeRule {
18-
config: Some(Config::ContainsKey(
19-
ExecutionDataTypeContainsKeyRuleConfig {
20-
key,
21-
data_type_identifier: data_type_identifier.to_string(),
22-
},
23-
)),
18+
config: Some(Config::ContainsKey(DataTypeContainsKeyRuleConfig {
19+
key,
20+
data_type_identifier: Some(DataTypeIdentifier {
21+
r#type: Some(Type::DataTypeIdentifier(data_type_identifier.to_string())),
22+
}),
23+
})),
2424
});
2525
self
2626
}
2727

2828
pub fn add_contains_type(mut self, data_type_identifier: &str) -> Self {
2929
self.rules.push(ExecutionDataTypeRule {
30-
config: Some(Config::ContainsType(
31-
ExecutionDataTypeContainsTypeRuleConfig {
32-
data_type_identifier: data_type_identifier.to_string(),
33-
},
34-
)),
30+
config: Some(Config::ContainsType(DataTypeContainsTypeRuleConfig {
31+
data_type_identifier: Some(DataTypeIdentifier {
32+
r#type: Some(Type::DataTypeIdentifier(data_type_identifier.to_string())),
33+
}),
34+
})),
3535
});
3636
self
3737
}
@@ -83,7 +83,12 @@ mod tests {
8383
match &rules[0].config {
8484
Some(Config::ContainsKey(cfg)) => {
8585
assert_eq!(cfg.key, "id");
86-
assert_eq!(cfg.data_type_identifier, String::from("User"));
86+
assert_eq!(
87+
cfg.data_type_identifier,
88+
Some(DataTypeIdentifier {
89+
r#type: Some(Type::DataTypeIdentifier(String::from("User"))),
90+
}),
91+
);
8792
}
8893
_ => panic!("Expected ContainsKey config"),
8994
}
@@ -95,7 +100,12 @@ mod tests {
95100

96101
match &rules[0].config {
97102
Some(Config::ContainsType(cfg)) => {
98-
assert_eq!(cfg.data_type_identifier, String::from("User"));
103+
assert_eq!(
104+
cfg.data_type_identifier,
105+
Some(DataTypeIdentifier {
106+
r#type: Some(Type::DataTypeIdentifier(String::from("User"))),
107+
}),
108+
);
99109
}
100110
_ => panic!("Expected ContainsType config"),
101111
}
@@ -153,7 +163,12 @@ mod tests {
153163
match &rules[0].config {
154164
Some(Config::ContainsKey(cfg)) => {
155165
assert_eq!(cfg.key, "id");
156-
assert_eq!(cfg.data_type_identifier, String::from("User"));
166+
assert_eq!(
167+
cfg.data_type_identifier,
168+
Some(DataTypeIdentifier {
169+
r#type: Some(Type::DataTypeIdentifier(String::from("User"))),
170+
})
171+
);
157172
}
158173
_ => panic!("Expected ContainsKey config"),
159174
}
@@ -168,7 +183,12 @@ mod tests {
168183
match &rules[2].config {
169184
Some(Config::ContainsKey(cfg)) => {
170185
assert_eq!(cfg.key, "id");
171-
assert_eq!(cfg.data_type_identifier, String::from("User"));
186+
assert_eq!(
187+
cfg.data_type_identifier,
188+
Some(DataTypeIdentifier {
189+
r#type: Some(Type::DataTypeIdentifier(String::from("User"))),
190+
})
191+
);
172192
}
173193
_ => panic!("Expected ContainsKey config"),
174194
}

proto/shared/shared.data_type.proto

Lines changed: 12 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -50,52 +50,43 @@ message ExecutionDataType {
5050

5151
message DefinitionDataTypeRule {
5252
oneof config {
53-
DefinitionDataTypeContainsKeyRuleConfig contains_key = 1;
54-
DefinitionDataTypeContainsTypeRuleConfig contains_type = 2;
53+
DataTypeContainsKeyRuleConfig contains_key = 1;
54+
DataTypeContainsTypeRuleConfig contains_type = 2;
5555
DataTypeItemOfCollectionRuleConfig item_of_collection = 3;
5656
DataTypeNumberRangeRuleConfig number_range = 4;
5757
DataTypeRegexRuleConfig regex = 5;
58-
DefinitionDataTypeInputTypesRuleConfig input_types = 6;
59-
DefinitionDataTypeReturnTypeRuleConfig return_type = 7;
60-
DefinitionDataTypeParentTypeRuleConfig parent_type = 8;
58+
DataTypeInputTypesRuleConfig input_types = 6;
59+
DataTypeReturnTypeRuleConfig return_type = 7;
60+
DataTypeParentTypeRuleConfig parent_type = 8;
6161
}
6262
}
6363

6464
message ExecutionDataTypeRule {
6565
oneof config {
66-
ExecutionDataTypeContainsKeyRuleConfig contains_key = 1;
67-
ExecutionDataTypeContainsTypeRuleConfig contains_type = 2;
66+
DataTypeContainsKeyRuleConfig contains_key = 1;
67+
DataTypeContainsTypeRuleConfig contains_type = 2;
6868
DataTypeItemOfCollectionRuleConfig item_of_collection = 3;
6969
DataTypeNumberRangeRuleConfig number_range = 4;
7070
DataTypeRegexRuleConfig regex = 5;
7171
}
7272
}
7373

7474
// Rule for defining the data type parent type
75-
message DefinitionDataTypeParentTypeRuleConfig {
75+
message DataTypeParentTypeRuleConfig {
7676
DataTypeIdentifier parent_type = 1;
7777
}
7878

7979
// Rule to check that the given key is contained in the given object
80-
message DefinitionDataTypeContainsKeyRuleConfig {
80+
message DataTypeContainsKeyRuleConfig {
8181
string key = 1;
8282
DataTypeIdentifier data_type_identifier = 2;
8383
}
8484

85-
message ExecutionDataTypeContainsKeyRuleConfig {
86-
string key = 1;
87-
string data_type_identifier = 2;
88-
}
89-
9085
// Rule to check that the given type is contained in the given array
91-
message DefinitionDataTypeContainsTypeRuleConfig {
86+
message DataTypeContainsTypeRuleConfig {
9287
DataTypeIdentifier data_type_identifier = 1;
9388
}
9489

95-
message ExecutionDataTypeContainsTypeRuleConfig {
96-
string data_type_identifier = 1;
97-
}
98-
9990
// Rule to check that the given item is contained inside the array of items
10091
message DataTypeItemOfCollectionRuleConfig {
10192
repeated shared.Value items = 1;
@@ -113,7 +104,7 @@ message DataTypeRegexRuleConfig {
113104
string pattern = 1;
114105
}
115106

116-
message DefinitionDataTypeInputTypesRuleConfig {
107+
message DataTypeInputTypesRuleConfig {
117108
message DataTypeInputType {
118109
DataTypeIdentifier data_type_identifier = 1;
119110
string input_identifier = 2;
@@ -122,7 +113,7 @@ message DefinitionDataTypeInputTypesRuleConfig {
122113
repeated DataTypeInputType input_types = 1;
123114
}
124115

125-
message DefinitionDataTypeReturnTypeRuleConfig {
116+
message DataTypeReturnTypeRuleConfig {
126117
DataTypeIdentifier data_type_identifier = 1;
127118
}
128119

proto/shared/shared.flow.proto

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ message ValidationFlow {
1616
// All custom data types used in this flow
1717
repeated shared.ExecutionDataType data_types = 4;
1818
// These reference data_types by its identifiers, which is are string
19-
optional string input_type_identifier = 5;
20-
optional string return_type_identifier = 6;
19+
optional shared.DataTypeIdentifier input_type = 5;
20+
optional shared.DataTypeIdentifier return_type = 6;
2121
repeated FlowSetting settings = 7;
2222
int64 starting_node_id = 8;
2323
repeated NodeFunction node_functions = 9;

0 commit comments

Comments
 (0)