Tai Truong
fix readme
d202ada
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)