diff --git a/surfsense_backend/alembic/versions/121_add_memory_md_columns.py b/surfsense_backend/alembic/versions/121_add_memory_md_columns.py new file mode 100644 index 000000000..d5ff967fd --- /dev/null +++ b/surfsense_backend/alembic/versions/121_add_memory_md_columns.py @@ -0,0 +1,38 @@ +"""Add memory_md columns to user and searchspaces tables + +Revision ID: 121 +Revises: 120 + +Changes: +1. Add memory_md TEXT column to user table (personal memory) +2. Add shared_memory_md TEXT column to searchspaces table (team memory) +""" + +from __future__ import annotations + +from collections.abc import Sequence + +import sqlalchemy as sa + +from alembic import op + +revision: str = "121" +down_revision: str | None = "120" +branch_labels: str | Sequence[str] | None = None +depends_on: str | Sequence[str] | None = None + + +def upgrade() -> None: + op.add_column( + "user", + sa.Column("memory_md", sa.Text(), nullable=True, server_default=""), + ) + op.add_column( + "searchspaces", + sa.Column("shared_memory_md", sa.Text(), nullable=True, server_default=""), + ) + + +def downgrade() -> None: + op.drop_column("searchspaces", "shared_memory_md") + op.drop_column("user", "memory_md") diff --git a/surfsense_backend/app/db.py b/surfsense_backend/app/db.py index 77a001a0d..98c1502b3 100644 --- a/surfsense_backend/app/db.py +++ b/surfsense_backend/app/db.py @@ -1392,6 +1392,8 @@ class SearchSpace(BaseModel, TimestampMixin): Text, nullable=True, default="" ) # User's custom instructions + shared_memory_md = Column(Text, nullable=True, server_default="") + # Search space-level LLM preferences (shared by all members) # Note: ID values: # - 0: Auto mode (uses LiteLLM Router for load balancing) - default for new search spaces @@ -2063,6 +2065,8 @@ if config.AUTH_TYPE == "GOOGLE": last_login = Column(TIMESTAMP(timezone=True), nullable=True) + memory_md = Column(Text, nullable=True, server_default="") + # Refresh tokens for this user refresh_tokens = relationship( "RefreshToken", @@ -2183,6 +2187,8 @@ else: last_login = Column(TIMESTAMP(timezone=True), nullable=True) + memory_md = Column(Text, nullable=True, server_default="") + # Refresh tokens for this user refresh_tokens = relationship( "RefreshToken",