116 lines
4.7 KiB
Python
116 lines
4.7 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Ellenőrzi, hogy a #179-es issue séma változtatásai sikeresen alkalmazva lettek-e.
|
|
- branch_id és relocation_performed oszlopok az assets táblában
|
|
- verified_purchase_date oszlop az asset_financials táblában
|
|
"""
|
|
|
|
import asyncio
|
|
import sys
|
|
from sqlalchemy import text
|
|
from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession
|
|
from sqlalchemy.orm import sessionmaker
|
|
|
|
DATABASE_URL = "postgresql+asyncpg://postgres:postgres@postgres:5432/service_finder"
|
|
|
|
async def check_columns():
|
|
"""Ellenőrzi a hiányzó oszlopokat."""
|
|
engine = create_async_engine(DATABASE_URL, echo=False)
|
|
async_session = sessionmaker(engine, class_=AsyncSession, expire_on_commit=False)
|
|
|
|
async with async_session() as session:
|
|
# 1. assets tábla oszlopai
|
|
result = await session.execute(text("""
|
|
SELECT column_name, data_type, is_nullable
|
|
FROM information_schema.columns
|
|
WHERE table_schema = 'vehicle' AND table_name = 'assets'
|
|
AND column_name IN ('branch_id', 'relocation_performed')
|
|
ORDER BY column_name;
|
|
"""))
|
|
assets_cols = {row[0]: row for row in result.fetchall()}
|
|
|
|
# 2. asset_financials tábla oszlopai
|
|
result = await session.execute(text("""
|
|
SELECT column_name, data_type, is_nullable
|
|
FROM information_schema.columns
|
|
WHERE table_schema = 'vehicle' AND table_name = 'asset_financials'
|
|
AND column_name = 'verified_purchase_date';
|
|
"""))
|
|
financials_cols = {row[0]: row for row in result.fetchall()}
|
|
|
|
print("=== #179 SCHEMA ELLENŐRZÉS ===")
|
|
print("1. vehicle.assets tábla:")
|
|
if 'branch_id' in assets_cols:
|
|
col = assets_cols['branch_id']
|
|
print(f" ✅ branch_id: {col[1]} (nullable: {col[2]})")
|
|
else:
|
|
print(" ❌ branch_id oszlop HIÁNYZIK!")
|
|
|
|
if 'relocation_performed' in assets_cols:
|
|
col = assets_cols['relocation_performed']
|
|
print(f" ✅ relocation_performed: {col[1]} (nullable: {col[2]})")
|
|
else:
|
|
print(" ❌ relocation_performed oszlop HIÁNYZIK!")
|
|
|
|
print("\n2. vehicle.asset_financials tábla:")
|
|
if 'verified_purchase_date' in financials_cols:
|
|
col = financials_cols['verified_purchase_date']
|
|
print(f" ✅ verified_purchase_date: {col[1]} (nullable: {col[2]})")
|
|
else:
|
|
print(" ❌ verified_purchase_date oszlop HIÁNYZIK!")
|
|
|
|
# 3. Foreign key ellenőrzés (opcionális)
|
|
result = await session.execute(text("""
|
|
SELECT tc.constraint_name, tc.constraint_type
|
|
FROM information_schema.table_constraints tc
|
|
JOIN information_schema.key_column_usage kcu
|
|
ON tc.constraint_name = kcu.constraint_name
|
|
WHERE tc.table_schema = 'vehicle' AND tc.table_name = 'assets'
|
|
AND kcu.column_name = 'branch_id'
|
|
AND tc.constraint_type = 'FOREIGN KEY';
|
|
"""))
|
|
fk = result.fetchone()
|
|
if fk:
|
|
print(f"\n3. Foreign key meglétének ellenőrzése: ✅ {fk[0]}")
|
|
else:
|
|
print("\n3. Foreign key meglétének ellenőrzése: ⚠️ Nincs foreign key constraint (lehet, hogy nem kötelező)")
|
|
|
|
# 4. Default érték ellenőrzés relocation_performed-re
|
|
result = await session.execute(text("""
|
|
SELECT column_default
|
|
FROM information_schema.columns
|
|
WHERE table_schema = 'vehicle' AND table_name = 'assets'
|
|
AND column_name = 'relocation_performed';
|
|
"""))
|
|
default = result.scalar()
|
|
if default and 'false' in default.lower():
|
|
print(f"4. Default érték relocation_performed: ✅ {default}")
|
|
else:
|
|
print(f"4. Default érték relocation_performed: ⚠️ {default}")
|
|
|
|
# Összegzés
|
|
missing = []
|
|
if 'branch_id' not in assets_cols:
|
|
missing.append('branch_id')
|
|
if 'relocation_performed' not in assets_cols:
|
|
missing.append('relocation_performed')
|
|
if 'verified_purchase_date' not in financials_cols:
|
|
missing.append('verified_purchase_date')
|
|
|
|
if not missing:
|
|
print("\n🎉 ÖSSZES SÉMA VÁLTOZTATÁS SIKERESEN ALKALMAZVA!")
|
|
return True
|
|
else:
|
|
print(f"\n❌ HIÁNYZÓ OSZLOPOK: {', '.join(missing)}")
|
|
return False
|
|
|
|
async def main():
|
|
try:
|
|
success = await check_columns()
|
|
sys.exit(0 if success else 1)
|
|
except Exception as e:
|
|
print(f"Hiba történt: {e}")
|
|
sys.exit(1)
|
|
|
|
if __name__ == "__main__":
|
|
asyncio.run(main()) |