33from typing import Any
44from uuid import UUID
55
6- from sqlalchemy import Boolean , ForeignKey , Integer , String , Text
7- from sqlalchemy .dialects .postgresql import JSONB , UUID as PG_UUID
6+ from sqlalchemy import JSON , Boolean , ForeignKey , Integer , String , Text
7+ from sqlalchemy .dialects .postgresql import UUID as PG_UUID
88from sqlalchemy .orm import Mapped , mapped_column , relationship
99
1010from app .db .base import Base , TimestampMixin , UUIDMixin
@@ -21,7 +21,7 @@ class User(Base, UUIDMixin, TimestampMixin):
2121 avatar_url : Mapped [str | None ] = mapped_column (String (500 ))
2222 role : Mapped [str ] = mapped_column (String (20 ), default = "user" )
2323 is_active : Mapped [bool ] = mapped_column (Boolean , default = True )
24- settings : Mapped [dict [str , Any ]] = mapped_column (JSONB , default = dict )
24+ settings : Mapped [dict [str , Any ]] = mapped_column (JSON , default = dict )
2525
2626 # 关系
2727 connections : Mapped [list ["Connection" ]] = relationship (back_populates = "user" , cascade = "all, delete-orphan" )
@@ -42,7 +42,7 @@ class Connection(Base, UUIDMixin, TimestampMixin):
4242 username : Mapped [str | None ] = mapped_column (String (100 ))
4343 password_encrypted : Mapped [str | None ] = mapped_column (Text )
4444 database_name : Mapped [str | None ] = mapped_column (String (100 ))
45- extra_options : Mapped [dict [str , Any ]] = mapped_column (JSONB , default = dict )
45+ extra_options : Mapped [dict [str , Any ]] = mapped_column (JSON , default = dict )
4646 is_default : Mapped [bool ] = mapped_column (Boolean , default = False )
4747
4848 # 关系
@@ -60,7 +60,7 @@ class Model(Base, UUIDMixin, TimestampMixin):
6060 model_id : Mapped [str ] = mapped_column (String (100 ), nullable = False ) # gpt-4o, claude-3-5-sonnet
6161 base_url : Mapped [str | None ] = mapped_column (String (500 ))
6262 api_key_encrypted : Mapped [str | None ] = mapped_column (Text )
63- extra_options : Mapped [dict [str , Any ]] = mapped_column (JSONB , default = dict )
63+ extra_options : Mapped [dict [str , Any ]] = mapped_column (JSON , default = dict )
6464 is_default : Mapped [bool ] = mapped_column (Boolean , default = False )
6565 is_active : Mapped [bool ] = mapped_column (Boolean , default = True )
6666
@@ -79,7 +79,7 @@ class Conversation(Base, UUIDMixin, TimestampMixin):
7979 title : Mapped [str | None ] = mapped_column (String (200 ))
8080 status : Mapped [str ] = mapped_column (String (20 ), default = "active" , index = True ) # active, completed, error
8181 is_favorite : Mapped [bool ] = mapped_column (Boolean , default = False )
82- extra_data : Mapped [dict [str , Any ]] = mapped_column (JSONB , default = dict )
82+ extra_data : Mapped [dict [str , Any ]] = mapped_column (JSON , default = dict )
8383
8484 # 关系
8585 user : Mapped ["User" ] = relationship (back_populates = "conversations" )
@@ -94,7 +94,7 @@ class Message(Base, UUIDMixin):
9494 conversation_id : Mapped [UUID ] = mapped_column (PG_UUID (as_uuid = True ), ForeignKey ("conversations.id" , ondelete = "CASCADE" ), nullable = False , index = True )
9595 role : Mapped [str ] = mapped_column (String (20 ), nullable = False ) # user, assistant, system
9696 content : Mapped [str ] = mapped_column (Text , nullable = False )
97- extra_data : Mapped [dict [str , Any ]] = mapped_column (JSONB , default = dict )
97+ extra_data : Mapped [dict [str , Any ]] = mapped_column (JSON , default = dict )
9898 created_at : Mapped [datetime ] = mapped_column (default = datetime .utcnow )
9999
100100 # 关系
0 commit comments