module Synthable
  extend ActiveSupport::Concern

  class_methods do
    def synth_usage
      synth_client&.usage
    end

    def synth_overage?
      synth_usage&.usage&.utilization.to_i >= 100
    end

    def synth_healthy?
      synth_client&.healthy?
    end

    def synth_client
      api_key = ENV.fetch("SYNTH_API_KEY", Setting.synth_api_key)

      return nil unless api_key.present?

      Provider::Synth.new(api_key)
    end
  end

  def synth_client
    self.class.synth_client
  end

  def synth_usage
    self.class.synth_usage
  end

  def synth_overage?
    self.class.synth_overage?
  end
end
