Browse Source

refac: files migration

Timothy J. Baek 7 tháng trước cách đây
mục cha
commit
5c9dd25459

+ 18 - 3
backend/open_webui/apps/webui/models/files.py

@@ -5,7 +5,7 @@ from typing import Optional
 from open_webui.apps.webui.internal.db import Base, JSONField, get_db
 from open_webui.apps.webui.internal.db import Base, JSONField, get_db
 from open_webui.env import SRC_LOG_LEVELS
 from open_webui.env import SRC_LOG_LEVELS
 from pydantic import BaseModel, ConfigDict
 from pydantic import BaseModel, ConfigDict
-from sqlalchemy import BigInteger, Column, String, Text
+from sqlalchemy import BigInteger, Column, String, Text, JSON
 
 
 log = logging.getLogger(__name__)
 log = logging.getLogger(__name__)
 log.setLevel(SRC_LOG_LEVELS["MODELS"])
 log.setLevel(SRC_LOG_LEVELS["MODELS"])
@@ -20,19 +20,29 @@ class File(Base):
 
 
     id = Column(String, primary_key=True)
     id = Column(String, primary_key=True)
     user_id = Column(String)
     user_id = Column(String)
+    hash = Column(String)
+
     filename = Column(Text)
     filename = Column(Text)
+    data = Column(JSON)
     meta = Column(JSONField)
     meta = Column(JSONField)
+
     created_at = Column(BigInteger)
     created_at = Column(BigInteger)
+    updated_at = Column(BigInteger)
 
 
 
 
 class FileModel(BaseModel):
 class FileModel(BaseModel):
+    model_config = ConfigDict(from_attributes=True)
+
     id: str
     id: str
     user_id: str
     user_id: str
+    hash: str
+
     filename: str
     filename: str
+    data: dict
     meta: dict
     meta: dict
-    created_at: int  # timestamp in epoch
 
 
-    model_config = ConfigDict(from_attributes=True)
+    created_at: int  # timestamp in epoch
+    updated_at: int  # timestamp in epoch
 
 
 
 
 ####################
 ####################
@@ -43,9 +53,14 @@ class FileModel(BaseModel):
 class FileModelResponse(BaseModel):
 class FileModelResponse(BaseModel):
     id: str
     id: str
     user_id: str
     user_id: str
+    hash: str
+
     filename: str
     filename: str
+    data: dict
     meta: dict
     meta: dict
+
     created_at: int  # timestamp in epoch
     created_at: int  # timestamp in epoch
+    updated_at: int  # timestamp in epoch
 
 
 
 
 class FileForm(BaseModel):
 class FileForm(BaseModel):

+ 32 - 0
backend/open_webui/migrations/versions/c0fbf31ca0db_update_file_table.py

@@ -0,0 +1,32 @@
+"""Update file table
+
+Revision ID: c0fbf31ca0db
+Revises: ca81bd47c050
+Create Date: 2024-09-20 15:26:35.241684
+
+"""
+
+from typing import Sequence, Union
+
+import sqlalchemy as sa
+from alembic import op
+
+# revision identifiers, used by Alembic.
+revision: str = "c0fbf31ca0db"
+down_revision: Union[str, None] = "ca81bd47c050"
+branch_labels: Union[str, Sequence[str], None] = None
+depends_on: Union[str, Sequence[str], None] = None
+
+
+def upgrade():
+    # ### commands auto generated by Alembic - please adjust! ###
+    op.add_column("file", sa.Column("hash", sa.String(), nullable=True))
+    op.add_column("file", sa.Column("data", sa.JSON(), nullable=True))
+    op.add_column("file", sa.Column("updated_at", sa.BigInteger(), nullable=True))
+
+
+def downgrade():
+    # ### commands auto generated by Alembic - please adjust! ###
+    op.drop_column("file", "updated_at")
+    op.drop_column("file", "data")
+    op.drop_column("file", "hash")