mirror of
https://github.com/open-webui/open-webui.git
synced 2025-12-12 12:25:20 +00:00
feat: migrate folder table
Co-Authored-By: Classic298 <27028174+Classic298@users.noreply.github.com>
This commit is contained in:
parent
847a78a276
commit
5b14d15b00
3 changed files with 43 additions and 7 deletions
|
|
@ -0,0 +1,23 @@
|
||||||
|
"""Update folder table data
|
||||||
|
|
||||||
|
Revision ID: d31026856c01
|
||||||
|
Revises: 9f0c9cd09105
|
||||||
|
Create Date: 2025-07-13 03:00:00.000000
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
from alembic import op
|
||||||
|
import sqlalchemy as sa
|
||||||
|
|
||||||
|
revision = "d31026856c01"
|
||||||
|
down_revision = "9f0c9cd09105"
|
||||||
|
branch_labels = None
|
||||||
|
depends_on = None
|
||||||
|
|
||||||
|
|
||||||
|
def upgrade():
|
||||||
|
op.add_column("folder", sa.Column("data", sa.JSON(), nullable=True))
|
||||||
|
|
||||||
|
|
||||||
|
def downgrade():
|
||||||
|
op.drop_column("folder", "data")
|
||||||
|
|
@ -29,6 +29,7 @@ class Folder(Base):
|
||||||
name = Column(Text)
|
name = Column(Text)
|
||||||
items = Column(JSON, nullable=True)
|
items = Column(JSON, nullable=True)
|
||||||
meta = Column(JSON, nullable=True)
|
meta = Column(JSON, nullable=True)
|
||||||
|
data = Column(JSON, nullable=True)
|
||||||
is_expanded = Column(Boolean, default=False)
|
is_expanded = Column(Boolean, default=False)
|
||||||
created_at = Column(BigInteger)
|
created_at = Column(BigInteger)
|
||||||
updated_at = Column(BigInteger)
|
updated_at = Column(BigInteger)
|
||||||
|
|
@ -41,6 +42,7 @@ class FolderModel(BaseModel):
|
||||||
name: str
|
name: str
|
||||||
items: Optional[dict] = None
|
items: Optional[dict] = None
|
||||||
meta: Optional[dict] = None
|
meta: Optional[dict] = None
|
||||||
|
data: Optional[dict] = None
|
||||||
is_expanded: bool = False
|
is_expanded: bool = False
|
||||||
created_at: int
|
created_at: int
|
||||||
updated_at: int
|
updated_at: int
|
||||||
|
|
@ -55,6 +57,7 @@ class FolderModel(BaseModel):
|
||||||
|
|
||||||
class FolderForm(BaseModel):
|
class FolderForm(BaseModel):
|
||||||
name: str
|
name: str
|
||||||
|
data: Optional[dict] = None
|
||||||
model_config = ConfigDict(extra="allow")
|
model_config = ConfigDict(extra="allow")
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -187,8 +190,8 @@ class FolderTable:
|
||||||
log.error(f"update_folder: {e}")
|
log.error(f"update_folder: {e}")
|
||||||
return
|
return
|
||||||
|
|
||||||
def update_folder_name_by_id_and_user_id(
|
def update_folder_by_id_and_user_id(
|
||||||
self, id: str, user_id: str, name: str
|
self, id: str, user_id: str, form_data: FolderForm
|
||||||
) -> Optional[FolderModel]:
|
) -> Optional[FolderModel]:
|
||||||
try:
|
try:
|
||||||
with get_db() as db:
|
with get_db() as db:
|
||||||
|
|
@ -197,16 +200,28 @@ class FolderTable:
|
||||||
if not folder:
|
if not folder:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
form_data = form_data.model_dump(exclude_unset=True)
|
||||||
|
|
||||||
existing_folder = (
|
existing_folder = (
|
||||||
db.query(Folder)
|
db.query(Folder)
|
||||||
.filter_by(name=name, parent_id=folder.parent_id, user_id=user_id)
|
.filter_by(
|
||||||
|
name=form_data.get("name"),
|
||||||
|
parent_id=folder.parent_id,
|
||||||
|
user_id=user_id,
|
||||||
|
)
|
||||||
.first()
|
.first()
|
||||||
)
|
)
|
||||||
|
|
||||||
if existing_folder:
|
if existing_folder:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
folder.name = name
|
folder.name = form_data.get("name", folder.name)
|
||||||
|
if "data" in form_data:
|
||||||
|
folder.data = {
|
||||||
|
**folder.data,
|
||||||
|
**form_data["data"],
|
||||||
|
}
|
||||||
|
|
||||||
folder.updated_at = int(time.time())
|
folder.updated_at = int(time.time())
|
||||||
|
|
||||||
db.commit()
|
db.commit()
|
||||||
|
|
|
||||||
|
|
@ -127,9 +127,7 @@ async def update_folder_name_by_id(
|
||||||
)
|
)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
folder = Folders.update_folder_name_by_id_and_user_id(
|
folder = Folders.update_folder_by_id_and_user_id(id, user.id, form_data)
|
||||||
id, user.id, form_data.name
|
|
||||||
)
|
|
||||||
|
|
||||||
return folder
|
return folder
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue