mirror of
https://github.com/FlipsideCrypto/ethereum-models.git
synced 2026-02-06 19:16:44 +00:00
* decoded data * rename * - update udf to check if value is a list * - add try/except in udf_transform_logs * - add schema paraemter when calling macro for decoding logs * - fixed transform udf * - removed extraneous list for transformed events * - removed unused variables in transform_logs macro * - fixed dupe transformed events * - removed nesting of components * updates * remove array check * docs * docs Co-authored-by: Julius Remigio <14811322+juls858@users.noreply.github.com>
34 lines
942 B
PL/PgSQL
34 lines
942 B
PL/PgSQL
{% macro create_udf_transform_logs(schema) %}
|
|
create or replace function {{ schema }}.udf_transform_logs(decoded variant)
|
|
returns variant
|
|
language python
|
|
runtime_version = '3.8'
|
|
handler = 'transform' as $$
|
|
from copy import deepcopy
|
|
|
|
def transform_event(event: dict):
|
|
new_event = deepcopy(event)
|
|
if new_event.get("components"):
|
|
components = new_event.get("components")
|
|
for iy, y in enumerate(new_event["value"]):
|
|
for i, c in enumerate(components):
|
|
y[i] = {"value": y[i], **c}
|
|
new_event["value"][iy] = {z["name"]: z["value"] for z in y}
|
|
return new_event
|
|
else:
|
|
return event
|
|
|
|
|
|
def transform(events: list):
|
|
try:
|
|
results = [
|
|
transform_event(event) if event["decoded"] else event
|
|
for event in events["data"]
|
|
]
|
|
events["data"] = results
|
|
return events
|
|
except:
|
|
return events
|
|
$$;
|
|
|
|
{% endmacro %} |