[优化] 代码优化

This commit is contained in:
ryan
2026-05-31 20:31:57 +08:00
parent 7ab11154e3
commit 2514e7edc4
5 changed files with 46 additions and 71 deletions
+12 -8
View File
@@ -2,6 +2,7 @@ package model
import ( import (
"errors" "errors"
"openflare/utils"
"regexp" "regexp"
"strings" "strings"
"time" "time"
@@ -56,14 +57,17 @@ type ExternalAccountView struct {
} }
func (source *AuthSource) Normalize() { func (source *AuthSource) Normalize() {
source.Name = strings.TrimSpace(source.Name) source.Type = strings.ToLower(source.Type)
source.Type = strings.TrimSpace(strings.ToLower(source.Type)) utils.TrimStringFields(
source.DisplayName = strings.TrimSpace(source.DisplayName) &source.Name,
source.ClientID = strings.TrimSpace(source.ClientID) &source.Type,
source.ClientSecret = strings.TrimSpace(source.ClientSecret) &source.DisplayName,
source.OpenIDDiscoveryURL = strings.TrimSpace(source.OpenIDDiscoveryURL) &source.ClientID,
source.Scopes = strings.TrimSpace(source.Scopes) &source.ClientSecret,
source.IconURL = strings.TrimSpace(source.IconURL) &source.OpenIDDiscoveryURL,
&source.Scopes,
&source.IconURL,
)
if source.DisplayName == "" { if source.DisplayName == "" {
source.DisplayName = source.Name source.DisplayName = source.Name
} }
-50
View File
@@ -1,50 +0,0 @@
package model
import (
"gorm.io/gorm"
"openflare/common"
"os"
"path"
)
type File struct {
Id int `json:"id"`
Filename string `json:"filename" gorm:"index"`
Description string `json:"description"`
Uploader string `json:"uploader" gorm:"index"`
UploaderId int `json:"uploader_id" gorm:"index"`
Link string `json:"link" gorm:"unique;index"`
UploadTime string `json:"upload_time"`
DownloadCounter int `json:"download_counter"`
}
func GetAllFiles(startIdx int, num int) ([]*File, error) {
var files []*File
var err error
err = DB.Order("id desc").Limit(num).Offset(startIdx).Find(&files).Error
return files, err
}
func SearchFiles(keyword string) (files []*File, err error) {
err = DB.Select([]string{"id", "filename", "description", "uploader", "uploader_id", "link", "upload_time", "download_counter"}).Where(
"filename LIKE ? or uploader LIKE ? or uploader_id = ?", keyword+"%", keyword+"%", keyword).Find(&files).Error
return files, err
}
func (file *File) Insert() error {
var err error
err = DB.Create(file).Error
return err
}
// Delete Make sure link is valid! Because we will use os.Remove to delete it!
func (file *File) Delete() error {
var err error
err = DB.Delete(file).Error
err = os.Remove(path.Join(common.UploadPath, file.Link))
return err
}
func UpdateDownloadCounter(link string) {
DB.Model(&File{}).Where("link = ?", link).UpdateColumn("download_counter", gorm.Expr("download_counter + 1"))
}
+5 -5
View File
@@ -2,10 +2,6 @@ package model
import ( import (
"fmt" "fmt"
"github.com/glebarez/sqlite"
"gorm.io/driver/postgres"
"gorm.io/gorm"
"gorm.io/gorm/schema"
"log/slog" "log/slog"
"openflare/common" "openflare/common"
"openflare/utils/security" "openflare/utils/security"
@@ -13,6 +9,11 @@ import (
"reflect" "reflect"
"strings" "strings"
"sync" "sync"
"github.com/glebarez/sqlite"
"gorm.io/driver/postgres"
"gorm.io/gorm"
"gorm.io/gorm/schema"
) )
var DB *gorm.DB var DB *gorm.DB
@@ -25,7 +26,6 @@ type dbModel struct {
func registeredModels() []any { func registeredModels() []any {
return []any{ return []any{
&File{},
&User{}, &User{},
&AuthSource{}, &AuthSource{},
&ExternalAccount{}, &ExternalAccount{},
+17 -8
View File
@@ -6,6 +6,7 @@ import (
"log/slog" "log/slog"
"openflare/common" "openflare/common"
"openflare/model" "openflare/model"
"openflare/utils"
"strings" "strings"
"time" "time"
@@ -239,16 +240,24 @@ func GetActiveConfigForAgent() (*AgentConfigResponse, error) {
}, nil }, nil
} }
func normalizeApplyLogPayload(payload ApplyLogPayload) ApplyLogPayload {
payload.Result = strings.ToLower(payload.Result)
utils.TrimStringFields(
&payload.NodeID,
&payload.Version,
&payload.Result,
&payload.Message,
&payload.Checksum,
&payload.MainConfigChecksum,
&payload.RouteConfigChecksum,
)
payload.Message = truncateForDatabase(payload.Message, 16000)
return payload
}
func ReportApplyLog(payload ApplyLogPayload) (*model.ApplyLog, error) { func ReportApplyLog(payload ApplyLogPayload) (*model.ApplyLog, error) {
now := time.Now() now := time.Now()
payload.NodeID = strings.TrimSpace(payload.NodeID) payload = normalizeApplyLogPayload(payload)
payload.Version = strings.TrimSpace(payload.Version)
payload.Result = strings.TrimSpace(strings.ToLower(payload.Result))
payload.Message = strings.TrimSpace(payload.Message)
payload.Checksum = strings.TrimSpace(payload.Checksum)
payload.MainConfigChecksum = strings.TrimSpace(payload.MainConfigChecksum)
payload.RouteConfigChecksum = strings.TrimSpace(payload.RouteConfigChecksum)
payload.Message = truncateForDatabase(payload.Message, 16000)
if payload.NodeID == "" { if payload.NodeID == "" {
return nil, errors.New("node_id 不能为空") return nil, errors.New("node_id 不能为空")
} }
+12
View File
@@ -0,0 +1,12 @@
package utils
import "strings"
// TrimStringFields trims leading and trailing spaces from all provided string pointers.
func TrimStringFields(fields ...*string) {
for _, f := range fields {
if f != nil {
*f = strings.TrimSpace(*f)
}
}
}