Permanent room urls

This commit is contained in:
2024-08-16 22:26:00 +02:00
parent ad84e4626c
commit 55697e670d
20 changed files with 1001 additions and 31 deletions

View File

@@ -16,6 +16,7 @@ meetings = sqlalchemy.Table(
sqlalchemy.Column("start_date", sqlalchemy.DateTime),
sqlalchemy.Column("end_date", sqlalchemy.DateTime),
sqlalchemy.Column("user_id", sqlalchemy.String),
sqlalchemy.Column("room_id", sqlalchemy.String),
)
@@ -28,10 +29,11 @@ class Meeting(BaseModel):
start_date: datetime
end_date: datetime
user_id: str
room_id: str | None = None
class MeetingController:
async def add(
async def create(
self,
id: str,
room_name: str,
@@ -41,9 +43,10 @@ class MeetingController:
start_date: datetime,
end_date: datetime,
user_id: str,
room_id: str = None,
):
"""
Add a new meeting
Create a new meeting
"""
meeting = Meeting(
id=id,
@@ -54,6 +57,7 @@ class MeetingController:
start_date=start_date,
end_date=end_date,
user_id=user_id,
room_id=room_id,
)
query = meetings.insert().values(**meeting.model_dump())
await database.execute(query)
@@ -73,6 +77,20 @@ class MeetingController:
return Meeting(**result)
async def get_latest(self, room_id: str) -> Meeting:
"""
Get latest meeting for a room.
"""
start_date = getattr(meetings.c, "start_date").desc()
query = (
meetings.select().where(meetings.c.room_id == room_id).order_by(start_date)
)
result = await database.fetch_one(query)
if not result:
return None
return Meeting(**result)
async def get_by_id_for_http(self, meeting_id: str, user_id: str | None) -> Meeting:
"""
Get a meeting by ID for HTTP request.