feat: add time-based filtering for workflow logs
Signed-off-by: -LAN- <laipz8200@outlook.com>
This commit is contained in:
parent
e954e0d6c4
commit
e8243c566f
@ -24,6 +24,12 @@ class WorkflowAppLogApi(Resource):
|
||||
parser = reqparse.RequestParser()
|
||||
parser.add_argument("keyword", type=str, location="args")
|
||||
parser.add_argument("status", type=str, choices=["succeeded", "failed", "stopped"], location="args")
|
||||
parser.add_argument(
|
||||
"created_at__before", type=str, location="args", help="Filter logs created before this timestamp"
|
||||
)
|
||||
parser.add_argument(
|
||||
"created_at__after", type=str, location="args", help="Filter logs created after this timestamp"
|
||||
)
|
||||
parser.add_argument("page", type=int_range(1, 99999), default=1, location="args")
|
||||
parser.add_argument("limit", type=int_range(1, 100), default=20, location="args")
|
||||
args = parser.parse_args()
|
||||
|
@ -1,4 +1,5 @@
|
||||
import uuid
|
||||
from datetime import datetime
|
||||
|
||||
from flask_sqlalchemy.pagination import Pagination
|
||||
from sqlalchemy import and_, or_
|
||||
@ -49,6 +50,23 @@ class WorkflowAppService:
|
||||
# join with workflow_run and filter by status
|
||||
query = query.filter(WorkflowRun.status == status.value)
|
||||
|
||||
# Add time-based filtering
|
||||
created_at_before = args.get("created_at__before")
|
||||
if created_at_before:
|
||||
try:
|
||||
before_date = datetime.fromisoformat(created_at_before.replace("Z", "+00:00"))
|
||||
query = query.filter(WorkflowAppLog.created_at <= before_date)
|
||||
except ValueError:
|
||||
pass # Ignore invalid date format
|
||||
|
||||
created_at_after = args.get("created_at__after")
|
||||
if created_at_after:
|
||||
try:
|
||||
after_date = datetime.fromisoformat(created_at_after.replace("Z", "+00:00"))
|
||||
query = query.filter(WorkflowAppLog.created_at >= after_date)
|
||||
except ValueError:
|
||||
pass # Ignore invalid date format
|
||||
|
||||
query = query.order_by(WorkflowAppLog.created_at.desc())
|
||||
|
||||
pagination = db.paginate(query, page=args["page"], per_page=args["limit"], error_out=False)
|
||||
|
Loading…
Reference in New Issue
Block a user