Spaces:
Running
Running
| from typing import Optional | |
| from uuid import UUID, uuid4 | |
| from sqlalchemy import Text, UniqueConstraint | |
| from sqlmodel import Column, Field, Relationship, SQLModel | |
| from langflow.services.database.models.flow.model import Flow, FlowRead | |
| from langflow.services.database.models.user.model import User | |
| class FolderBase(SQLModel): | |
| name: str = Field(index=True) | |
| description: str | None = Field(default=None, sa_column=Column(Text)) | |
| class Folder(FolderBase, table=True): # type: ignore[call-arg] | |
| id: UUID | None = Field(default_factory=uuid4, primary_key=True) | |
| parent_id: UUID | None = Field(default=None, foreign_key="folder.id") | |
| parent: Optional["Folder"] = Relationship( | |
| back_populates="children", | |
| sa_relationship_kwargs={"remote_side": "Folder.id"}, | |
| ) | |
| children: list["Folder"] = Relationship(back_populates="parent") | |
| user_id: UUID | None = Field(default=None, foreign_key="user.id") | |
| user: User = Relationship(back_populates="folders") | |
| flows: list[Flow] = Relationship( | |
| back_populates="folder", sa_relationship_kwargs={"cascade": "all, delete, delete-orphan"} | |
| ) | |
| __table_args__ = (UniqueConstraint("user_id", "name", name="unique_folder_name"),) | |
| class FolderCreate(FolderBase): | |
| components_list: list[UUID] | None = None | |
| flows_list: list[UUID] | None = None | |
| class FolderRead(FolderBase): | |
| id: UUID | |
| parent_id: UUID | None = Field() | |
| class FolderReadWithFlows(FolderBase): | |
| id: UUID | |
| parent_id: UUID | None = Field() | |
| flows: list[FlowRead] = Field(default=[]) | |
| class FolderUpdate(SQLModel): | |
| name: str | None = None | |
| description: str | None = None | |
| parent_id: UUID | None = None | |
| components: list[UUID] = Field(default_factory=list) | |
| flows: list[UUID] = Field(default_factory=list) | |