feat: add hot path indexes for watch list and cache queries

This commit is contained in:
2026-05-20 17:02:24 +02:00
committed by Mikkel Elvers
parent db654c8dee
commit 575a7aa417
2 changed files with 62 additions and 0 deletions

View File

@@ -0,0 +1,40 @@
package database
import (
"database/sql"
"testing"
_ "github.com/mattn/go-sqlite3"
)
func TestRunMigrationsCreatesHotPathIndexes(t *testing.T) {
sqlDB, err := sql.Open("sqlite3", ":memory:")
if err != nil {
t.Fatalf("open sqlite: %v", err)
}
defer sqlDB.Close()
sqlDB.SetMaxOpenConns(1)
if err := RunMigrations(sqlDB); err != nil {
t.Fatalf("RunMigrations: %v", err)
}
for _, indexName := range []string{
"idx_watch_list_entry_user_updated_at",
"idx_watch_list_entry_user_status_updated_at_desc",
"idx_watch_list_entry_status_updated_at_anime_id",
"idx_continue_watching_anime_id",
"idx_jikan_cache_expires_at_datetime",
} {
t.Run(indexName, func(t *testing.T) {
var count int
err := sqlDB.QueryRow(`SELECT COUNT(*) FROM sqlite_master WHERE type = 'index' AND name = ?`, indexName).Scan(&count)
if err != nil {
t.Fatalf("query index: %v", err)
}
if count != 1 {
t.Fatalf("index %s count = %d, want 1", indexName, count)
}
})
}
}