mirror of
https://github.com/discourse/discourse-ai.git
synced 2025-07-01 12:02:16 +00:00
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
|