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 = reqparse.RequestParser()
|
||||||
parser.add_argument("keyword", type=str, location="args")
|
parser.add_argument("keyword", type=str, location="args")
|
||||||
parser.add_argument("status", type=str, choices=["succeeded", "failed", "stopped"], 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("page", type=int_range(1, 99999), default=1, location="args")
|
||||||
parser.add_argument("limit", type=int_range(1, 100), default=20, location="args")
|
parser.add_argument("limit", type=int_range(1, 100), default=20, location="args")
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|||||||
@ -1,4 +1,5 @@
|
|||||||
import uuid
|
import uuid
|
||||||
|
from datetime import datetime
|
||||||
|
|
||||||
from flask_sqlalchemy.pagination import Pagination
|
from flask_sqlalchemy.pagination import Pagination
|
||||||
from sqlalchemy import and_, or_
|
from sqlalchemy import and_, or_
|
||||||
@ -49,6 +50,23 @@ class WorkflowAppService:
|
|||||||
# join with workflow_run and filter by status
|
# join with workflow_run and filter by status
|
||||||
query = query.filter(WorkflowRun.status == status.value)
|
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())
|
query = query.order_by(WorkflowAppLog.created_at.desc())
|
||||||
|
|
||||||
pagination = db.paginate(query, page=args["page"], per_page=args["limit"], error_out=False)
|
pagination = db.paginate(query, page=args["page"], per_page=args["limit"], error_out=False)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user