import asyncio
from sqlalchemy import select
from app.core.database import AsyncSessionLocal
from app.models.models import MikrotikDevice, OLTDevice
from app.routes.devices import _probe_tcp


async def main():
    async with AsyncSessionLocal() as db:
        devices = []
        devices += [("mikrotik", d) for d in (await db.execute(select(MikrotikDevice))).scalars().all()]
        devices += [("olt", d) for d in (await db.execute(select(OLTDevice))).scalars().all()]
        for kind, device in devices:
            ok, _ = await _probe_tcp(device.host, device.api_port)
            print(f"{kind}:{device.id}:reachable={str(ok).lower()}")


asyncio.run(main())
