diff --git a/app/controllers/discourse_ai/ai_bot/artifact_key_values_controller.rb b/app/controllers/discourse_ai/ai_bot/artifact_key_values_controller.rb index 4575dba3..a05a7488 100644 --- a/app/controllers/discourse_ai/ai_bot/artifact_key_values_controller.rb +++ b/app/controllers/discourse_ai/ai_bot/artifact_key_values_controller.rb @@ -37,6 +37,11 @@ module DiscourseAi ).as_json, has_more: has_more, total_count: total_count, + users: + key_values + .map { |kv| kv.user } + .uniq + .map { |u| BasicUserSerializer.new(u, root: nil).as_json }, } end diff --git a/app/serializers/ai_artifact_key_value_serializer.rb b/app/serializers/ai_artifact_key_value_serializer.rb index 846477f1..ac7fc780 100644 --- a/app/serializers/ai_artifact_key_value_serializer.rb +++ b/app/serializers/ai_artifact_key_value_serializer.rb @@ -1,9 +1,7 @@ # frozen_string_literal: true class AiArtifactKeyValueSerializer < ApplicationSerializer - attributes :id, :key, :value, :public, :created_at, :updated_at - - has_one :user, serializer: BasicUserSerializer + attributes :id, :key, :value, :public, :user_id, :created_at, :updated_at def include_value? !options[:keys_only] diff --git a/spec/requests/ai_bot/artifact_key_values_controller_spec.rb b/spec/requests/ai_bot/artifact_key_values_controller_spec.rb index 4a51af0a..b27bb47f 100644 --- a/spec/requests/ai_bot/artifact_key_values_controller_spec.rb +++ b/spec/requests/ai_bot/artifact_key_values_controller_spec.rb @@ -63,6 +63,12 @@ RSpec.describe DiscourseAi::AiBot::ArtifactKeyValuesController do ) expect(json["has_more"]).to eq(false) expect(json["total_count"]).to eq(2) + + expect(json["key_values"].map { |kv| kv["user_id"] }).to contain_exactly( + user.id, + other_user.id, + ) + expect(json["users"].map { |u| u["id"] }).to contain_exactly(user.id, other_user.id) end it "returns 404 for private artifact" do