veza/veza-backend-api/cmd/tools/seed/config.go
senke 2eff5a9b10 refactor(backend): split seed tool into domain-specific modules
Extract monolithic seed main.go into separate files per domain:
users, tracks, playlists, chat, analytics, marketplace, social,
content, live, moderation, notifications, and misc. Add config,
fake data helpers, and utility modules. Update Makefile targets.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 23:35:07 +01:00

174 lines
3 KiB
Go

package main
import "flag"
// Config holds all seed volume parameters.
type Config struct {
// Users
TotalUsers int
NormalUsers int
Artists int
Labels int
Moderators int
Admins int
// Content
Tracks int
Albums int
Playlists int
PlaylistMinTracks int
PlaylistMaxTracks int
// Social
Follows int
TrackLikes int
TrackReposts int
Comments int
CommentLikes int
// Chat
Conversations int
Messages int
// Live
PastLiveStreams int
LiveStreams int
// Marketplace
Products int
Orders int
ProductReviews int
// Analytics
PlayEvents int
ProfileViews int
AnalyticsMonths int
// Notifications
Notifications int
// Files
FileEntries int
// Misc
Groups int
SupportTickets int
APIKeys int
Announcements int
Reports int
DataExports int
GearItems int
Courses int
}
// FullConfig returns the full-scale configuration (~1200 users, ~5000 tracks).
func FullConfig() Config {
return Config{
TotalUsers: 1200,
NormalUsers: 1000,
Artists: 150,
Labels: 30,
Moderators: 15,
Admins: 5,
Tracks: 5000,
Albums: 300,
Playlists: 800,
PlaylistMinTracks: 5,
PlaylistMaxTracks: 50,
Follows: 15000,
TrackLikes: 30000,
TrackReposts: 5000,
Comments: 8000,
CommentLikes: 2000,
Conversations: 500,
Messages: 10000,
PastLiveStreams: 200,
LiveStreams: 5,
Products: 400,
Orders: 600,
ProductReviews: 300,
PlayEvents: 100000,
ProfileViews: 20000,
AnalyticsMonths: 6,
Notifications: 15000,
FileEntries: 6000,
Groups: 40,
SupportTickets: 80,
APIKeys: 30,
Announcements: 10,
Reports: 60,
DataExports: 15,
GearItems: 200,
Courses: 25,
}
}
// MinimalConfig returns a reduced configuration for fast dev iteration.
func MinimalConfig() Config {
return Config{
TotalUsers: 50,
NormalUsers: 30,
Artists: 12,
Labels: 3,
Moderators: 2,
Admins: 3,
Tracks: 200,
Albums: 25,
Playlists: 40,
PlaylistMinTracks: 3,
PlaylistMaxTracks: 15,
Follows: 200,
TrackLikes: 500,
TrackReposts: 100,
Comments: 150,
CommentLikes: 50,
Conversations: 20,
Messages: 200,
PastLiveStreams: 10,
LiveStreams: 2,
Products: 30,
Orders: 40,
ProductReviews: 20,
PlayEvents: 2000,
ProfileViews: 400,
AnalyticsMonths: 2,
Notifications: 300,
FileEntries: 250,
Groups: 5,
SupportTickets: 10,
APIKeys: 5,
Announcements: 3,
Reports: 8,
DataExports: 3,
GearItems: 20,
Courses: 5,
}
}
// ParseFlags parses CLI flags and returns the appropriate config.
func ParseFlags() Config {
minimal := flag.Bool("minimal", false, "Use reduced volumes (50 users, 200 tracks) for fast dev")
flag.Parse()
if *minimal {
return MinimalConfig()
}
return FullConfig()
}