From ea53ca70008895504dd95b3e14b8d97fec70f41c Mon Sep 17 00:00:00 2001 From: Mathieu Virbel Date: Tue, 2 Sep 2025 16:08:38 -0600 Subject: [PATCH] feat: add platform field to Room and Meeting models MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add platform column to rooms and meetings database tables with Literal typing to support multiple video conferencing platforms (whereby, jitsi). - Add platform column to rooms/meetings SQLAlchemy tables with whereby default - Update Room/Meeting Pydantic models with platform field and Literal typing - Modify RoomController.add() to accept platform parameter - Update MeetingController.create() to copy platform from room 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- server/reflector/db/meetings.py | 3 +++ server/reflector/db/rooms.py | 6 ++++++ 2 files changed, 9 insertions(+) diff --git a/server/reflector/db/meetings.py b/server/reflector/db/meetings.py index 85178351..b8d6c691 100644 --- a/server/reflector/db/meetings.py +++ b/server/reflector/db/meetings.py @@ -41,6 +41,7 @@ meetings = sa.Table( nullable=False, server_default=sa.true(), ), + sa.Column("platform", sa.String, nullable=False, server_default="whereby"), sa.Index("idx_meeting_room_id", "room_id"), sa.Index( "idx_one_active_meeting_per_room", @@ -90,6 +91,7 @@ class Meeting(BaseModel): "none", "prompt", "automatic", "automatic-2nd-participant" ] = "automatic-2nd-participant" num_clients: int = 0 + platform: Literal["whereby", "jitsi"] = "whereby" class MeetingController: @@ -120,6 +122,7 @@ class MeetingController: room_mode=room.room_mode, recording_type=room.recording_type, recording_trigger=room.recording_trigger, + platform=room.platform, ) query = meetings.insert().values(**meeting.model_dump()) await get_database().execute(query) diff --git a/server/reflector/db/rooms.py b/server/reflector/db/rooms.py index abc45e61..76c2b897 100644 --- a/server/reflector/db/rooms.py +++ b/server/reflector/db/rooms.py @@ -43,6 +43,9 @@ rooms = sqlalchemy.Table( ), sqlalchemy.Column("webhook_url", sqlalchemy.String, nullable=True), sqlalchemy.Column("webhook_secret", sqlalchemy.String, nullable=True), + sqlalchemy.Column( + "platform", sqlalchemy.String, nullable=False, server_default="whereby" + ), sqlalchemy.Index("idx_room_is_shared", "is_shared"), ) @@ -64,6 +67,7 @@ class Room(BaseModel): is_shared: bool = False webhook_url: str | None = None webhook_secret: str | None = None + platform: Literal["whereby", "jitsi"] = "whereby" class RoomController: @@ -114,6 +118,7 @@ class RoomController: is_shared: bool, webhook_url: str = "", webhook_secret: str = "", + platform: str = "whereby", ): """ Add a new room @@ -134,6 +139,7 @@ class RoomController: is_shared=is_shared, webhook_url=webhook_url, webhook_secret=webhook_secret, + platform=platform, ) query = rooms.insert().values(**room.model_dump()) try: