From 2bd2d73d33b5b1a01f32d195541b20c4412af007 Mon Sep 17 00:00:00 2001 From: wzxjohn Date: Thu, 10 Apr 2025 22:52:17 +0800 Subject: [PATCH 1/3] feat: improve log delete api --- controller/log.go | 2 +- model/log.go | 25 ++++++++++++++++++++++--- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/controller/log.go b/controller/log.go index 20130642..8d67c83e 100644 --- a/controller/log.go +++ b/controller/log.go @@ -196,7 +196,7 @@ func DeleteHistoryLogs(c *gin.Context) { }) return } - count, err := model.DeleteOldLog(targetTimestamp) + count, err := model.DeleteOldLog(c.Request.Context(), targetTimestamp, 100) if err != nil { c.JSON(http.StatusOK, gin.H{ "success": false, diff --git a/model/log.go b/model/log.go index fbae4528..0a891fcd 100644 --- a/model/log.go +++ b/model/log.go @@ -1,6 +1,7 @@ package model import ( + "context" "fmt" "one-api/common" "os" @@ -340,7 +341,25 @@ func SumUsedToken(logType int, startTimestamp int64, endTimestamp int64, modelNa return token } -func DeleteOldLog(targetTimestamp int64) (int64, error) { - result := LOG_DB.Where("created_at < ?", targetTimestamp).Delete(&Log{}) - return result.RowsAffected, result.Error +func DeleteOldLog(ctx context.Context, targetTimestamp int64, limit int) (int64, error) { + var total int64 = 0 + + for { + if nil != ctx.Err() { + return total, ctx.Err() + } + + result := LOG_DB.Where("created_at < ?", targetTimestamp).Limit(limit).Delete(&Log{}) + if nil != result.Error { + return total, result.Error + } + + total += result.RowsAffected + + if result.RowsAffected < int64(limit) { + break + } + } + + return total, nil } From 1a8fd61a981600c9dd7d21d596b0b00a2ce6691e Mon Sep 17 00:00:00 2001 From: wzxjohn Date: Thu, 24 Apr 2025 21:03:55 +0800 Subject: [PATCH 2/3] feat: support empty well known url --- web/src/components/SystemSetting.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/src/components/SystemSetting.js b/web/src/components/SystemSetting.js index 96cd0386..0b683906 100644 --- a/web/src/components/SystemSetting.js +++ b/web/src/components/SystemSetting.js @@ -374,7 +374,7 @@ const SystemSetting = () => { }; const submitOIDCSettings = async () => { - if (inputs['oidc.well_known'] !== '') { + if (inputs['oidc.well_known'] && inputs['oidc.well_known'] !== '') { if ( !inputs['oidc.well_known'].startsWith('http://') && !inputs['oidc.well_known'].startsWith('https://') From 168226ba10d41827f92792cc4dae63acf1e1b7c6 Mon Sep 17 00:00:00 2001 From: wzxjohn Date: Fri, 25 Apr 2025 09:51:01 +0800 Subject: [PATCH 3/3] fix: remove custom header in oidc well known request --- web/src/components/SystemSetting.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/web/src/components/SystemSetting.js b/web/src/components/SystemSetting.js index 0b683906..8364657b 100644 --- a/web/src/components/SystemSetting.js +++ b/web/src/components/SystemSetting.js @@ -19,6 +19,7 @@ import { verifyJSON, } from '../helpers/utils'; import { API } from '../helpers/api'; +import axios from "axios"; const SystemSetting = () => { let [inputs, setInputs] = useState({ @@ -383,7 +384,7 @@ const SystemSetting = () => { return; } try { - const res = await API.get(inputs['oidc.well_known']); + const res = await axios.create().get(inputs['oidc.well_known']); inputs['oidc.authorization_endpoint'] = res.data['authorization_endpoint']; inputs['oidc.token_endpoint'] = res.data['token_endpoint'];