@@ -514,14 +514,7 @@ def _workflow_event_to_nexus_link(
514514 workflow_id = urllib .parse .quote (workflow_event .workflow_id )
515515 run_id = urllib .parse .quote (workflow_event .run_id )
516516 path = f"/namespaces/{ namespace } /workflows/{ workflow_id } /{ run_id } /history"
517- query_params = urllib .parse .urlencode (
518- {
519- "eventType" : temporalio .api .enums .v1 .EventType .Name (
520- workflow_event .event_ref .event_type
521- ),
522- "referenceType" : "EventReference" ,
523- }
524- )
517+ query_params = _query_params_from_event_reference (workflow_event .event_ref )
525518 return nexusrpc .Link (
526519 url = urllib .parse .urlunparse ((scheme , "" , path , "" , query_params , "" )),
527520 type = workflow_event .DESCRIPTOR .full_name ,
@@ -555,6 +548,19 @@ def _nexus_link_to_workflow_event(
555548 )
556549
557550
551+ def _query_params_from_event_reference (
552+ event_ref : temporalio .api .common .v1 .Link .WorkflowEvent .EventReference ,
553+ ) -> str :
554+ event_type_name = temporalio .api .enums .v1 .EventType .Name (event_ref .event_type )
555+ if event_type_name .startswith ("EVENT_TYPE_" ):
556+ event_type_name = _constant_case_to_pascal_case (
557+ event_type_name .removeprefix ("EVENT_TYPE_" )
558+ )
559+ return urllib .parse .urlencode (
560+ {"eventType" : event_type_name , "referenceType" : "EventReference" }
561+ )
562+
563+
558564def _event_reference_from_query_params (
559565 raw_query_params : str ,
560566) -> temporalio .api .common .v1 .Link .WorkflowEvent .EventReference :
@@ -596,6 +602,13 @@ def _event_reference_from_query_params(
596602 )
597603
598604
605+ def _constant_case_to_pascal_case (s : str ) -> str :
606+ """
607+ Convert a CONSTANT_CASE string to PascalCase.
608+ """
609+ return re .sub (r"(\b|_)([a-z])" , lambda m : m .groups ()[1 ].upper (), s .lower ())
610+
611+
599612def _pascal_case_to_constant_case (s : str ) -> str :
600613 """
601614 Convert a PascalCase string to CONSTANT_CASE.
0 commit comments