Transformers¶
Transformers verwerken data tussen schema's binnen dezelfde database. Ze worden geregistreerd via @TransformerRegistry.register().
Klasse-hiërarchie¶
classDiagram
class Transformer {
<<abstract>>
+transform(args, database)*
+transformLogic(args, root_package, schema_from, schema_to)*
}
class CopyTransformer {
Deep copy van package-hiërarchieën
+materialize_generalizations optie
}
class PluginTransformer {
Dynamisch laden van plugins
+plugin_file_name
+plugin_class_name
}
class Plugin {
<<abstract>>
+transform(args, schema_from, schema_to)*
}
Transformer <|-- CopyTransformer
Transformer <|-- PluginTransformer
PluginTransformer --> Plugin : laadt dynamisch
CopyTransformer¶
- Registratie:
@TransformerRegistry.register("copy") - Bestand:
transformers/copytransformer.py - Functie: Deep copy van een volledige package-hiërarchie van schema A naar schema B
- Opties:
--materialize_generalizations— Kopieert attributen van superklassen naar subklassen (vlakt inheritance-hiërarchie af)--root_package— Startpunt van de kopie
graph LR
A["Schema A<br/>(bron)"] --> B["get_copy()"]
B --> C{"Materialisatie?"}
C -->|ja| D["Kopieer parent attrs<br/>naar children"]
C -->|nee| E["Directe kopie"]
D --> F["Schema B<br/>(doel)"]
E --> F
PluginTransformer¶
- Registratie:
@TransformerRegistry.register("plugin") - Bestand:
transformers/plugintransformer.py - Functie: Laadt dynamisch een custom plugin-klasse
- Argumenten:
--plugin_file_name,--plugin_class_name
Plugin base class¶
class Plugin(ABC):
@abstractmethod
def transform(self, args, schema_from, schema_to):
"""Implementeer custom transformatielogica."""
pass
CLI-argumenten (Transform)¶
| Argument | Beschrijving |
|---|---|
-sch_from |
Bronschema (default: huidige schema) |
-sch_to |
Doelschema |
-ttp / --transformationtype |
Type transformer (copy, plugin) |
-rt_pkg / --root_package |
Root package ID voor startpunt |
-m_gen / --materialize_generalizations |
Vlak inheritance af |
--plugin_file_name |
Pad naar plugin-bestand |
--plugin_class_name |
Klassenaam van de plugin |
Beoogde uitbreidingen¶
Universele Mapping Layer
Metadata-driven, database-agnostic mapping tussenlaag. Standaardiseert de vertaling naar fysieke databasemodellen.
Schema Diff & Merge Engine
Automatische vergelijking en samenvoeging van twee schema-versies.
Generalization Materializer v2
Ondersteuning voor complexe inheritance-strategieën (multi-level, diamond inheritance).