Class: ListingIssues::Issue

Inherits:
Data
  • Object
show all
Defined in:
app/services/listing_issues/issue.rb

Overview

Normalized, transient representation of one listing problem produced by a
provider adapter and consumed by Sync. Not persisted — it's
the shape the sync upserts into a ListingIssue row.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(provider:, code:, severity: 'error', title: nil, message: nil, details: {}, fingerprint: nil) ⇒ Issue

Returns a new instance of Issue.

Parameters:

  • provider (String)

    marketplace key ('amazon', 'walmart', …)

  • code (String)

    normalized issue code / type

  • severity (String) (defaults to: 'error')

    'error' (blocks/suppresses) or 'warning' (advisory)

  • title (String, nil) (defaults to: nil)

    short summary

  • message (String, nil) (defaults to: nil)

    full description

  • details (Hash) (defaults to: {})

    raw provider payload kept for review

  • fingerprint (String, nil) (defaults to: nil)

    dedup key within (catalog_item, provider);
    defaults to a stable digest of provider + code + message



19
20
21
22
23
24
# File 'app/services/listing_issues/issue.rb', line 19

def initialize(provider:, code:, severity: 'error', title: nil, message: nil, details: {}, fingerprint: nil)
  provider = provider.to_s
  code = code.to_s
  fingerprint ||= Digest::SHA1.hexdigest([provider, code, message].join('|'))
  super(provider:, code:, severity: severity.to_s, title:, message:, details: details || {}, fingerprint:)
end

Instance Attribute Details

#codeObject (readonly)

Returns the value of attribute code

Returns:

  • (Object)

    the current value of code



10
11
12
# File 'app/services/listing_issues/issue.rb', line 10

def code
  @code
end

#detailsObject (readonly)

Returns the value of attribute details

Returns:

  • (Object)

    the current value of details



10
11
12
# File 'app/services/listing_issues/issue.rb', line 10

def details
  @details
end

#fingerprintObject (readonly)

Returns the value of attribute fingerprint

Returns:

  • (Object)

    the current value of fingerprint



10
11
12
# File 'app/services/listing_issues/issue.rb', line 10

def fingerprint
  @fingerprint
end

#messageObject (readonly)

Returns the value of attribute message

Returns:

  • (Object)

    the current value of message



10
11
12
# File 'app/services/listing_issues/issue.rb', line 10

def message
  @message
end

#providerObject (readonly)

Returns the value of attribute provider

Returns:

  • (Object)

    the current value of provider



10
11
12
# File 'app/services/listing_issues/issue.rb', line 10

def provider
  @provider
end

#severityObject (readonly)

Returns the value of attribute severity

Returns:

  • (Object)

    the current value of severity



10
11
12
# File 'app/services/listing_issues/issue.rb', line 10

def severity
  @severity
end

#titleObject (readonly)

Returns the value of attribute title

Returns:

  • (Object)

    the current value of title



10
11
12
# File 'app/services/listing_issues/issue.rb', line 10

def title
  @title
end