Stage 1: standardize delivery field names
This commit is contained in:
@@ -27,6 +27,16 @@ class FieldValueRule:
|
||||
return True
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class FieldNameRule:
|
||||
field_name_jp: str
|
||||
field_name_std: str
|
||||
field_group_name: str
|
||||
keep_in_delivery: bool
|
||||
keep_in_engineering: bool
|
||||
normalization_class: str
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class RenderRule:
|
||||
rule_id: str
|
||||
@@ -86,12 +96,14 @@ class NavSeaMappingRegistry:
|
||||
bundle_id: str,
|
||||
bundle_version: str,
|
||||
source_layer_rules: dict[str, dict[str, str]],
|
||||
field_name_rules: dict[str, FieldNameRule],
|
||||
field_value_rules: dict[tuple[str, str], list[FieldValueRule]],
|
||||
render_rules: list[RenderRule],
|
||||
) -> None:
|
||||
self.bundle_id = bundle_id
|
||||
self.bundle_version = bundle_version
|
||||
self.source_layer_rules = source_layer_rules
|
||||
self.field_name_rules = field_name_rules
|
||||
self.field_value_rules = field_value_rules
|
||||
self.render_rules = render_rules
|
||||
|
||||
@@ -145,6 +157,32 @@ class NavSeaMappingRegistry:
|
||||
for row in cur.fetchall()
|
||||
}
|
||||
|
||||
cur.execute(
|
||||
"""
|
||||
SELECT
|
||||
field_name_jp,
|
||||
field_name_std,
|
||||
field_group_name,
|
||||
keep_in_delivery,
|
||||
keep_in_engineering,
|
||||
normalization_class
|
||||
FROM navsea_field_name_rules
|
||||
WHERE bundle_id = %s AND bundle_version = %s
|
||||
""",
|
||||
(resolved_bundle_id, resolved_bundle_version),
|
||||
)
|
||||
field_name_rules = {
|
||||
str(row["field_name_jp"]): FieldNameRule(
|
||||
field_name_jp=str(row["field_name_jp"]),
|
||||
field_name_std=str(row["field_name_std"]),
|
||||
field_group_name=str(row["field_group_name"]),
|
||||
keep_in_delivery=bool(row["keep_in_delivery"]),
|
||||
keep_in_engineering=bool(row["keep_in_engineering"]),
|
||||
normalization_class=str(row["normalization_class"]),
|
||||
)
|
||||
for row in cur.fetchall()
|
||||
}
|
||||
|
||||
cur.execute(
|
||||
"""
|
||||
SELECT
|
||||
@@ -200,6 +238,7 @@ class NavSeaMappingRegistry:
|
||||
bundle_id=resolved_bundle_id,
|
||||
bundle_version=resolved_bundle_version,
|
||||
source_layer_rules=source_layer_rules,
|
||||
field_name_rules=field_name_rules,
|
||||
field_value_rules=field_value_rules,
|
||||
render_rules=render_rules,
|
||||
)
|
||||
@@ -210,6 +249,9 @@ class NavSeaMappingRegistry:
|
||||
return source_layer_jp, f"SLR:{source_layer_jp}:identity"
|
||||
return rule["source_layer_std"], rule["source_layer_rule_id"]
|
||||
|
||||
def get_field_name_rule(self, field_name: str) -> FieldNameRule | None:
|
||||
return self.field_name_rules.get(field_name)
|
||||
|
||||
def standardize_field_value(
|
||||
self,
|
||||
field_name_jp: str,
|
||||
|
||||
Reference in New Issue
Block a user