feat: Add entrypoint utils and define EntryPointParams (#211)
* feat: Add entrypoint utils and define EntryPointParams #time 23m #time 0m * fix: Make TraceData mandatory #time 2m * fix: Make component_id in EntryPointParams optional #time 1m
This commit is contained in:
52
substreams/crates/tycho-substreams/src/entrypoint.rs
Normal file
52
substreams/crates/tycho-substreams/src/entrypoint.rs
Normal file
@@ -0,0 +1,52 @@
|
||||
use crate::models::{entry_point_params::TraceData, EntryPoint, EntryPointParams};
|
||||
|
||||
fn get_entrypoint_id(target: &[u8], signature: &str) -> String {
|
||||
let target = hex::encode(target);
|
||||
format!("{target}:{signature}")
|
||||
}
|
||||
|
||||
/// Creates an entrypoint and its parameters.
|
||||
pub fn create_entrypoint(
|
||||
target: Vec<u8>,
|
||||
signature: String,
|
||||
component_id: String,
|
||||
trace_data: TraceData,
|
||||
) -> (EntryPoint, EntryPointParams) {
|
||||
let entrypoint_id = get_entrypoint_id(&target, &signature);
|
||||
let entrypoint = EntryPoint {
|
||||
id: entrypoint_id.clone(),
|
||||
target,
|
||||
signature,
|
||||
component_id: component_id.clone(),
|
||||
};
|
||||
let entrypoint_params = EntryPointParams {
|
||||
entrypoint_id,
|
||||
component_id: Some(component_id),
|
||||
trace_data: Some(trace_data),
|
||||
};
|
||||
(entrypoint, entrypoint_params)
|
||||
}
|
||||
|
||||
// Adds EntryPointParams associated with an already existing Entrypoint.
|
||||
pub fn add_entrypoint_params(
|
||||
target: Vec<u8>,
|
||||
signature: String,
|
||||
trace_data: TraceData,
|
||||
component_id: Option<String>,
|
||||
) -> EntryPointParams {
|
||||
EntryPointParams {
|
||||
entrypoint_id: get_entrypoint_id(&target, &signature),
|
||||
component_id,
|
||||
trace_data: Some(trace_data),
|
||||
}
|
||||
}
|
||||
|
||||
// Adds a component to an existing Entrypoint.
|
||||
pub fn add_component_to_entrypoint(
|
||||
target: Vec<u8>,
|
||||
signature: String,
|
||||
component_id: String,
|
||||
) -> EntryPoint {
|
||||
let entrypoint_id = get_entrypoint_id(&target, &signature);
|
||||
EntryPoint { id: entrypoint_id, target, signature, component_id }
|
||||
}
|
||||
Reference in New Issue
Block a user