Merge branch 'fix-key-len' of github.com:tbphp/gpt-load into fix-key-len

This commit is contained in:
tbphp
2025-07-25 14:08:33 +08:00
2 changed files with 55 additions and 1 deletions

View File

@@ -6,5 +6,12 @@ import (
func MigrateDatabase(db *gorm.DB) error {
// v1.0.13 修复请求日志数据
return V1_0_13_FixRequestLogs(db)
if err := V1_0_13_FixRequestLogs(db); err != nil {
return err
}
// v1.0.16 增加 key_value 字段长度
if err := V1_0_16_IncreaseKeyValueLength(db); err != nil {
return err
}
return nil
}

View File

@@ -0,0 +1,47 @@
package db
import (
"fmt"
"gorm.io/gorm"
)
// V1_0_16_IncreaseKeyValueLength migrates the key_value column length.
func V1_0_16_IncreaseKeyValueLength(db *gorm.DB) error {
if err := alterColumnType(db, "api_keys", "key_value", "varchar(1024)"); err != nil {
return fmt.Errorf("failed to migrate api_keys table: %w", err)
}
if err := alterColumnType(db, "request_logs", "key_value", "varchar(1024)"); err != nil {
return fmt.Errorf("failed to migrate request_logs table: %w", err)
}
return nil
}
func alterColumnType(db *gorm.DB, tableName, columnName, newType string) error {
var currentType string
switch db.Dialector.Name() {
case "sqlite":
return nil
case "mysql":
err := db.Raw("SELECT COLUMN_TYPE FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = ? AND TABLE_NAME = ? AND COLUMN_NAME = ?",
db.Migrator().CurrentDatabase(), tableName, columnName).Scan(&currentType).Error
if err != nil {
return err
}
if currentType == newType {
return nil
}
return db.Exec(fmt.Sprintf("ALTER TABLE %s MODIFY COLUMN %s %s", tableName, columnName, newType)).Error
case "postgres":
err := db.Raw("SELECT data_type FROM information_schema.columns WHERE table_name = ? AND column_name = ?",
tableName, columnName).Scan(&currentType).Error
if err != nil {
return err
}
return db.Exec(fmt.Sprintf("ALTER TABLE %s ALTER COLUMN %s TYPE %s", tableName, columnName, newType)).Error
default:
return nil
}
}