Skip to content

Commit 41b9020

Browse files
fix: add message templating to error messages on orph+group rej (#161)
1 parent 49290bb commit 41b9020

3 files changed

Lines changed: 21 additions & 5 deletions

File tree

‎src/dve/core_engine/backends/base/rules.py‎

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@
5151
from dve.core_engine.exceptions import CriticalProcessingError
5252
from dve.core_engine.loggers import get_logger
5353
from dve.core_engine.message import FeedbackMessage
54+
from dve.core_engine.templating import template_object
5455
from dve.core_engine.type_hints import URI, DVEStageName, EntityName, Messages, TemplateVariables
5556

5657
T_contra = TypeVar("T_contra", bound=AbstractStep, contravariant=True)
@@ -446,7 +447,10 @@ def process_node(node: HierarchyNode):
446447
entity=node.entity_name,
447448
record=record, # type: ignore
448449
error_location=location,
449-
error_message=node.missing_parent_id_error_message,
450+
error_message=template_object(
451+
node.missing_parent_id_error_message,
452+
record
453+
),
450454
failure_type="record",
451455
error_type="record",
452456
error_code=node.missing_parent_id_error_code,
@@ -518,7 +522,10 @@ def process_node(node: HierarchyNode) -> bool:
518522
entity=node.parent_entity,
519523
record=record, # type: ignore
520524
error_location=location,
521-
error_message=node.no_valid_records_error_message,
525+
error_message=template_object(
526+
node.no_valid_records_error_message,
527+
record
528+
),
522529
failure_type="record",
523530
error_type="record",
524531
error_code=node.no_valid_records_error_code,

‎src/dve/core_engine/backends/implementations/duckdb/rules.py‎

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -439,6 +439,15 @@ def remove_orphans(self, entities: DuckDBEntities, *, config: OrphanRemoval) ->
439439
.filter(f"entity_name = '{config.entity_name}'")
440440
.set_alias("orphan")
441441
)
442+
message_rel = (
443+
entities[config.entity_name]
444+
.set_alias(config.entity_name)
445+
.join(
446+
orphan_rel,
447+
f"{config.entity_name}.{RECORD_INDEX_COLUMN_NAME} = orphan.{RECORD_INDEX_COLUMN_NAME}", # pylint: disable=C0301
448+
"semi",
449+
)
450+
)
442451
filtered_rel = (
443452
entities[config.entity_name]
444453
.set_alias(config.entity_name)
@@ -451,7 +460,7 @@ def remove_orphans(self, entities: DuckDBEntities, *, config: OrphanRemoval) ->
451460

452461
entities[config.entity_name] = filtered_rel
453462

454-
return duckdb_rel_to_dictionaries(orphan_rel)
463+
return duckdb_rel_to_dictionaries(message_rel)
455464

456465
def check_mandatory_group(
457466
self, entities: DuckDBEntities, *, config: GroupIdentification

‎tests/testdata/flights/flights.dischema.json‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -176,9 +176,9 @@
176176
},
177177
"mandatory": true,
178178
"missing_parent_id_error_code": "StaffHasNoAirport",
179-
"missing_parent_id_error_message": "Record rejected - No valid airport id found for staff",
179+
"missing_parent_id_error_message": "Record rejected - No valid airport id found for staff. Airport ID = {{ airport_id }}, Staff ID = {{ staff_id }}",
180180
"no_valid_records_error_code": "AirportHasNoStaff",
181-
"no_valid_records_error_message": "Group rejected - Airport has no valid staff"
181+
"no_valid_records_error_message": "Group rejected - Airport has no valid staff. Airport ID = {{ airport_id }}"
182182
},
183183
"flights": {
184184
"parent_entity": "airport",

0 commit comments

Comments
 (0)