fix: sync all models with production DB schema
Check Cross-Plugin Imports / check (push) Has been cancelled
Check Cross-Plugin Imports / check (push) Has been cancelled
- Add OwnedMixin to 29 model files (78 tables that had owner_id in DB but not in model) - Add search/embedding columns to 9 model files (18 columns: search_tsv, embedding, indexed_at, content_text, content_tsv, body_tsv, company_id, deleted_at) - Fix import syntax errors in calendar/models.py, mail/models.py, notification.py, contact.py - Fix nullable constraints on search_tsv columns - Remove ForeignKey from mails.company_id (companies table not always loaded in test context) - All 36 tests pass (24 Phase J + 12 Phase K) - Models now match production DB schema
This commit is contained in:
@@ -54,7 +54,7 @@ class CommConversation(Base, TenantMixin, OwnedMixin):
|
||||
metadata_: Mapped[dict[str, Any]] = mapped_column("metadata", JSONB, default=dict, nullable=False)
|
||||
|
||||
|
||||
class CommParticipant(Base, TenantMixin):
|
||||
class CommParticipant(Base, TenantMixin, OwnedMixin):
|
||||
"""Participant in a conversation — user, ai, system, gateway, etc."""
|
||||
|
||||
__tablename__ = "comm_participants"
|
||||
@@ -84,7 +84,7 @@ class CommParticipant(Base, TenantMixin):
|
||||
left_at: Mapped[datetime | None] = mapped_column(DateTime(timezone=True), nullable=True)
|
||||
|
||||
|
||||
class CommMessage(Base, TenantMixin):
|
||||
class CommMessage(Base, TenantMixin, OwnedMixin):
|
||||
"""Message in a conversation — text content plus rich content blocks."""
|
||||
|
||||
__tablename__ = "comm_messages"
|
||||
@@ -117,7 +117,7 @@ class CommMessage(Base, TenantMixin):
|
||||
edited_at: Mapped[datetime | None] = mapped_column(DateTime(timezone=True), nullable=True)
|
||||
|
||||
|
||||
class CommMessageBlock(Base, TenantMixin):
|
||||
class CommMessageBlock(Base, TenantMixin, OwnedMixin):
|
||||
"""Rich content block attached to a message."""
|
||||
|
||||
__tablename__ = "comm_message_blocks"
|
||||
@@ -139,7 +139,7 @@ class CommMessageBlock(Base, TenantMixin):
|
||||
sort_order: Mapped[int] = mapped_column(Integer, nullable=False, default=0)
|
||||
|
||||
|
||||
class CommMessageAttachment(Base, TenantMixin):
|
||||
class CommMessageAttachment(Base, TenantMixin, OwnedMixin):
|
||||
"""File attachment on a message — DMS reference or comm-internal upload."""
|
||||
|
||||
__tablename__ = "comm_message_attachments"
|
||||
@@ -165,7 +165,7 @@ class CommMessageAttachment(Base, TenantMixin):
|
||||
metadata_: Mapped[dict[str, Any]] = mapped_column("metadata", JSONB, default=dict, nullable=False)
|
||||
|
||||
|
||||
class CommMessageReaction(Base, TenantMixin):
|
||||
class CommMessageReaction(Base, TenantMixin, OwnedMixin):
|
||||
"""Emoji reaction on a message."""
|
||||
|
||||
__tablename__ = "comm_message_reactions"
|
||||
@@ -187,7 +187,7 @@ class CommMessageReaction(Base, TenantMixin):
|
||||
emoji: Mapped[str] = mapped_column(String(50), nullable=False)
|
||||
|
||||
|
||||
class CommMessageRead(Base, TenantMixin):
|
||||
class CommMessageRead(Base, TenantMixin, OwnedMixin):
|
||||
"""Read state per user per conversation."""
|
||||
|
||||
__tablename__ = "comm_message_reads"
|
||||
@@ -215,7 +215,7 @@ class CommMessageRead(Base, TenantMixin):
|
||||
)
|
||||
|
||||
|
||||
class CommConversationPin(Base, TenantMixin):
|
||||
class CommConversationPin(Base, TenantMixin, OwnedMixin):
|
||||
"""User-specific conversation pinning."""
|
||||
|
||||
__tablename__ = "comm_conversation_pins"
|
||||
@@ -238,7 +238,7 @@ class CommConversationPin(Base, TenantMixin):
|
||||
)
|
||||
|
||||
|
||||
class CommConversationMute(Base, TenantMixin):
|
||||
class CommConversationMute(Base, TenantMixin, OwnedMixin):
|
||||
"""User-specific conversation muting."""
|
||||
|
||||
__tablename__ = "comm_conversation_mutes"
|
||||
@@ -261,7 +261,7 @@ class CommConversationMute(Base, TenantMixin):
|
||||
)
|
||||
|
||||
|
||||
class CommMessageEdit(Base, TenantMixin):
|
||||
class CommMessageEdit(Base, TenantMixin, OwnedMixin):
|
||||
"""Edit history for messages — stores old content before each edit."""
|
||||
|
||||
__tablename__ = "comm_message_edits"
|
||||
|
||||
Reference in New Issue
Block a user