From 0f89ccf90ab4ef925c565dc41092c27739b1081c Mon Sep 17 00:00:00 2001 From: Kris <2893855659@qq.com> Date: Wed, 13 May 2026 18:05:12 +0800 Subject: [PATCH] =?UTF-8?q?refactor(channels):=20=E7=AE=80=E5=8C=96sqlalch?= =?UTF-8?q?emy=E5=B8=83=E5=B0=94=E5=80=BC=E8=BD=AC=E6=8D=A2=E5=86=99?= =?UTF-8?q?=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 移除冗余的func.cast嵌套调用,直接使用cast方法转换布尔值类型,代码更简洁易读 --- backend/package/yuxi/channels/manager.py | 22 +++++----------------- backend/server/routers/channels_router.py | 17 ++++------------- 2 files changed, 9 insertions(+), 30 deletions(-) diff --git a/backend/package/yuxi/channels/manager.py b/backend/package/yuxi/channels/manager.py index af75876a..85a40cc2 100644 --- a/backend/package/yuxi/channels/manager.py +++ b/backend/package/yuxi/channels/manager.py @@ -5,7 +5,7 @@ import time from collections import defaultdict, deque from typing import Any -from sqlalchemy import func, select +from sqlalchemy import Integer, func, select from yuxi.channels.base import BaseChannelAdapter from yuxi.channels.exceptions import ChannelException @@ -655,16 +655,10 @@ class ChannelManager: ChannelMsgRecord.channel_id, func.count().label("total"), func.sum( - func.cast( - (ChannelMsgRecord.status == "success").cast(func.Integer), - func.Integer, - ) + (ChannelMsgRecord.status == "success").cast(Integer), ).label("success_count"), func.sum( - func.cast( - (ChannelMsgRecord.status == "error").cast(func.Integer), - func.Integer, - ) + (ChannelMsgRecord.status == "error").cast(Integer), ).label("error_count"), ) .where(ChannelMsgRecord.channel_id.in_(channel_ids)) @@ -798,16 +792,10 @@ class ChannelManager: select( func.count().label("total"), func.sum( - func.cast( - (ChannelMsgRecord.status == "success").cast(func.Integer), - func.Integer, - ) + (ChannelMsgRecord.status == "success").cast(Integer), ).label("success_count"), func.sum( - func.cast( - (ChannelMsgRecord.status == "error").cast(func.Integer), - func.Integer, - ) + (ChannelMsgRecord.status == "error").cast(Integer), ).label("error_count"), ).where(ChannelMsgRecord.channel_id == channel_id) ) diff --git a/backend/server/routers/channels_router.py b/backend/server/routers/channels_router.py index 562d7509..ac38a28e 100644 --- a/backend/server/routers/channels_router.py +++ b/backend/server/routers/channels_router.py @@ -240,7 +240,7 @@ async def get_channel_stats( ): from datetime import timedelta - from sqlalchemy import func, select + from sqlalchemy import Integer, func from yuxi.storage.postgres.models_channels import ChannelMsgRecord from yuxi.utils.datetime_utils import utc_now_naive @@ -260,16 +260,10 @@ async def get_channel_stats( stats_base = select( func.count().label("total"), func.sum( - func.cast( - (ChannelMsgRecord.status == "success").cast(func.Integer), - func.Integer, - ) + (ChannelMsgRecord.status == "success").cast(Integer), ).label("success_count"), func.sum( - func.cast( - (ChannelMsgRecord.status == "error").cast(func.Integer), - func.Integer, - ) + (ChannelMsgRecord.status == "error").cast(Integer), ).label("error_count"), func.avg(ChannelMsgRecord.response_time_ms).label("avg_response_ms"), func.percentile_cont(0.5).within_group(ChannelMsgRecord.response_time_ms).label("p50_ms"), @@ -343,10 +337,7 @@ async def get_channel_stats( func.date(ChannelMsgRecord.created_at).label("date"), func.count().label("total"), func.sum( - func.cast( - (ChannelMsgRecord.status == "success").cast(func.Integer), - func.Integer, - ) + (ChannelMsgRecord.status == "success").cast(Integer), ).label("success"), ) .where(