package cmd import ( "fmt" "git.db.org.ai/dborg/internal/client" "git.db.org.ai/dborg/internal/config" "git.db.org.ai/dborg/internal/models" "git.db.org.ai/dborg/internal/utils" "github.com/spf13/cobra" ) var redditCmd = &cobra.Command{ Use: "reddit", Short: "Reddit data retrieval tools", Long: `Retrieve posts, comments, and user information from Reddit`, } var redditSubredditCmd = &cobra.Command{ Use: "subreddit", Short: "Get subreddit data", Long: `Retrieve posts or comments from a subreddit`, } var redditUserCmd = &cobra.Command{ Use: "user", Short: "Get Reddit user data", Long: `Retrieve posts, comments, or profile information for a Reddit user`, } var redditSubredditPostsCmd = &cobra.Command{ Use: "posts [subreddit]", Short: "Get subreddit posts", Long: `Get up to 1000 recent posts from a subreddit`, Args: cobra.ExactArgs(1), RunE: runRedditSubredditPosts, } var redditSubredditCommentsCmd = &cobra.Command{ Use: "comments [subreddit]", Short: "Get subreddit comments", Long: `Get up to 1000 recent comments from a subreddit`, Args: cobra.ExactArgs(1), RunE: runRedditSubredditComments, } var redditUserPostsCmd = &cobra.Command{ Use: "posts [username]", Short: "Get user posts", Long: `Get up to 1000 recent posts from a Reddit user`, Args: cobra.ExactArgs(1), RunE: runRedditUserPosts, } var redditUserCommentsCmd = &cobra.Command{ Use: "comments [username]", Short: "Get user comments", Long: `Get up to 1000 recent comments from a Reddit user`, Args: cobra.ExactArgs(1), RunE: runRedditUserComments, } var redditUserAboutCmd = &cobra.Command{ Use: "about [username]", Short: "Get user profile", Long: `Get profile information for a Reddit user`, Args: cobra.ExactArgs(1), RunE: runRedditUserAbout, } func init() { rootCmd.AddCommand(redditCmd) redditCmd.AddCommand(redditSubredditCmd) redditCmd.AddCommand(redditUserCmd) redditSubredditCmd.AddCommand(redditSubredditPostsCmd) redditSubredditCmd.AddCommand(redditSubredditCommentsCmd) redditUserCmd.AddCommand(redditUserPostsCmd) redditUserCmd.AddCommand(redditUserCommentsCmd) redditUserCmd.AddCommand(redditUserAboutCmd) } func runRedditSubredditPosts(cmd *cobra.Command, args []string) error { cfg := config.New() c, err := client.New(cfg) if err != nil { return err } params := &models.RedditSubredditParams{ Subreddit: args[0], } response, err := c.GetSubredditPosts(params) if err != nil { return err } if response.Error != "" { return fmt.Errorf("API error: %s", response.Error) } return utils.PrintJSON(response) } func runRedditSubredditComments(cmd *cobra.Command, args []string) error { cfg := config.New() c, err := client.New(cfg) if err != nil { return err } params := &models.RedditSubredditParams{ Subreddit: args[0], } response, err := c.GetSubredditComments(params) if err != nil { return err } if response.Error != "" { return fmt.Errorf("API error: %s", response.Error) } return utils.PrintJSON(response) } func runRedditUserPosts(cmd *cobra.Command, args []string) error { cfg := config.New() c, err := client.New(cfg) if err != nil { return err } params := &models.RedditUserParams{ Username: args[0], } response, err := c.GetUserPosts(params) if err != nil { return err } if response.Error != "" { return fmt.Errorf("API error: %s", response.Error) } return utils.PrintJSON(response) } func runRedditUserComments(cmd *cobra.Command, args []string) error { cfg := config.New() c, err := client.New(cfg) if err != nil { return err } params := &models.RedditUserParams{ Username: args[0], } response, err := c.GetUserComments(params) if err != nil { return err } if response.Error != "" { return fmt.Errorf("API error: %s", response.Error) } return utils.PrintJSON(response) } func runRedditUserAbout(cmd *cobra.Command, args []string) error { cfg := config.New() c, err := client.New(cfg) if err != nil { return err } params := &models.RedditUserParams{ Username: args[0], } response, err := c.GetUserAbout(params) if err != nil { return err } if response.Error != "" { return fmt.Errorf("API error: %s", response.Error) } return utils.PrintJSON(response) }