Add CA admin UI and extend admin API for the unified platform.
Deliver parsers, events, analytics, and PI management in Vue; fix Telegram session mount and map navigation to events by eventId. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
from datetime import datetime
|
||||
|
||||
from sqlalchemy.orm import Query, Session
|
||||
|
||||
from ..models import Event
|
||||
|
||||
|
||||
def build_events_query(
|
||||
db: Session,
|
||||
*,
|
||||
source_type: str | None = None,
|
||||
region: str | None = None,
|
||||
topic: str | None = None,
|
||||
locality: str | None = None,
|
||||
date_from: datetime | None = None,
|
||||
date_to: datetime | None = None,
|
||||
search: str | None = None,
|
||||
) -> Query:
|
||||
query = db.query(Event)
|
||||
|
||||
if source_type:
|
||||
query = query.filter(Event.source_type == source_type)
|
||||
if region:
|
||||
query = query.filter(Event.region == region)
|
||||
if topic:
|
||||
query = query.filter(Event.topic == topic)
|
||||
if locality:
|
||||
query = query.filter(Event.locality.ilike(f"%{locality}%"))
|
||||
if date_from:
|
||||
query = query.filter(Event.event_date >= date_from)
|
||||
if date_to:
|
||||
query = query.filter(Event.event_date <= date_to)
|
||||
if search:
|
||||
pattern = f"%{search}%"
|
||||
query = query.filter(
|
||||
Event.title.ilike(pattern)
|
||||
| Event.description.ilike(pattern)
|
||||
| Event.raw_text.ilike(pattern)
|
||||
| Event.locality.ilike(pattern)
|
||||
)
|
||||
|
||||
return query.order_by(Event.ingested_at.desc())
|
||||
Reference in New Issue
Block a user