Module: ActiveVersion::Adapters::Sequel::Versioning::InstanceMethods

Defined in:
lib/active_version/adapters/sequel/versioning.rb

Instance Method Summary collapse

Instance Method Details

#active_version_auditsObject



96
97
98
99
100
101
# File 'lib/active_version/adapters/sequel/versioning.rb', line 96

def active_version_audits
  dataset = active_version_audits_dataset
  return [] unless dataset

  dataset.order(:version).all
end

#active_version_audits_datasetObject



75
76
77
78
79
80
# File 'lib/active_version/adapters/sequel/versioning.rb', line 75

def active_version_audits_dataset
  model = self.class.active_version_config[:audit_model]
  return nil unless model

  model.where(active_version_foreign_key => pk)
end

#active_version_destroy_translation!(locale:) ⇒ Object



144
145
146
147
148
149
150
151
# File 'lib/active_version/adapters/sequel/versioning.rb', line 144

def active_version_destroy_translation!(locale:)
  translation = active_version_translation(locale)
  return false unless translation

  ActiveVersion::Instrumentation.instrument_translation_destroyed(translation, self)
  translation.delete
  true
end

#active_version_foreign_keyObject



54
55
56
# File 'lib/active_version/adapters/sequel/versioning.rb', line 54

def active_version_foreign_key
  self.class.active_version_config[:foreign_key] || :"#{model_name.singularize}_id"
end

#active_version_revisionsObject



89
90
91
92
93
94
# File 'lib/active_version/adapters/sequel/versioning.rb', line 89

def active_version_revisions
  dataset = active_version_revisions_dataset
  return [] unless dataset

  dataset.order(:version).all
end

#active_version_revisions_datasetObject



68
69
70
71
72
73
# File 'lib/active_version/adapters/sequel/versioning.rb', line 68

def active_version_revisions_dataset
  model = self.class.active_version_config[:revision_model]
  return nil unless model

  model.where(active_version_foreign_key => pk)
end

#active_version_set_translation!(locale:, **attrs) ⇒ Object



125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
# File 'lib/active_version/adapters/sequel/versioning.rb', line 125

def active_version_set_translation!(locale:, **attrs)
  locale_value = locale.to_s.downcase
  model = self.class.active_version_config[:translation_model]
  raise ActiveVersion::ConfigurationError, "translation_model is not configured for #{self.class.name}" unless model

  payload = attrs.transform_keys(&:to_sym).slice(*active_version_translation_columns)
  existing = active_version_translation(locale_value)

  if existing
    existing.update(payload)
    ActiveVersion::Instrumentation.instrument_translation_updated(existing, self)
    existing
  else
    created = model.create(payload.merge(active_version_foreign_key => pk, :locale => locale_value))
    ActiveVersion::Instrumentation.instrument_translation_created(created, self)
    created
  end
end

#active_version_tracked_columnsObject



58
59
60
# File 'lib/active_version/adapters/sequel/versioning.rb', line 58

def active_version_tracked_columns
  self.class.active_version_config[:tracked_columns].map(&:to_sym)
end

#active_version_translate(attr, locale:) ⇒ Object



117
118
119
120
121
122
123
# File 'lib/active_version/adapters/sequel/versioning.rb', line 117

def active_version_translate(attr, locale:)
  translation = active_version_translation(locale)
  return self[attr] unless translation

  translated_value = translation[attr]
  (translated_value.nil? || translated_value.to_s.empty?) ? self[attr] : translated_value
end

#active_version_translation(locale) ⇒ Object



110
111
112
113
114
115
# File 'lib/active_version/adapters/sequel/versioning.rb', line 110

def active_version_translation(locale)
  dataset = active_version_translations_dataset
  return nil unless dataset

  dataset.where(locale: locale.to_s.downcase).first
end

#active_version_translation_columnsObject



62
63
64
65
66
# File 'lib/active_version/adapters/sequel/versioning.rb', line 62

def active_version_translation_columns
  columns = self.class.active_version_config[:translation_columns]
  columns = active_version_tracked_columns if columns.nil? || columns.empty?
  columns.map(&:to_sym)
end

#active_version_translationsObject



103
104
105
106
107
108
# File 'lib/active_version/adapters/sequel/versioning.rb', line 103

def active_version_translations
  dataset = active_version_translations_dataset
  return [] unless dataset

  dataset.order(:locale).all
end

#active_version_translations_datasetObject



82
83
84
85
86
87
# File 'lib/active_version/adapters/sequel/versioning.rb', line 82

def active_version_translations_dataset
  model = self.class.active_version_config[:translation_model]
  return nil unless model

  model.where(active_version_foreign_key => pk)
end

#after_createObject



163
164
165
166
# File 'lib/active_version/adapters/sequel/versioning.rb', line 163

def after_create
  super
  active_version_create_revision_and_audit!(:create, previous_snapshot: nil)
end

#after_destroyObject



174
175
176
177
178
179
# File 'lib/active_version/adapters/sequel/versioning.rb', line 174

def after_destroy
  super
  active_version_create_destroy_audit!(@active_version_previous_snapshot)
ensure
  @active_version_previous_snapshot = nil
end

#after_updateObject



168
169
170
171
172
# File 'lib/active_version/adapters/sequel/versioning.rb', line 168

def after_update
  super
  active_version_create_revision_and_audit!(:update, previous_snapshot: @active_version_previous_snapshot)
  @active_version_previous_snapshot = nil
end

#before_destroyObject



158
159
160
161
# File 'lib/active_version/adapters/sequel/versioning.rb', line 158

def before_destroy
  @active_version_previous_snapshot = active_version_snapshot
  super
end

#before_updateObject



153
154
155
156
# File 'lib/active_version/adapters/sequel/versioning.rb', line 153

def before_update
  @active_version_previous_snapshot = active_version_previous_snapshot_from_db
  super
end