mirror of
https://github.com/Monadical-SAS/reflector.git
synced 2025-12-20 12:19:06 +00:00
Transcriptions filtering and search
This commit is contained in:
@@ -291,6 +291,8 @@ class TranscriptController:
|
||||
order_by: str | None = None,
|
||||
filter_empty: bool | None = False,
|
||||
filter_recording: bool | None = False,
|
||||
room_id: str | None = None,
|
||||
search_term: str | None = None,
|
||||
return_query: bool = False,
|
||||
) -> list[Transcript]:
|
||||
"""
|
||||
@@ -303,8 +305,36 @@ class TranscriptController:
|
||||
- `order_by`: field to order by, e.g. "-created_at"
|
||||
- `filter_empty`: filter out empty transcripts
|
||||
- `filter_recording`: filter out transcripts that are currently recording
|
||||
- `room_id`: filter transcripts by room ID
|
||||
- `search_term`: filter transcripts by search term
|
||||
"""
|
||||
query = transcripts.select().where(transcripts.c.user_id == user_id)
|
||||
from reflector.db.meetings import meetings
|
||||
from reflector.db.rooms import rooms
|
||||
|
||||
query = (
|
||||
transcripts.select()
|
||||
.join(meetings, transcripts.c.meeting_id == meetings.c.id, isouter=True)
|
||||
.join(rooms, meetings.c.room_id == rooms.c.id, isouter=True)
|
||||
)
|
||||
|
||||
if user_id:
|
||||
query = query.where(transcripts.c.user_id == user_id)
|
||||
|
||||
if room_id:
|
||||
query = query.where(rooms.c.id == room_id)
|
||||
|
||||
if search_term:
|
||||
query = query.where(
|
||||
transcripts.c.title.ilike(f"%{search_term}%")
|
||||
) # Assuming there's a 'title' column
|
||||
|
||||
query = query.with_only_columns(
|
||||
[
|
||||
transcripts,
|
||||
rooms.c.id.label("room_id"),
|
||||
rooms.c.name.label("room_name"),
|
||||
]
|
||||
)
|
||||
|
||||
if order_by is not None:
|
||||
field = getattr(transcripts.c, order_by[1:])
|
||||
|
||||
@@ -59,6 +59,8 @@ class GetTranscript(BaseModel):
|
||||
participants: list[TranscriptParticipant] | None
|
||||
reviewed: bool
|
||||
meeting_id: str | None
|
||||
room_id: str | None
|
||||
room_name: str | None
|
||||
|
||||
|
||||
class CreateTranscript(BaseModel):
|
||||
@@ -84,6 +86,8 @@ class DeletionStatus(BaseModel):
|
||||
|
||||
@router.get("/transcripts", response_model=Page[GetTranscript])
|
||||
async def transcripts_list(
|
||||
room_id: str | None,
|
||||
search_term: str | None,
|
||||
user: Annotated[Optional[auth.UserInfo], Depends(auth.current_user_optional)],
|
||||
):
|
||||
from reflector.db import database
|
||||
@@ -101,6 +105,8 @@ async def transcripts_list(
|
||||
database,
|
||||
await transcripts_controller.get_all(
|
||||
user_id=user_id,
|
||||
room_id=room_id,
|
||||
search_term=search_term,
|
||||
order_by="-created_at",
|
||||
return_query=True,
|
||||
),
|
||||
|
||||
Reference in New Issue
Block a user