Sha256: ad4742c71088bf22d5f1db34dd25766a1c8e343a8a918fe27d73d294d4dcf786
Contents?: true
Size: 1.14 KB
Versions: 24
Compression:
Stored size: 1.14 KB
Contents
# frozen_string_literal: true require_dependency "renalware/ukrdc" module Renalware module UKRDC class TransmissionLog < ApplicationRecord validates :sent_at, presence: true validates :status, presence: true belongs_to :patient, class_name: "Renalware::Patient" enum status: { undefined: 0, error: 1, unsent_no_change_since_last_send: 2, sent: 3, imported: 4 } enum direction: { out: 0, in: 1 } scope :ordered, -> { order(sent_at: :asc) } def self.with_logging(patient, request_uuid, **options) log = new( patient: patient, sent_at: Time.zone.now, request_uuid: request_uuid, **options) yield log if block_given? log.save! rescue StandardError => e log.error << formatted_exception(e) log.status = :error log.save! raise e end def self.formatted_exception(error) [ "#{error.backtrace.first}: #{error.message} (#{error.class})", error.backtrace.drop(1).map { |line| "\t#{line}" } ].join("\n") end end end end
Version data entries
24 entries across 24 versions & 1 rubygems