refaktorálás javításai
This commit is contained in:
@@ -32,46 +32,20 @@ def include_object(object, name, type_, reflected, compare_to):
|
||||
"""
|
||||
🔥 MB 2.0 BIZTONSÁGI SZŰRŐ ÉS WHITELIST 🔥
|
||||
Ez a rész felel azért, hogy ne töröljünk véletlenül semmit.
|
||||
Engedjük át minden táblát, ami a 7 domain sémánkba tartozik (identity, finance, data, audit, system, vehicle, reference).
|
||||
Csak a PostGIS belső táblákat zárjuk ki.
|
||||
"""
|
||||
# 1. PostGIS és Alembic belső táblák védelme
|
||||
# 1. PostGIS belső táblák védelme (ne hozza létre/ne törölje az autogenerate)
|
||||
excluded_tables = [
|
||||
"spatial_ref_sys", "alembic_version",
|
||||
"geography_columns", "geometry_columns",
|
||||
"spatial_ref_sys",
|
||||
"geography_columns", "geometry_columns",
|
||||
"raster_columns", "raster_overviews"
|
||||
]
|
||||
if type_ == "table" and name in excluded_tables:
|
||||
return False
|
||||
|
||||
# 2. 🔥 BIZTONSÁGI FÉK (Safety Guard) 🔥
|
||||
# Ha bent van a DB-ben (reflected), de nincs a kódban (compare_to is None)
|
||||
# -> TILOS TÖRÖLNI! Megvédi a manuálisan létrehozott táblákat.
|
||||
if reflected and compare_to is None:
|
||||
return False
|
||||
|
||||
# 3. Engedélyezett sémák listája (Whitelist)
|
||||
allowed_schemas = ["identity", "data", "system", "public"]
|
||||
|
||||
# 4. Séma szintű engedélyezés (pl. séma létrehozásához)
|
||||
if type_ == "schema":
|
||||
return name in allowed_schemas
|
||||
|
||||
# 5. Objektum séma ellenőrzése
|
||||
obj_schema = getattr(object, "schema", None)
|
||||
if obj_schema is None and hasattr(object, "table"):
|
||||
obj_schema = getattr(object.table, "schema", None)
|
||||
|
||||
# Ha a séma benne van a whitelistben, engedélyezzük a módosítást
|
||||
if obj_schema:
|
||||
return obj_schema in allowed_schemas
|
||||
|
||||
# 6. Fallback a public sémára (pl. globális típusok, Enum-ok számára)
|
||||
# Csak akkor engedjük, ha explicit public, vagy ha nincs jelölve, de nem tiltott.
|
||||
if obj_schema is None or obj_schema == "public":
|
||||
return True
|
||||
|
||||
# 7. 🔥 SZIGORÚ ZÁRÁS 🔥
|
||||
# Minden mást (pl. idegen sémák) kizárunk a migrációból.
|
||||
return False
|
||||
# 2. Engedjük át minden más táblát (beleértve az alembic_version-t is, hogy az alembic kezelhesse)
|
||||
return True
|
||||
|
||||
def do_run_migrations(connection):
|
||||
""" Migrációk futtatása közös konfigurációval. """
|
||||
|
||||
Reference in New Issue
Block a user