"""Discovery shares the project row lock with codegen run creation."""

from sqlalchemy import select

from src.domain.projects.models import Project


class DiscoveryRepository:
    def __init__(self, db):
        self.db = db

    async def get(self, project_id, *, lock=False):
        query = select(Project).where(Project.id == project_id, Project.deleted_at.is_(None))
        if lock:
            query = query.with_for_update().execution_options(populate_existing=True)
        return (await self.db.execute(query)).scalar_one_or_none()
