Sha256: 0efcd3a9fa730a9430dae572bfa95dc5422a562b046aeb6dbdf468d2422e6db5
Contents?: true
Size: 976 Bytes
Versions: 1
Compression:
Stored size: 976 Bytes
Contents
module RailsLiveDashboard module Types class JobContent < ActiveRecord::Type::Value PAYLOAD = %i[ job_name job_id params status queue_name started_at finished_at duration db_duration error history ].freeze CONTENT_STRUCT = Struct.new(*PAYLOAD) def type :jsonb end def cast(value) return value if value.is_a?(CONTENT_STRUCT) sanitized = sanitize_input(value) CONTENT_STRUCT.new(**sanitized) end def deserialize(value) decoded = ActiveSupport::JSON.decode(value)&.symbolize_keys sanitized = sanitize_input(decoded) CONTENT_STRUCT.new(**sanitized) end def serialize(value) ActiveSupport::JSON.encode(value) end private def sanitize_input(input) input.slice(*PAYLOAD) end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
rails_live_dashboard-0.2.0 | app/models/rails_live_dashboard/types/job_content.rb |