about summary refs log tree commit diff
path: root/app/models/account_metadata.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/models/account_metadata.rb')
-rw-r--r--app/models/account_metadata.rb22
1 files changed, 22 insertions, 0 deletions
diff --git a/app/models/account_metadata.rb b/app/models/account_metadata.rb
index 1085d7f14..bb0f7676e 100644
--- a/app/models/account_metadata.rb
+++ b/app/models/account_metadata.rb
@@ -18,6 +18,28 @@ class AccountMetadata < ApplicationRecord
     self[:fields].presence || {}
   end
 
+  def fields_json
+    fields.select { |name, _| name.start_with?('custom:') }
+          .map do |name, value|
+            {
+              '@context': {
+                schema: 'http://schema.org/',
+                name: 'schema:name',
+                value: 'schema:value',
+              },
+              type: 'PropertyValue',
+              name: name,
+              value: value.is_a?(Array) ? value.join("\r\n") : value,
+            }
+          end
+  end
+
+  def cached_fields_json
+    Rails.cache.fetch("custom_metadata:#{account_id}", expires_in: 1.hour) do
+      fields_json
+    end
+  end
+
   class << self
     def create_or_update(fields)
       create(fields).presence || update(fields)