This commit is contained in:
@@ -12,5 +12,8 @@ class NicoTagVersionRecorder < VersionRecorder
|
||||
def version_class = NicoTagVersion
|
||||
def version_association = :nico_tag_versions
|
||||
def record_key = :tag
|
||||
def snapshot_attributes = { name: @tag.name, linked_tags: @tag.snapshot_linked_tags.join(' ') }
|
||||
|
||||
def snapshot_attributes
|
||||
{ name: @record.name, linked_tags: @record.snapshot_linked_tags.join(' ') }
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
class PostVersionRecorder
|
||||
class PostVersionRecorder < VersionRecorder
|
||||
def self.record! post:, event_type:, created_by_user:
|
||||
new(post:, event_type:, created_by_user:).record!
|
||||
end
|
||||
@@ -14,12 +14,12 @@ class PostVersionRecorder
|
||||
def record_key = :post
|
||||
|
||||
def snapshot_attributes
|
||||
{ title: @post.title,
|
||||
url: @post.url,
|
||||
thumbnail_base: @post.thumbnail_base,
|
||||
tags: @post.snapshot_tag_names.join(' '),
|
||||
parent: @post.parent,
|
||||
original_created_from: @post.original_created_from,
|
||||
original_created_before: @post.original_created_before }
|
||||
{ title: @record.title,
|
||||
url: @record.url,
|
||||
thumbnail_base: @record.thumbnail_base,
|
||||
tags: @record.snapshot_tag_names.join(' '),
|
||||
parent: @record.parent,
|
||||
original_created_from: @record.original_created_from,
|
||||
original_created_before: @record.original_created_before }
|
||||
end
|
||||
end
|
||||
|
||||
@@ -14,9 +14,9 @@ class TagVersionRecorder < VersionRecorder
|
||||
def record_key = :tag
|
||||
|
||||
def snapshot_attributes
|
||||
{ name: @tag.name,
|
||||
category: @tag.category,
|
||||
aliases: @tag.snapshot_aliases.join(' '),
|
||||
parent_tag_ids: @tag.snapshot_parent_tag_ids.join(' ') }
|
||||
{ name: @record.name,
|
||||
category: @record.category,
|
||||
aliases: @record.snapshot_aliases.join(' '),
|
||||
parent_tag_ids: @record.snapshot_parent_tag_ids.join(' ') }
|
||||
end
|
||||
end
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
class TagVersioning
|
||||
def self.record! tag, event_type:, created_by_user:
|
||||
if tag.nico?
|
||||
NicoTagVersionRecorder.record!(tag:, event_type:, created_by_user:)
|
||||
else
|
||||
TagVersionRecorder.record!(tag:, event_type:, created_by_user:)
|
||||
end
|
||||
end
|
||||
|
||||
def self.record_tag_snapshot! tag, created_by_user:
|
||||
event_type =
|
||||
if tag.nico?
|
||||
tag.nico_tag_versions.exists? ? :update : :create
|
||||
else
|
||||
tag.tag_versions.exists? ? :update : :create
|
||||
end
|
||||
|
||||
record!(tag, event_type:, created_by_user:)
|
||||
end
|
||||
|
||||
def self.record_tag_snapshots! tags, created_by_user:
|
||||
tags.each do |tag|
|
||||
record_tag_snapshot!(tag, created_by_user:)
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -9,7 +9,7 @@ class VersionRecorder
|
||||
validate_event_type!
|
||||
end
|
||||
|
||||
def record! record, event_type:, created_by_user:
|
||||
def record!
|
||||
@record.with_lock do
|
||||
latest = latest_version
|
||||
|
||||
|
||||
Reference in New Issue
Block a user