Skip to content

Commit e749ce4

Browse files
Merge pull request #152 from code0-tech/#151-sync-definitions
sync definitions
2 parents c2e3a6e + 6be3824 commit e749ce4

4 files changed

Lines changed: 92 additions & 88 deletions

File tree

crates/core/src/context/context.rs

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ impl Context {
5858

5959
if let ContextResult::Success(value) = res {
6060
let mut curr = value;
61+
log::debug!("Tracing down value: {:?}", curr);
6162

6263
for path in reference.paths {
6364
if let Some(index) = path.array_index {
@@ -75,23 +76,20 @@ impl Context {
7576
}
7677
}
7778

78-
if let Some(path) = path.path {
79-
let splits = path.split(".");
80-
81-
for part in splits {
82-
match curr.kind {
83-
Some(ref kind) => {
84-
if let Kind::StructValue(struct_value) = &kind {
85-
match struct_value.fields.get(part) {
86-
Some(x) => {
87-
curr = x.clone();
88-
}
89-
None => return ContextResult::NotFound,
79+
if let Some(field_name) = path.path {
80+
match curr.kind {
81+
Some(ref kind) => {
82+
if let Kind::StructValue(struct_value) = &kind {
83+
match struct_value.fields.get(&field_name) {
84+
Some(x) => {
85+
log::debug!("Updating trace value to: {:?}", x);
86+
curr = x.clone();
9087
}
88+
None => return ContextResult::NotFound,
9189
}
9290
}
93-
None => return ContextResult::NotFound,
9491
}
92+
None => return ContextResult::NotFound,
9593
}
9694
}
9795
}

crates/core/src/runtime/functions/http.rs

Lines changed: 13 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use crate::context::macros::args;
44
use crate::context::registry::{HandlerFn, HandlerFunctionEntry, IntoFunctionEntry};
55
use crate::context::signal::Signal;
66
use crate::runtime::error::RuntimeError;
7-
use crate::value::value_from_i64;
7+
use tucana::shared::helper::value::ToValue;
88
use tucana::shared::value::Kind;
99
use tucana::shared::{Struct, Value};
1010

@@ -34,7 +34,7 @@ fn respond(
3434
));
3535
};
3636

37-
let Some(status_code_val) = fields.get("status_code") else {
37+
let Some(status_code_val) = fields.get("http_status_code") else {
3838
return Signal::Failure(RuntimeError::simple(
3939
"InvalidArgumentRuntimeError",
4040
"Missing 'status_code' field".to_string(),
@@ -82,27 +82,15 @@ fn create_request(
8282
args!(args => http_method: String, headers: Struct, http_url: String, payload: Value);
8383
let mut fields = std::collections::HashMap::new();
8484

85+
fields.insert(String::from("http_method"), http_method.to_value());
86+
fields.insert(String::from("url"), http_url.to_value());
87+
fields.insert(String::from("payload"), payload.clone());
8588
fields.insert(
86-
"method".to_string(),
87-
Value {
88-
kind: Some(Kind::StringValue(http_method.clone())),
89-
},
90-
);
91-
92-
fields.insert(
93-
"url".to_string(),
94-
Value {
95-
kind: Some(Kind::StringValue(http_url.clone())),
96-
},
97-
);
98-
99-
fields.insert(
100-
"headers".to_string(),
89+
String::from("headers"),
10190
Value {
10291
kind: Some(Kind::StructValue(headers.clone())),
10392
},
10493
);
105-
fields.insert("body".to_string(), payload.clone());
10694

10795
Signal::Success(Value {
10896
kind: Some(Kind::StructValue(Struct { fields })),
@@ -116,15 +104,19 @@ fn create_response(
116104
) -> Signal {
117105
args!(args => http_status_code: i64, headers: Struct, payload: Value);
118106
let mut fields = std::collections::HashMap::new();
119-
fields.insert("status_code".to_string(), value_from_i64(http_status_code));
120107

121108
fields.insert(
122-
"headers".to_string(),
109+
String::from("http_status_code"),
110+
http_status_code.to_value(),
111+
);
112+
fields.insert(String::from("payload"), payload.clone());
113+
114+
fields.insert(
115+
String::from("headers"),
123116
Value {
124117
kind: Some(Kind::StructValue(headers.clone())),
125118
},
126119
);
127-
fields.insert("payload".to_string(), payload.clone());
128120

129121
Signal::Success(Value {
130122
kind: Some(Kind::StructValue(Struct { fields })),

crates/core/src/runtime/functions/number.rs

Lines changed: 61 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -80,12 +80,10 @@ fn has_digits(
8080
number_value::Number::Integer(_) => Signal::Success(false.to_value()),
8181
number_value::Number::Float(_) => Signal::Success(true.to_value()),
8282
},
83-
None => {
84-
Signal::Failure(RuntimeError::simple_str(
85-
"InvlaidArgumentExeption",
86-
"Had NumberValue but no inner number value (was null)",
87-
))
88-
}
83+
None => Signal::Failure(RuntimeError::simple_str(
84+
"InvlaidArgumentExeption",
85+
"Had NumberValue but no inner number value (was null)",
86+
)),
8987
}
9088
}
9189

@@ -97,12 +95,10 @@ fn remove_digits(
9795
args!(args => value: NumberValue);
9896
match number_to_i64_lossy(&value) {
9997
Some(number) => Signal::Success(value_from_i64(number)),
100-
None => {
101-
Signal::Failure(RuntimeError::simple_str(
102-
"InvlaidArgumentExeption",
103-
"Had NumberValue but no inner number value (was null)",
104-
))
105-
}
98+
None => Signal::Failure(RuntimeError::simple_str(
99+
"InvlaidArgumentExeption",
100+
"Had NumberValue but no inner number value (was null)",
101+
)),
106102
}
107103
}
108104

@@ -112,10 +108,11 @@ fn add(
112108
_run: &mut dyn FnMut(i64, &mut Context) -> Signal,
113109
) -> Signal {
114110
args!(args => lhs: NumberValue, rhs: NumberValue);
115-
if let (Some(number_value::Number::Integer(a)), Some(number_value::Number::Integer(b))) = (lhs.number, rhs.number) {
116-
if let Some(sum) = a.checked_add(b) {
117-
return Signal::Success(value_from_i64(sum));
118-
}
111+
if let (Some(number_value::Number::Integer(a)), Some(number_value::Number::Integer(b))) =
112+
(lhs.number, rhs.number)
113+
&& let Some(sum) = a.checked_add(b)
114+
{
115+
return Signal::Success(value_from_i64(sum));
119116
}
120117
let lhs = match num_f64(&lhs) {
121118
Ok(v) => v,
@@ -134,10 +131,11 @@ fn multiply(
134131
_run: &mut dyn FnMut(i64, &mut Context) -> Signal,
135132
) -> Signal {
136133
args!(args => lhs: NumberValue, rhs: NumberValue);
137-
if let (Some(number_value::Number::Integer(a)), Some(number_value::Number::Integer(b))) = (lhs.number, rhs.number) {
138-
if let Some(prod) = a.checked_mul(b) {
139-
return Signal::Success(value_from_i64(prod));
140-
}
134+
if let (Some(number_value::Number::Integer(a)), Some(number_value::Number::Integer(b))) =
135+
(lhs.number, rhs.number)
136+
&& let Some(prod) = a.checked_mul(b)
137+
{
138+
return Signal::Success(value_from_i64(prod));
141139
}
142140
let lhs = match num_f64(&lhs) {
143141
Ok(v) => v,
@@ -156,10 +154,11 @@ fn substract(
156154
_run: &mut dyn FnMut(i64, &mut Context) -> Signal,
157155
) -> Signal {
158156
args!(args => lhs: NumberValue, rhs: NumberValue);
159-
if let (Some(number_value::Number::Integer(a)), Some(number_value::Number::Integer(b))) = (lhs.number, rhs.number) {
160-
if let Some(diff) = a.checked_sub(b) {
161-
return Signal::Success(value_from_i64(diff));
162-
}
157+
if let (Some(number_value::Number::Integer(a)), Some(number_value::Number::Integer(b))) =
158+
(lhs.number, rhs.number)
159+
&& let Some(diff) = a.checked_sub(b)
160+
{
161+
return Signal::Success(value_from_i64(diff));
163162
}
164163
let lhs = match num_f64(&lhs) {
165164
Ok(v) => v,
@@ -191,10 +190,12 @@ fn divide(
191190
));
192191
}
193192

194-
if let (Some(number_value::Number::Integer(a)), Some(number_value::Number::Integer(b))) = (lhs.number, rhs.number) {
195-
if b != 0 && a % b == 0 {
196-
return Signal::Success(value_from_i64(a / b));
197-
}
193+
if let (Some(number_value::Number::Integer(a)), Some(number_value::Number::Integer(b))) =
194+
(lhs.number, rhs.number)
195+
&& b != 0
196+
&& a % b == 0
197+
{
198+
return Signal::Success(value_from_i64(a / b));
198199
}
199200

200201
let lhs_f = match num_f64(&lhs) {
@@ -223,10 +224,11 @@ fn modulo(
223224
));
224225
}
225226

226-
if let (Some(number_value::Number::Integer(a)), Some(number_value::Number::Integer(b))) = (lhs.number, rhs.number) {
227-
if b != 0 {
228-
return Signal::Success(value_from_i64(a % b));
229-
}
227+
if let (Some(number_value::Number::Integer(a)), Some(number_value::Number::Integer(b))) =
228+
(lhs.number, rhs.number)
229+
&& b != 0
230+
{
231+
return Signal::Success(value_from_i64(a % b));
230232
}
231233

232234
let lhs_f = match num_f64(&lhs) {
@@ -242,10 +244,10 @@ fn abs(
242244
_run: &mut dyn FnMut(i64, &mut Context) -> Signal,
243245
) -> Signal {
244246
args!(args => value: NumberValue);
245-
if let Some(number_value::Number::Integer(i)) = value.number {
246-
if let Some(abs) = i.checked_abs() {
247-
return Signal::Success(value_from_i64(abs));
248-
}
247+
if let Some(number_value::Number::Integer(i)) = value.number
248+
&& let Some(abs) = i.checked_abs()
249+
{
250+
return Signal::Success(value_from_i64(abs));
249251
}
250252
let value = match num_f64(&value) {
251253
Ok(v) => v,
@@ -328,10 +330,10 @@ fn square(
328330
_run: &mut dyn FnMut(i64, &mut Context) -> Signal,
329331
) -> Signal {
330332
args!(args => value: NumberValue);
331-
if let Some(number_value::Number::Integer(i)) = value.number {
332-
if let Some(prod) = i.checked_mul(i) {
333-
return Signal::Success(value_from_i64(prod));
334-
}
333+
if let Some(number_value::Number::Integer(i)) = value.number
334+
&& let Some(prod) = i.checked_mul(i)
335+
{
336+
return Signal::Success(value_from_i64(prod));
335337
}
336338
let value = match num_f64(&value) {
337339
Ok(v) => v,
@@ -351,9 +353,10 @@ fn exponential(
351353
if e >= 0 =>
352354
{
353355
if let Ok(exp) = u32::try_from(e)
354-
&& let Some(pow) = b.checked_pow(exp) {
355-
return Signal::Success(value_from_i64(pow));
356-
}
356+
&& let Some(pow) = b.checked_pow(exp)
357+
{
358+
return Signal::Success(value_from_i64(pow));
359+
}
357360
}
358361
_ => {}
359362
}
@@ -567,7 +570,9 @@ fn min(
567570
_run: &mut dyn FnMut(i64, &mut Context) -> Signal,
568571
) -> Signal {
569572
args!(args => lhs: NumberValue, rhs: NumberValue);
570-
if let (Some(number_value::Number::Integer(a)), Some(number_value::Number::Integer(b))) = (lhs.number, rhs.number) {
573+
if let (Some(number_value::Number::Integer(a)), Some(number_value::Number::Integer(b))) =
574+
(lhs.number, rhs.number)
575+
{
571576
return Signal::Success(value_from_i64(a.min(b)));
572577
}
573578
let lhs = match num_f64(&lhs) {
@@ -587,7 +592,9 @@ fn max(
587592
_run: &mut dyn FnMut(i64, &mut Context) -> Signal,
588593
) -> Signal {
589594
args!(args => lhs: NumberValue, rhs: NumberValue);
590-
if let (Some(number_value::Number::Integer(a)), Some(number_value::Number::Integer(b))) = (lhs.number, rhs.number) {
595+
if let (Some(number_value::Number::Integer(a)), Some(number_value::Number::Integer(b))) =
596+
(lhs.number, rhs.number)
597+
{
591598
return Signal::Success(value_from_i64(a.max(b)));
592599
}
593600
let lhs = match num_f64(&lhs) {
@@ -607,10 +614,10 @@ fn negate(
607614
_run: &mut dyn FnMut(i64, &mut Context) -> Signal,
608615
) -> Signal {
609616
args!(args => value: NumberValue);
610-
if let Some(number_value::Number::Integer(i)) = value.number {
611-
if let Some(neg) = i.checked_neg() {
612-
return Signal::Success(value_from_i64(neg));
613-
}
617+
if let Some(number_value::Number::Integer(i)) = value.number
618+
&& let Some(neg) = i.checked_neg()
619+
{
620+
return Signal::Success(value_from_i64(neg));
614621
}
615622
let value = match num_f64(&value) {
616623
Ok(v) => v,
@@ -758,10 +765,11 @@ fn clamp(
758765
) -> Signal {
759766
args!(args => value: NumberValue, min: NumberValue, max: NumberValue);
760767
if let (
761-
Some(number_value::Number::Integer(v)),
762-
Some(number_value::Number::Integer(min)),
763-
Some(number_value::Number::Integer(max)),
764-
) = (value.number, min.number, max.number) {
768+
Some(number_value::Number::Integer(v)),
769+
Some(number_value::Number::Integer(min)),
770+
Some(number_value::Number::Integer(max)),
771+
) = (value.number, min.number, max.number)
772+
{
765773
return Signal::Success(value_from_i64(v.clamp(min, max)));
766774
}
767775
let value = match num_f64(&value) {

crates/taurus/src/main.rs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,13 @@ fn handle_message(
3232
nats_remote: &RemoteNatsClient,
3333
) -> (Signal, RuntimeUsage) {
3434
let start = Instant::now();
35-
let mut context = Context::default();
35+
let mut context = match flow.input_value {
36+
Some(v) => {
37+
log::debug!("Input Value for flow: {:?}", v);
38+
Context::new(v)
39+
}
40+
None => Context::default(),
41+
};
3642

3743
let node_functions: HashMap<i64, NodeFunction> = flow
3844
.node_functions

0 commit comments

Comments
 (0)