From 7dcd707c59f2e45150840bef38d7bf36bc67b1be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9gis=20Hanol?= Date: Wed, 24 Apr 2024 18:52:31 +0200 Subject: [PATCH] PERF: introduce a basic api key serializer For better performances when listing all the API keys. Loading all the "api key scopes" is slow and not required when showing the list of all the api keys. --- app/controllers/admin/api_controller.rb | 8 ++++++-- app/serializers/basic_api_key_serializer.rb | 7 +++++++ 2 files changed, 13 insertions(+), 2 deletions(-) create mode 100644 app/serializers/basic_api_key_serializer.rb diff --git a/app/controllers/admin/api_controller.rb b/app/controllers/admin/api_controller.rb index aaa5929e5aa..f02b2464bcd 100644 --- a/app/controllers/admin/api_controller.rb +++ b/app/controllers/admin/api_controller.rb @@ -13,12 +13,16 @@ class Admin::ApiController < Admin::AdminController keys = ApiKey .where(hidden: false) - .includes(:user, :api_key_scopes) + .includes(:user) .order("revoked_at DESC NULLS FIRST, created_at DESC") .offset(offset) .limit(limit) - render_json_dump(keys: serialize_data(keys, ApiKeySerializer), offset: offset, limit: limit) + render_json_dump( + keys: serialize_data(keys, BasicApiKeySerializer), + offset: offset, + limit: limit, + ) end def show diff --git a/app/serializers/basic_api_key_serializer.rb b/app/serializers/basic_api_key_serializer.rb new file mode 100644 index 00000000000..e8f194eccd3 --- /dev/null +++ b/app/serializers/basic_api_key_serializer.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +class BasicApiKeySerializer < ApplicationSerializer + attributes :id, :truncated_key, :description, :created_at, :last_used_at, :revoked_at + + has_one :user, serializer: BasicUserSerializer, embed: :objects +end