// cmd/run-server/seed/seed_tracks.go package seed import ( "fmt" "log" "math/rand" "clapclap/internal/models" "gorm.io/gorm" ) func seedTracks(db *gorm.DB, count int) error { log.Printf("↳ Generating %d randomized tracks tracking version histories...", count) var users []models.User var genres []models.Genre db.Where("username NOT LIKE ?", "user_%").Find(&users) db.Where("parent_id IS NOT NULL AND name != ?", "Testing Audio").Find(&genres) if len(users) == 0 || len(genres) == 0 { return fmt.Errorf("missing dynamic requirements for tracks allocation") } trackNames := []string{"Lost in Hyperdrive", "Midnight Coffee Shop", "Bassline Drop Insanity", "Summer Nostalgia Run", "Neon Rain City"} for i := range count { owner := users[rand.Intn(len(users))] genre := genres[rand.Intn(len(genres))] baseName := fmt.Sprintf("%s #%d", trackNames[rand.Intn(len(trackNames))], rand.Intn(100)) isPub := rand.Float32() > 0.15 trackInstance := models.Track{ Name: baseName, CoverImage: fmt.Sprintf("https://picsum.photos/seed/track_%d/400/400", i), AudioFile: fmt.Sprintf("tracks/public/audios/lineage_%d_v.mp3", i), OwnerID: owner.ID, GenreID: genre.ID, IsPublic: isPub, } if err := db.Create(&trackInstance).Error; err != nil { return err } } return nil }