Class: ActiveAdmin::Annotations::ReviewService
- Inherits:
-
Object
- Object
- ActiveAdmin::Annotations::ReviewService
- Defined in:
- app/services/active_admin/annotations/review_service.rb
Class Method Summary collapse
- .advance_to_latest!(subject:, reviewer:, context:, latest_content_revision_version:, context_digest: nil, content_revision_enabled: ContentRevision.enabled_for?(subject)) ⇒ Object
- .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
Class Method Details
.advance_to_latest!(subject:, reviewer:, context:, latest_content_revision_version:, context_digest: nil, content_revision_enabled: ContentRevision.enabled_for?(subject)) ⇒ Object
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 |