712d21e746
docs/planning/social.md US-5 (task 13). Models + Alembic migration only, per the sibling-dependency boundary with the Groups API task. - groups: id, name, description, owner_id (FK users, ON DELETE SET NULL -- a group is a durable multi-member community, so it and its full roster survive the owner deleting their account; the API task handles surfacing an ownerless group for reassignment). - group_members: group_id/user_id (both FK, ON DELETE CASCADE -- pure join-table rows with no meaning without either side), role (owner/admin/member native enum, default member), joined_at, unique constraint on (group_id, user_id). - User gets owned_groups / group_memberships relationships. - tests/conftest.py TEST_TABLES updated for truncation between tests. - New tests/test_group_models.py: role assignment, unique-membership rejection, group-delete cascade, member-delete cascade, and owner-delete SET NULL survival -- all verified against real Postgres. Verified: upgrade/downgrade/upgrade round-trip, \d-inspected schema matches spec (FKs, cascade behavior, unique constraint, indexes), full backend suite 166 passed / 0 regressions. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Y2FESCaMXeJpC9gSctiEeD
20 lines
835 B
Python
20 lines
835 B
Python
from app.models.user import User
|
|
from app.models.session import Session
|
|
from app.models.world import World
|
|
from app.models.asset import Asset
|
|
from app.models.avatar_loadout import AvatarLoadout
|
|
from app.models.world_content import WorldRoom, WorldChunk, WorldChunkRevision
|
|
from app.models.social import Friendship, Follow, Block, FriendshipStatus
|
|
from app.models.chat import (
|
|
Conversation, ConversationParticipant, Message, MessageReport, ReportStatus,
|
|
)
|
|
from app.models.groups import Group, GroupMember, GroupRole
|
|
|
|
__all__ = [
|
|
"User", "Session", "World", "Asset", "AvatarLoadout",
|
|
"WorldRoom", "WorldChunk", "WorldChunkRevision",
|
|
"Friendship", "Follow", "Block", "FriendshipStatus",
|
|
"Conversation", "ConversationParticipant", "Message", "MessageReport", "ReportStatus",
|
|
"Group", "GroupMember", "GroupRole",
|
|
]
|