Files
gemini-banlancer/internal/db/dialect/sqlite_adapter.go
2025-11-20 12:24:05 +08:00

31 lines
749 B
Go

// Filename: internal/db/sqlite_adapter.go (全新文件 - 最终版)
package dialect
import (
"gorm.io/gorm"
"gorm.io/gorm/clause"
)
type sqliteAdapter struct{}
func NewSQLiteAdapter() DialectAdapter {
return &sqliteAdapter{}
}
func (a *sqliteAdapter) OnConflictUpdateAll(conflictColumns []string, updateColumns []string) clause.Expression {
conflictCols := make([]clause.Column, len(conflictColumns))
for i, col := range conflictColumns {
conflictCols[i] = clause.Column{Name: col}
}
assignments := make(map[string]interface{})
for _, col := range updateColumns {
assignments[col] = gorm.Expr(col + " + excluded." + col)
}
return clause.OnConflict{
Columns: conflictCols,
DoUpdates: clause.Assignments(assignments),
}
}