Sobes.tech
Middle

import json fastapi'dan APIRouter, Dependsni import qiling sqlalchemy'dan selectni import qiling sqlalchemy.ext.asyncio'dan AsyncSessionni import qiling redis'dan Redisni import qiling src.infrastructure.storage.db.models.product'dan ProductDBni import qiling src.infrastructure.storage.db.models.factory'dan FactoryDBni import qiling router = APIRouter() redis = Redis.from_url("redis://localhost:6379/0") @router.get("/products/serials") async def get_serials_by_ids( ids: str, db: AsyncSession = Depends(get_db), ): product_ids = [int(x) for x in ids.split(",")] items = [] for product_id in product_ids: raw = redis.get(f"serial:{product_id}") if raw: items.append(json.loads(raw)) continue product = await db.get(ProductDB, product_id) factory = ( await db.execute(select(FactoryDB).where(FactoryDB.code == product.factory)) ).scalar_one() item = { "id": product.id, "serial_number": product.serial_number, "factory_number": factory.number, } redis.set(f"serial:{product_id}", json.dumps(item)) items.append(item) await db.commit() return items