Spaces:
Running
Running
| from uuid import UUID | |
| from sqlmodel import and_, select, update | |
| from sqlmodel.ext.asyncio.session import AsyncSession | |
| from langflow.services.database.models.flow.model import Flow | |
| from .constants import DEFAULT_FOLDER_DESCRIPTION, DEFAULT_FOLDER_NAME | |
| from .model import Folder | |
| async def create_default_folder_if_it_doesnt_exist(session: AsyncSession, user_id: UUID): | |
| stmt = select(Folder).where(Folder.user_id == user_id) | |
| folder = (await session.exec(stmt)).first() | |
| if not folder: | |
| folder = Folder( | |
| name=DEFAULT_FOLDER_NAME, | |
| user_id=user_id, | |
| description=DEFAULT_FOLDER_DESCRIPTION, | |
| ) | |
| session.add(folder) | |
| await session.commit() | |
| await session.refresh(folder) | |
| await session.exec( | |
| update(Flow) | |
| .where( | |
| and_( | |
| Flow.folder_id is None, | |
| Flow.user_id == user_id, | |
| ) | |
| ) | |
| .values(folder_id=folder.id) | |
| ) | |
| await session.commit() | |
| return folder | |
| async def get_default_folder_id(session: AsyncSession, user_id: UUID): | |
| folder = ( | |
| await session.exec(select(Folder).where(Folder.name == DEFAULT_FOLDER_NAME, Folder.user_id == user_id)) | |
| ).first() | |
| if not folder: | |
| folder = await create_default_folder_if_it_doesnt_exist(session, user_id) | |
| return folder.id | |