diff options
Diffstat (limited to 'app/models/account_metadata.rb')
-rw-r--r-- | app/models/account_metadata.rb | 22 |
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) |