1
0

settings_index_test.go 925 B

123456789101112131415161718192021222324252627282930
  1. package database
  2. import (
  3. "testing"
  4. "gorm.io/driver/sqlite"
  5. "gorm.io/gorm"
  6. "gorm.io/gorm/logger"
  7. "github.com/mhsanaei/3x-ui/v3/internal/database/model"
  8. )
  9. // settings.key is read on nearly every request and job tick (getSetting
  10. // WHERE key=?); AutoMigrate must create the index so those lookups don't
  11. // full-scan the settings table past the large xrayTemplateConfig blob. gorm
  12. // creates missing indexes on migrate, so this also covers existing DBs.
  13. func TestAutoMigrateCreatesSettingsKeyIndex(t *testing.T) {
  14. db, err := gorm.Open(sqlite.Open(":memory:"), &gorm.Config{
  15. Logger: logger.Default.LogMode(logger.Silent),
  16. })
  17. if err != nil {
  18. t.Fatalf("open sqlite: %v", err)
  19. }
  20. if err := db.AutoMigrate(&model.Setting{}); err != nil {
  21. t.Fatalf("automigrate: %v", err)
  22. }
  23. if !db.Migrator().HasIndex(&model.Setting{}, "idx_settings_key") {
  24. t.Errorf("expected idx_settings_key to exist after AutoMigrate")
  25. }
  26. }