| | 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): |
| | 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) |
| |
|