refactor(db): rename searchspaces table to workspaces

Phase 1 (rename DB) commit 1i: rename the SearchSpace table to workspaces
and flip all 24 inbound FK target strings (20 in db.py + the 4 satellite
models), plus the raw-SQL searchspaces references in the obsidian and
google-unification integration fixtures.

This completes the ORM half of Phase 1. The SearchSpace class name,
relationship/back_populates attribute names, and the /searchspaces API
route URLs are intentionally left for Phase 2.

Verified: unit 2375 passed/1 skip, integration 346 passed (baseline
parity); create_all builds every table with the workspaces name and all
FKs resolving to workspaces.id.
This commit is contained in:
CREDO23 2026-06-26 13:27:16 +02:00
parent 35f80268df
commit c6d4e5df7c
7 changed files with 28 additions and 28 deletions

View file

@ -27,7 +27,7 @@ class Automation(BaseModel, TimestampMixin):
search_space_id = Column( search_space_id = Column(
"workspace_id", "workspace_id",
Integer, Integer,
ForeignKey("searchspaces.id", ondelete="CASCADE"), ForeignKey("workspaces.id", ondelete="CASCADE"),
nullable=False, nullable=False,
index=True, index=True,
) )

View file

@ -608,7 +608,7 @@ class NewChatThread(BaseModel, TimestampMixin):
search_space_id = Column( search_space_id = Column(
"workspace_id", "workspace_id",
Integer, Integer,
ForeignKey("searchspaces.id", ondelete="CASCADE"), ForeignKey("workspaces.id", ondelete="CASCADE"),
nullable=False, nullable=False,
) )
@ -791,7 +791,7 @@ class ExternalChatAccount(Base, TimestampMixin):
owner_search_space_id = Column( owner_search_space_id = Column(
"owner_workspace_id", "owner_workspace_id",
Integer, Integer,
ForeignKey("searchspaces.id", ondelete="CASCADE"), ForeignKey("workspaces.id", ondelete="CASCADE"),
nullable=True, nullable=True,
) )
is_system_account = Column( is_system_account = Column(
@ -906,7 +906,7 @@ class ExternalChatBinding(Base, TimestampMixin):
search_space_id = Column( search_space_id = Column(
"workspace_id", "workspace_id",
Integer, Integer,
ForeignKey("searchspaces.id", ondelete="CASCADE"), ForeignKey("workspaces.id", ondelete="CASCADE"),
nullable=False, nullable=False,
) )
state = Column( state = Column(
@ -1125,7 +1125,7 @@ class TokenUsage(BaseModel, TimestampMixin):
search_space_id = Column( search_space_id = Column(
"workspace_id", "workspace_id",
Integer, Integer,
ForeignKey("searchspaces.id", ondelete="CASCADE"), ForeignKey("workspaces.id", ondelete="CASCADE"),
nullable=False, nullable=False,
index=True, index=True,
) )
@ -1331,7 +1331,7 @@ class Folder(BaseModel, TimestampMixin):
search_space_id = Column( search_space_id = Column(
"workspace_id", "workspace_id",
Integer, Integer,
ForeignKey("searchspaces.id", ondelete="CASCADE"), ForeignKey("workspaces.id", ondelete="CASCADE"),
nullable=False, nullable=False,
index=True, index=True,
) )
@ -1396,7 +1396,7 @@ class Document(BaseModel, TimestampMixin):
search_space_id = Column( search_space_id = Column(
"workspace_id", "workspace_id",
Integer, Integer,
ForeignKey("searchspaces.id", ondelete="CASCADE"), ForeignKey("workspaces.id", ondelete="CASCADE"),
nullable=False, nullable=False,
) )
@ -1523,7 +1523,7 @@ class VideoPresentation(BaseModel, TimestampMixin):
search_space_id = Column( search_space_id = Column(
"workspace_id", "workspace_id",
Integer, Integer,
ForeignKey("searchspaces.id", ondelete="CASCADE"), ForeignKey("workspaces.id", ondelete="CASCADE"),
nullable=False, nullable=False,
) )
search_space = relationship("SearchSpace", back_populates="video_presentations") search_space = relationship("SearchSpace", back_populates="video_presentations")
@ -1553,7 +1553,7 @@ class Report(BaseModel, TimestampMixin):
search_space_id = Column( search_space_id = Column(
"workspace_id", "workspace_id",
Integer, Integer,
ForeignKey("searchspaces.id", ondelete="CASCADE"), ForeignKey("workspaces.id", ondelete="CASCADE"),
nullable=False, nullable=False,
) )
search_space = relationship("SearchSpace", back_populates="reports") search_space = relationship("SearchSpace", back_populates="reports")
@ -1584,7 +1584,7 @@ class Connection(BaseModel, TimestampMixin):
search_space_id = Column( search_space_id = Column(
"workspace_id", "workspace_id",
Integer, Integer,
ForeignKey("searchspaces.id", ondelete="CASCADE"), ForeignKey("workspaces.id", ondelete="CASCADE"),
nullable=True, nullable=True,
) )
user_id = Column( user_id = Column(
@ -1698,7 +1698,7 @@ class ImageGeneration(BaseModel, TimestampMixin):
search_space_id = Column( search_space_id = Column(
"workspace_id", "workspace_id",
Integer, Integer,
ForeignKey("searchspaces.id", ondelete="CASCADE"), ForeignKey("workspaces.id", ondelete="CASCADE"),
nullable=False, nullable=False,
) )
created_by_id = Column( created_by_id = Column(
@ -1714,7 +1714,7 @@ class ImageGeneration(BaseModel, TimestampMixin):
class SearchSpace(BaseModel, TimestampMixin): class SearchSpace(BaseModel, TimestampMixin):
__tablename__ = "searchspaces" __tablename__ = "workspaces"
name = Column(String(100), nullable=False, index=True) name = Column(String(100), nullable=False, index=True)
description = Column(String(500), nullable=True) description = Column(String(500), nullable=True)
@ -1910,7 +1910,7 @@ class SearchSourceConnector(BaseModel, TimestampMixin):
search_space_id = Column( search_space_id = Column(
"workspace_id", "workspace_id",
Integer, Integer,
ForeignKey("searchspaces.id", ondelete="CASCADE"), ForeignKey("workspaces.id", ondelete="CASCADE"),
nullable=False, nullable=False,
) )
search_space = relationship( search_space = relationship(
@ -1940,7 +1940,7 @@ class Log(BaseModel, TimestampMixin):
search_space_id = Column( search_space_id = Column(
"workspace_id", "workspace_id",
Integer, Integer,
ForeignKey("searchspaces.id", ondelete="CASCADE"), ForeignKey("workspaces.id", ondelete="CASCADE"),
nullable=False, nullable=False,
) )
search_space = relationship("SearchSpace", back_populates="logs") search_space = relationship("SearchSpace", back_populates="logs")
@ -2083,7 +2083,7 @@ class SearchSpaceRole(BaseModel, TimestampMixin):
search_space_id = Column( search_space_id = Column(
"workspace_id", "workspace_id",
Integer, Integer,
ForeignKey("searchspaces.id", ondelete="CASCADE"), ForeignKey("workspaces.id", ondelete="CASCADE"),
nullable=False, nullable=False,
) )
search_space = relationship("SearchSpace", back_populates="roles") search_space = relationship("SearchSpace", back_populates="roles")
@ -2117,7 +2117,7 @@ class SearchSpaceMembership(BaseModel, TimestampMixin):
search_space_id = Column( search_space_id = Column(
"workspace_id", "workspace_id",
Integer, Integer,
ForeignKey("searchspaces.id", ondelete="CASCADE"), ForeignKey("workspaces.id", ondelete="CASCADE"),
nullable=False, nullable=False,
) )
role_id = Column( role_id = Column(
@ -2162,7 +2162,7 @@ class SearchSpaceInvite(BaseModel, TimestampMixin):
search_space_id = Column( search_space_id = Column(
"workspace_id", "workspace_id",
Integer, Integer,
ForeignKey("searchspaces.id", ondelete="CASCADE"), ForeignKey("workspaces.id", ondelete="CASCADE"),
nullable=False, nullable=False,
) )
# Role to assign when invite is used (null means use default role) # Role to assign when invite is used (null means use default role)
@ -2223,7 +2223,7 @@ class Prompt(BaseModel, TimestampMixin):
search_space_id = Column( search_space_id = Column(
"workspace_id", "workspace_id",
Integer, Integer,
ForeignKey("searchspaces.id", ondelete="CASCADE"), ForeignKey("workspaces.id", ondelete="CASCADE"),
nullable=True, nullable=True,
index=True, index=True,
) )
@ -2553,7 +2553,7 @@ class AgentActionLog(BaseModel):
search_space_id = Column( search_space_id = Column(
"workspace_id", "workspace_id",
Integer, Integer,
ForeignKey("searchspaces.id", ondelete="CASCADE"), ForeignKey("workspaces.id", ondelete="CASCADE"),
nullable=False, nullable=False,
index=True, index=True,
) )
@ -2625,7 +2625,7 @@ class DocumentRevision(BaseModel):
search_space_id = Column( search_space_id = Column(
"workspace_id", "workspace_id",
Integer, Integer,
ForeignKey("searchspaces.id", ondelete="CASCADE"), ForeignKey("workspaces.id", ondelete="CASCADE"),
nullable=False, nullable=False,
index=True, index=True,
) )
@ -2667,7 +2667,7 @@ class FolderRevision(BaseModel):
search_space_id = Column( search_space_id = Column(
"workspace_id", "workspace_id",
Integer, Integer,
ForeignKey("searchspaces.id", ondelete="CASCADE"), ForeignKey("workspaces.id", ondelete="CASCADE"),
nullable=False, nullable=False,
index=True, index=True,
) )
@ -2704,7 +2704,7 @@ class AgentPermissionRule(BaseModel):
search_space_id = Column( search_space_id = Column(
"workspace_id", "workspace_id",
Integer, Integer,
ForeignKey("searchspaces.id", ondelete="CASCADE"), ForeignKey("workspaces.id", ondelete="CASCADE"),
nullable=False, nullable=False,
index=True, index=True,
) )

View file

@ -32,7 +32,7 @@ class DocumentFile(BaseModel, TimestampMixin):
search_space_id = Column( search_space_id = Column(
"workspace_id", "workspace_id",
Integer, Integer,
ForeignKey("searchspaces.id", ondelete="CASCADE"), ForeignKey("workspaces.id", ondelete="CASCADE"),
nullable=False, nullable=False,
index=True, index=True,
) )

View file

@ -50,7 +50,7 @@ class Notification(BaseModel, TimestampMixin):
search_space_id = Column( search_space_id = Column(
"workspace_id", "workspace_id",
Integer, Integer,
ForeignKey("searchspaces.id", ondelete="CASCADE"), ForeignKey("workspaces.id", ondelete="CASCADE"),
nullable=True, nullable=True,
index=True, index=True,
) )

View file

@ -71,7 +71,7 @@ class Podcast(BaseModel, TimestampMixin):
search_space_id = Column( search_space_id = Column(
"workspace_id", "workspace_id",
Integer, Integer,
ForeignKey("searchspaces.id", ondelete="CASCADE"), ForeignKey("workspaces.id", ondelete="CASCADE"),
nullable=False, nullable=False,
) )
search_space = relationship("SearchSpace", back_populates="podcasts") search_space = relationship("SearchSpace", back_populates="podcasts")

View file

@ -199,7 +199,7 @@ async def committed_google_data(async_engine):
async with async_engine.begin() as conn: async with async_engine.begin() as conn:
await conn.execute( await conn.execute(
text("DELETE FROM searchspaces WHERE id = :sid"), {"sid": space_id} text("DELETE FROM workspaces WHERE id = :sid"), {"sid": space_id}
) )
@ -306,5 +306,5 @@ async def cleanup_space(async_engine, space_id: int):
"""Delete a search space (cascades to connectors/documents).""" """Delete a search space (cascades to connectors/documents)."""
async with async_engine.begin() as conn: async with async_engine.begin() as conn:
await conn.execute( await conn.execute(
text("DELETE FROM searchspaces WHERE id = :sid"), {"sid": space_id} text("DELETE FROM workspaces WHERE id = :sid"), {"sid": space_id}
) )

View file

@ -133,7 +133,7 @@ async def race_user_and_space(async_engine):
{"id": space_id}, {"id": space_id},
) )
await cleanup.execute( await cleanup.execute(
text("DELETE FROM searchspaces WHERE id = :id"), text("DELETE FROM workspaces WHERE id = :id"),
{"id": space_id}, {"id": space_id},
) )
await cleanup.execute( await cleanup.execute(