Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 12 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -216,24 +216,24 @@ create_ahb_diff_view(session)
```

Die View erwartet 4 Filter-Parameter beim Abfragen und liefert einen `diff_status`:
- `added`: Zeile existiert in Version A, aber nicht in Version B
- `deleted`: Zeile existiert in Version B, aber nicht in Version A
- `modified`: Zeile existiert in beiden Versionen, aber mit unterschiedlichen Werten
- `added`: Zeile existiert in der neuen Version, aber nicht in der alten
- `deleted`: Zeile existiert in der alten Version, aber nicht in der neuen
- `modified`: Zeile existiert in beiden Versionen, aber mit unterschiedlichen Werten (bei `modified` enthält `changed_columns` die Liste der geänderten Spalten)
- `unchanged`: Zeile ist in beiden Versionen identisch

Alle Wert-Spalten existieren doppelt (`_a` und `_b`), um die Werte aus beiden Versionen nebeneinander anzuzeigen.
Alle Wert-Spalten existieren doppelt (`old_*` und `new_*`), um die Werte aus beiden Versionen nebeneinander anzuzeigen.

```sql
-- Alle Änderungen zwischen zwei Versionen anzeigen
SELECT path, diff_status,
segment_ahb_status_a, segment_ahb_status_b,
dataelement_ahb_status_a, dataelement_ahb_status_b,
code_value_a, code_value_b
SELECT path, diff_status, changed_columns,
old_line_ahb_status, new_line_ahb_status,
old_bedingung, new_bedingung,
old_line_name, new_line_name
FROM v_ahb_diff
WHERE format_version_a = 'FV2504'
AND format_version_b = 'FV2410'
AND pruefidentifikator_a = '55014'
AND pruefidentifikator_b = '55014'
WHERE old_format_version = 'FV2410'
AND new_format_version = 'FV2504'
AND old_pruefidentifikator = '55014'
AND new_pruefidentifikator = '55014'
AND diff_status != 'unchanged'
ORDER BY sort_path;
```
Expand Down
4 changes: 4 additions & 0 deletions src/fundamend/sqlmodels/ahb_diff_view.py
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,10 @@ class AhbDiffLine(SQLModel, table=True):
# Diff status: 'added', 'deleted', 'modified', 'unchanged'
diff_status: str = Field()

# Which columns changed (for modified rows only, NULL otherwise)
# Comma-separated list, e.g. 'line_ahb_status, bedingung'
changed_columns: Optional[str] = Field(default=None)

# Old version columns (from v_ahbtabellen)
old_segmentgroup_key: Optional[str] = Field(default=None)
old_segment_code: Optional[str] = Field(default=None)
Expand Down
17 changes: 17 additions & 0 deletions src/fundamend/sqlmodels/create_ahb_diff_view.sql
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,21 @@ SELECT
THEN 'modified'
ELSE 'unchanged'
END AS diff_status,
CASE
WHEN COALESCE(old_tbl.line_ahb_status, '') != COALESCE(new_tbl.line_ahb_status, '')
OR COALESCE(old_tbl.bedingung, '') != COALESCE(new_tbl.bedingung, '')
OR COALESCE(old_tbl.line_name, '') != COALESCE(new_tbl.line_name, '')
THEN
TRIM(
CASE WHEN COALESCE(old_tbl.line_ahb_status, '') != COALESCE(new_tbl.line_ahb_status, '')
THEN 'line_ahb_status, ' ELSE '' END ||
CASE WHEN COALESCE(old_tbl.bedingung, '') != COALESCE(new_tbl.bedingung, '')
THEN 'bedingung, ' ELSE '' END ||
CASE WHEN COALESCE(old_tbl.line_name, '') != COALESCE(new_tbl.line_name, '')
THEN 'line_name' ELSE '' END
, ', ')
ELSE NULL
END AS changed_columns,
new_tbl.id_path AS id_path,
new_tbl.sort_path AS sort_path,
new_tbl.path AS path,
Expand Down Expand Up @@ -82,6 +97,7 @@ UNION ALL
-- Added rows (exist in new but not in old for the specific version pair)
SELECT
'added' AS diff_status,
NULL AS changed_columns,
new_tbl.id_path,
new_tbl.sort_path,
new_tbl.path,
Expand Down Expand Up @@ -124,6 +140,7 @@ UNION ALL
-- Deleted rows (exist in old but not in new for the specific version pair)
SELECT
'deleted' AS diff_status,
NULL AS changed_columns,
old_tbl.id_path,
old_tbl.sort_path,
old_tbl.path,
Expand Down
Loading