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() }