Class: Ask::SolidErrors::ClientProxy

Inherits:
BasicObject
Defined in:
lib/ask/solid_errors/client.rb

Overview

Wraps SolidErrors::Error and delegates query methods to it while providing a clean interface for AI agents.

Instance Method Summary collapse

Constructor Details

#initializeClientProxy

Returns a new instance of ClientProxy.



90
91
92
# File 'lib/ask/solid_errors/client.rb', line 90

def initialize
  @model = ::SolidErrors::Error
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(name) ⇒ Object

Delegate all known query methods to the SolidErrors model.



95
96
97
98
99
100
101
102
103
104
105
106
107
# File 'lib/ask/solid_errors/client.rb', line 95

def method_missing(name, ...)
  @model.public_send(name, ...)
rescue ::ActiveRecord::NoDatabaseError => e
  ::Kernel.raise e, "SolidErrors database is not configured. " \
                    "Run `bin/rails solid_errors:install:migrations db:migrate` first."
rescue ::ActiveRecord::StatementInvalid => e
  if e.message.include?("solid_errors")
    ::Kernel.raise e, "SolidErrors table does not exist. " \
                      "Run `bin/rails solid_errors:install:migrations db:migrate` first."
  else
    ::Kernel.raise e
  end
end

Instance Method Details

#occurrence_count(error) ⇒ Object

Return the occurrence count for an error.



129
130
131
132
# File 'lib/ask/solid_errors/client.rb', line 129

def occurrence_count(error)
  error = @model.find(error) unless error.is_a?(::ActiveRecord::Base)
  error.occurrences.count
end

#recent(limit: 10) ⇒ Object

Return the most recent errors.



114
115
116
# File 'lib/ask/solid_errors/client.rb', line 114

def recent(limit: 10)
  @model.order(created_at: :desc).limit(limit)
end

#resolvedObject

Return all resolved errors.



124
125
126
# File 'lib/ask/solid_errors/client.rb', line 124

def resolved
  @model.resolved.order(created_at: :desc)
end

#respond_to_missing?(name, include_private = false) ⇒ Boolean

Returns:

  • (Boolean)


109
110
111
# File 'lib/ask/solid_errors/client.rb', line 109

def respond_to_missing?(name, include_private = false)
  @model.respond_to?(name, include_private) || super
end

#unresolvedObject

Return all unresolved errors.



119
120
121
# File 'lib/ask/solid_errors/client.rb', line 119

def unresolved
  @model.unresolved.order(created_at: :desc)
end