from sqlalchemy import select
from sqlalchemy.orm import Session

from models import ToolFile, UploadFile

from .models import File


def get_upload_file(*, session: Session, file: File):
    if file.related_id is None:
        raise ValueError("Missing file related_id")
    stmt = select(UploadFile).filter(
        UploadFile.id == file.related_id,
        UploadFile.tenant_id == file.tenant_id,
    )
    record = session.scalar(stmt)
    if not record:
        raise ValueError(f"upload file {file.related_id} not found")
    return record


def get_tool_file(*, session: Session, file: File):
    if file.related_id is None:
        raise ValueError("Missing file related_id")
    stmt = select(ToolFile).filter(
        ToolFile.id == file.related_id,
        ToolFile.tenant_id == file.tenant_id,
    )
    record = session.scalar(stmt)
    if not record:
        raise ValueError(f"tool file {file.related_id} not found")
    return record