Module: ActiveVersion::Adapters::Sequel::Versioning::InstanceMethods
- Defined in:
- lib/active_version/adapters/sequel/versioning.rb
Instance Method Summary collapse
- #active_version_audits ⇒ Object
- #active_version_audits_dataset ⇒ Object
- #active_version_destroy_translation!(locale:) ⇒ Object
- #active_version_foreign_key ⇒ Object
- #active_version_revisions ⇒ Object
- #active_version_revisions_dataset ⇒ Object
- #active_version_set_translation!(locale:, **attrs) ⇒ Object
- #active_version_tracked_columns ⇒ Object
- #active_version_translate(attr, locale:) ⇒ Object
- #active_version_translation(locale) ⇒ Object
- #active_version_translation_columns ⇒ Object
- #active_version_translations ⇒ Object
- #active_version_translations_dataset ⇒ Object
- #after_create ⇒ Object
- #after_destroy ⇒ Object
- #after_update ⇒ Object
- #before_destroy ⇒ Object
- #before_update ⇒ Object
Instance Method Details
#active_version_audits ⇒ Object
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_dataset ⇒ Object
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_key ⇒ Object
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_revisions ⇒ Object
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_dataset ⇒ Object
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_columns ⇒ Object
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_columns ⇒ Object
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_translations ⇒ Object
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_dataset ⇒ Object
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_create ⇒ Object
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_destroy ⇒ Object
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_update ⇒ Object
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_destroy ⇒ Object
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_update ⇒ Object
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 |