feat: support ClickHouse log database (#5663)
* feat: support ClickHouse log database * feat(log): optimize log deletion process for ClickHouse
This commit is contained in:
@@ -32,9 +32,7 @@ func setupModelListControllerTestDB(t *testing.T) *gorm.DB {
|
||||
initModelListColumnNames(t)
|
||||
|
||||
gin.SetMode(gin.TestMode)
|
||||
common.UsingSQLite = true
|
||||
common.UsingMySQL = false
|
||||
common.UsingPostgreSQL = false
|
||||
common.SetDatabaseTypes(common.DatabaseTypeSQLite, common.DatabaseTypeSQLite)
|
||||
common.RedisEnabled = false
|
||||
|
||||
dsn := fmt.Sprintf("file:%s?mode=memory&cache=shared", strings.ReplaceAll(t.Name(), "/", "_"))
|
||||
@@ -60,16 +58,13 @@ func initModelListColumnNames(t *testing.T) {
|
||||
|
||||
originalIsMasterNode := common.IsMasterNode
|
||||
originalSQLitePath := common.SQLitePath
|
||||
originalUsingSQLite := common.UsingSQLite
|
||||
originalUsingMySQL := common.UsingMySQL
|
||||
originalUsingPostgreSQL := common.UsingPostgreSQL
|
||||
originalMainDatabaseType := common.MainDatabaseType()
|
||||
originalLogDatabaseType := common.LogDatabaseType()
|
||||
originalSQLDSN, hadSQLDSN := os.LookupEnv("SQL_DSN")
|
||||
defer func() {
|
||||
common.IsMasterNode = originalIsMasterNode
|
||||
common.SQLitePath = originalSQLitePath
|
||||
common.UsingSQLite = originalUsingSQLite
|
||||
common.UsingMySQL = originalUsingMySQL
|
||||
common.UsingPostgreSQL = originalUsingPostgreSQL
|
||||
common.SetDatabaseTypes(originalMainDatabaseType, originalLogDatabaseType)
|
||||
if hadSQLDSN {
|
||||
require.NoError(t, os.Setenv("SQL_DSN", originalSQLDSN))
|
||||
} else {
|
||||
@@ -79,9 +74,7 @@ func initModelListColumnNames(t *testing.T) {
|
||||
|
||||
common.IsMasterNode = false
|
||||
common.SQLitePath = fmt.Sprintf("file:%s_init?mode=memory&cache=shared", strings.ReplaceAll(t.Name(), "/", "_"))
|
||||
common.UsingSQLite = false
|
||||
common.UsingMySQL = false
|
||||
common.UsingPostgreSQL = false
|
||||
common.SetDatabaseTypes(common.DatabaseTypeSQLite, common.DatabaseTypeSQLite)
|
||||
require.NoError(t, os.Setenv("SQL_DSN", "local"))
|
||||
|
||||
require.NoError(t, model.InitDB())
|
||||
|
||||
+1
-9
@@ -36,15 +36,7 @@ func GetSetup(c *gin.Context) {
|
||||
return
|
||||
}
|
||||
setup.RootInit = model.RootUserExists()
|
||||
if common.UsingMySQL {
|
||||
setup.DatabaseType = "mysql"
|
||||
}
|
||||
if common.UsingPostgreSQL {
|
||||
setup.DatabaseType = "postgres"
|
||||
}
|
||||
if common.UsingSQLite {
|
||||
setup.DatabaseType = "sqlite"
|
||||
}
|
||||
setup.DatabaseType = string(common.MainDatabaseType())
|
||||
c.JSON(200, gin.H{
|
||||
"success": true,
|
||||
"data": setup,
|
||||
|
||||
+20
-21
@@ -48,21 +48,21 @@ type sqliteColumnInfo struct {
|
||||
}
|
||||
|
||||
type legacyToken struct {
|
||||
Id int `gorm:"primaryKey"`
|
||||
UserId int `gorm:"index"`
|
||||
Key string `gorm:"column:key;type:char(48);uniqueIndex"`
|
||||
Status int `gorm:"default:1"`
|
||||
Name string `gorm:"index"`
|
||||
CreatedTime int64 `gorm:"bigint"`
|
||||
AccessedTime int64 `gorm:"bigint"`
|
||||
ExpiredTime int64 `gorm:"bigint;default:-1"`
|
||||
RemainQuota int `gorm:"default:0"`
|
||||
Id int `gorm:"primaryKey"`
|
||||
UserId int `gorm:"index"`
|
||||
Key string `gorm:"column:key;type:char(48);uniqueIndex"`
|
||||
Status int `gorm:"default:1"`
|
||||
Name string `gorm:"index"`
|
||||
CreatedTime int64 `gorm:"bigint"`
|
||||
AccessedTime int64 `gorm:"bigint"`
|
||||
ExpiredTime int64 `gorm:"bigint;default:-1"`
|
||||
RemainQuota int `gorm:"default:0"`
|
||||
UnlimitedQuota bool
|
||||
ModelLimitsEnabled bool
|
||||
ModelLimits string `gorm:"type:text"`
|
||||
AllowIps *string `gorm:"default:''"`
|
||||
UsedQuota int `gorm:"default:0"`
|
||||
Group string `gorm:"column:group;default:''"`
|
||||
ModelLimits string `gorm:"type:text"`
|
||||
AllowIps *string `gorm:"default:''"`
|
||||
UsedQuota int `gorm:"default:0"`
|
||||
Group string `gorm:"column:group;default:''"`
|
||||
CrossGroupRetry bool
|
||||
DeletedAt gorm.DeletedAt `gorm:"index"`
|
||||
}
|
||||
@@ -75,9 +75,7 @@ func openTokenControllerTestDB(t *testing.T) *gorm.DB {
|
||||
t.Helper()
|
||||
|
||||
gin.SetMode(gin.TestMode)
|
||||
common.UsingSQLite = true
|
||||
common.UsingMySQL = false
|
||||
common.UsingPostgreSQL = false
|
||||
common.SetDatabaseTypes(common.DatabaseTypeSQLite, common.DatabaseTypeSQLite)
|
||||
common.RedisEnabled = false
|
||||
|
||||
dsn := fmt.Sprintf("file:%s?mode=memory&cache=shared", strings.ReplaceAll(t.Name(), "/", "_"))
|
||||
@@ -119,22 +117,23 @@ func openTokenControllerExternalDB(t *testing.T, dialect string, dsn string) (*g
|
||||
|
||||
gin.SetMode(gin.TestMode)
|
||||
common.RedisEnabled = false
|
||||
common.UsingSQLite = false
|
||||
common.UsingMySQL = dialect == "mysql"
|
||||
common.UsingPostgreSQL = dialect == "postgres"
|
||||
|
||||
var (
|
||||
db *gorm.DB
|
||||
err error
|
||||
db *gorm.DB
|
||||
dbType common.DatabaseType
|
||||
err error
|
||||
)
|
||||
switch dialect {
|
||||
case "mysql":
|
||||
dbType = common.DatabaseTypeMySQL
|
||||
db, err = gorm.Open(mysql.Open(dsn), &gorm.Config{})
|
||||
case "postgres":
|
||||
dbType = common.DatabaseTypePostgreSQL
|
||||
db, err = gorm.Open(postgres.Open(dsn), &gorm.Config{})
|
||||
default:
|
||||
t.Fatalf("unsupported dialect %q", dialect)
|
||||
}
|
||||
common.SetDatabaseTypes(dbType, dbType)
|
||||
if err != nil {
|
||||
t.Fatalf("failed to open %s db: %v", dialect, err)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user