feat: support ClickHouse log database (#5663)
* feat: support ClickHouse log database * feat(log): optimize log deletion process for ClickHouse
This commit is contained in:
+37
-8
@@ -1,15 +1,44 @@
|
||||
package common
|
||||
|
||||
type DatabaseType string
|
||||
|
||||
const (
|
||||
DatabaseTypeMySQL = "mysql"
|
||||
DatabaseTypeSQLite = "sqlite"
|
||||
DatabaseTypePostgreSQL = "postgres"
|
||||
DatabaseTypeMySQL DatabaseType = "mysql"
|
||||
DatabaseTypeSQLite DatabaseType = "sqlite"
|
||||
DatabaseTypePostgreSQL DatabaseType = "postgres"
|
||||
DatabaseTypeClickHouse DatabaseType = "clickhouse"
|
||||
)
|
||||
|
||||
var UsingSQLite = false
|
||||
var UsingPostgreSQL = false
|
||||
var LogSqlType = DatabaseTypeSQLite // Default to SQLite for logging SQL queries
|
||||
var UsingMySQL = false
|
||||
var UsingClickHouse = false
|
||||
var mainDatabaseType = DatabaseTypeSQLite
|
||||
var logDatabaseType = DatabaseTypeSQLite
|
||||
|
||||
func MainDatabaseType() DatabaseType {
|
||||
return mainDatabaseType
|
||||
}
|
||||
|
||||
func LogDatabaseType() DatabaseType {
|
||||
return logDatabaseType
|
||||
}
|
||||
|
||||
func SetMainDatabaseType(databaseType DatabaseType) {
|
||||
mainDatabaseType = databaseType
|
||||
}
|
||||
|
||||
func SetLogDatabaseType(databaseType DatabaseType) {
|
||||
logDatabaseType = databaseType
|
||||
}
|
||||
|
||||
func SetDatabaseTypes(mainType DatabaseType, logType DatabaseType) {
|
||||
mainDatabaseType = mainType
|
||||
logDatabaseType = logType
|
||||
}
|
||||
|
||||
func UsingMainDatabase(databaseType DatabaseType) bool {
|
||||
return mainDatabaseType == databaseType
|
||||
}
|
||||
|
||||
func UsingLogDatabase(databaseType DatabaseType) bool {
|
||||
return logDatabaseType == databaseType
|
||||
}
|
||||
|
||||
var SQLitePath = "one-api.db?_busy_timeout=30000"
|
||||
|
||||
+16
-1
@@ -2,7 +2,9 @@ package common
|
||||
|
||||
import (
|
||||
crand "crypto/rand"
|
||||
"crypto/sha256"
|
||||
"encoding/base64"
|
||||
"encoding/hex"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"html/template"
|
||||
@@ -15,6 +17,7 @@ import (
|
||||
"os"
|
||||
"os/exec"
|
||||
"runtime"
|
||||
"runtime/debug"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
@@ -264,7 +267,19 @@ func GetTimestamp() int64 {
|
||||
|
||||
func GetTimeString() string {
|
||||
now := time.Now().UTC()
|
||||
return fmt.Sprintf("%s%d", now.Format("20060102150405"), now.UnixNano()%1e9)
|
||||
return fmt.Sprintf("%s%09d", now.Format("20060102150405"), now.UnixNano()%1e9)
|
||||
}
|
||||
|
||||
var requestIdPrefix = func() string {
|
||||
if bi, ok := debug.ReadBuildInfo(); ok && bi.Main.Path != "" {
|
||||
h := sha256.Sum256([]byte(bi.Main.Path))
|
||||
return hex.EncodeToString(h[:4])
|
||||
}
|
||||
return GetRandomString(8)
|
||||
}()
|
||||
|
||||
func NewRequestId() string {
|
||||
return GetTimeString() + requestIdPrefix + GetRandomString(8)
|
||||
}
|
||||
|
||||
func Max(a int, b int) int {
|
||||
|
||||
Reference in New Issue
Block a user