Class: ActiveAdmin::Annotations::ReviewService

Inherits:
Object
  • Object
show all
Defined in:
app/services/active_admin/annotations/review_service.rb

Class Method Summary collapse

Class Method Details

.advance_to_latest!(subject:, reviewer:, context:, latest_content_revision_version:, context_digest: nil, content_revision_enabled: ContentRevision.enabled_for?(subject)) ⇒ Object

Raises:

  • (ArgumentError)


30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'app/services/active_admin/annotations/review_service.rb', line 30

def advance_to_latest!(
  subject:,
  reviewer:,
  context:,
  latest_content_revision_version:, context_digest: nil,
  content_revision_enabled: ContentRevision.enabled_for?(subject)
)
  raise ArgumentError, "content revisions are not enabled for this subject" unless content_revision_enabled

  review = Review.find_by!(subject: subject, reviewer: reviewer)
  context_hash = context.deep_stringify_keys
  digest = context_digest.presence || Context.digest_for(context_hash)
  latest_version = latest_content_revision_version.to_i

  review.update!(
    content_revision_version: latest_version,
    context_json: context_hash,
    context_digest: digest,
    metadata_json: review..to_h.merge("context_stale" => false)
  )
  review
end

.find_or_sync_review!(subject:, reviewer:, context:, context_digest: nil, content_revision_version: 0, latest_content_revision_version: content_revision_version, content_revision_enabled: ContentRevision.enabled_for?(subject)) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'app/services/active_admin/annotations/review_service.rb', line 6

def find_or_sync_review!(
  subject:,
  reviewer:,
  context:,
  context_digest: nil,
  content_revision_version: 0,
  latest_content_revision_version: content_revision_version,
  content_revision_enabled: ContentRevision.enabled_for?(subject)
)
  2.times do |attempt|
    return sync_and_save_review!(
      subject: subject,
      reviewer: reviewer,
      context: context,
      context_digest: context_digest,
      content_revision_version: content_revision_version,
      latest_content_revision_version: latest_content_revision_version,
      content_revision_enabled: content_revision_enabled
    )
  rescue ActiveRecord::RecordNotUnique
    raise if attempt == 1
  end
end