37 lines
964 B
Ruby
37 lines
964 B
Ruby
# frozen_string_literal: true
|
|
|
|
module DiscourseAi
|
|
module Admin
|
|
class AiFeaturesController < ::Admin::AdminController
|
|
requires_plugin ::DiscourseAi::PLUGIN_NAME
|
|
|
|
def index
|
|
render json: serialize_features(DiscourseAi::Features.features)
|
|
end
|
|
|
|
def edit
|
|
raise Discourse::InvalidParameters.new(:id) if params[:id].blank?
|
|
render json: serialize_feature(DiscourseAi::Features.find_feature_by_id(params[:id].to_i))
|
|
end
|
|
|
|
private
|
|
|
|
def serialize_features(features)
|
|
features.map { |feature| feature.merge(persona: serialize_persona(feature[:persona])) }
|
|
end
|
|
|
|
def serialize_feature(feature)
|
|
return nil if feature.blank?
|
|
|
|
feature.merge(persona: serialize_persona(feature[:persona]))
|
|
end
|
|
|
|
def serialize_persona(persona)
|
|
return nil if persona.blank?
|
|
|
|
serialize_data(persona, AiFeaturesPersonaSerializer, root: false)
|
|
end
|
|
end
|
|
end
|
|
end
|