#frozen_string_literal: true

module DiscourseAi::AiBot::Commands
  class CategoriesCommand < Command
    class << self
      def name
        "categories"
      end

      def desc
        "Will list the categories on the current discourse instance, prefer to format with # in front of the category name"
      end

      def parameters
        []
      end
    end

    def result_name
      "results"
    end

    def description_args
      { count: @last_count || 0 }
    end

    def process(_args)
      columns = {
        name: "Name",
        slug: "Slug",
        description: "Description",
        posts_year: "Posts Year",
        posts_month: "Posts Month",
        posts_week: "Posts Week",
        id: "id",
        parent_category_id: "parent_category_id",
      }

      rows = Category.where(read_restricted: false).limit(100).pluck(*columns.keys)
      @last_count = rows.length

      format_results(rows, columns.values)
    end
  end
end
