Journaling improvements
This commit is contained in:
@@ -1,7 +1,8 @@
|
||||
from typing import List, Optional
|
||||
from sqlalchemy.orm import Session
|
||||
from sqlalchemy import and_, or_, func, desc
|
||||
from app.models.journal import JournalEntry, EntityType
|
||||
from datetime import datetime
|
||||
from datetime import datetime, date
|
||||
|
||||
|
||||
class CRUDJournal:
|
||||
@@ -58,6 +59,41 @@ class CRUDJournal:
|
||||
JournalEntry.user == user
|
||||
).order_by(JournalEntry.entry_dt.desc()).limit(limit).all()
|
||||
|
||||
def search_entries(
|
||||
self,
|
||||
db: Session,
|
||||
date_from: Optional[date] = None,
|
||||
date_to: Optional[date] = None,
|
||||
entity_type: Optional[str] = None,
|
||||
entity_id: Optional[int] = None,
|
||||
user: Optional[str] = None,
|
||||
limit: int = 500
|
||||
) -> List[JournalEntry]:
|
||||
"""Search journal entries with optional filters."""
|
||||
query = db.query(JournalEntry)
|
||||
|
||||
# Apply date filters
|
||||
if date_from:
|
||||
query = query.filter(func.date(JournalEntry.entry_dt) >= date_from)
|
||||
|
||||
if date_to:
|
||||
query = query.filter(func.date(JournalEntry.entry_dt) <= date_to)
|
||||
|
||||
# Apply entity type filter
|
||||
if entity_type:
|
||||
query = query.filter(JournalEntry.entity_type == entity_type.upper())
|
||||
|
||||
# Apply entity ID filter
|
||||
if entity_id:
|
||||
query = query.filter(JournalEntry.entity_id == entity_id)
|
||||
|
||||
# Apply user filter
|
||||
if user:
|
||||
query = query.filter(JournalEntry.user == user)
|
||||
|
||||
# Order by date descending (newest first) and apply limit
|
||||
return query.order_by(JournalEntry.entry_dt.desc()).limit(limit).all()
|
||||
|
||||
# Convenience methods for backward compatibility with PPR journal
|
||||
def log_ppr_change(
|
||||
self,
|
||||
|
||||
Reference in New Issue
Block a user