"""按序列号或钱包地址读取主体,供各业务模块共用。""" from sqlalchemy import select from sqlalchemy.orm import Session from app.errors import AppError from app.models import ComputeNode, User def get_user_by_wallet(session: Session, wallet_address: str) -> User: user = session.scalar(select(User).where(User.wallet_address == wallet_address)) if user is None: raise AppError("用户不存在", 404) return user def get_node_by_sn(session: Session, sn: str) -> ComputeNode: node = session.scalar(select(ComputeNode).where(ComputeNode.sn == sn)) if node is None: raise AppError(f"节点不存在: {sn}", 404) return node