Class: Sprig::Seed::Entry

Inherits:
Object
  • Object
show all
Defined in:
lib/sprig/seed/entry.rb

Instance Method Summary collapse

Constructor Details

#initialize(klass, attrs, options) ⇒ Entry

Returns a new instance of Entry.



4
5
6
7
8
9
10
# File 'lib/sprig/seed/entry.rb', line 4

def initialize(klass, attrs, options)
  self.klass = klass
  attrs = attrs.to_hash.with_indifferent_access
  self.sprig_id = attrs.delete(:sprig_id) || SecureRandom.uuid
  @attributes = AttributeCollection.new(attrs)
  @options = options
end

Instance Method Details

#before_saveObject



22
23
24
25
26
27
# File 'lib/sprig/seed/entry.rb', line 22

def before_save
  # TODO: make these filters take chains like rails before_filters
  if options[:delete_existing_by]
    klass.delete_all(options[:delete_existing_by] => attributes.find_by_name(options[:delete_existing_by]).value)
  end
end

#dependenciesObject



12
13
14
15
16
# File 'lib/sprig/seed/entry.rb', line 12

def dependencies
  @dependencies ||= attributes.map do |attribute|
    attribute.dependencies
  end.flatten.uniq
end

#dependency_idObject



18
19
20
# File 'lib/sprig/seed/entry.rb', line 18

def dependency_id
  @dependency_id ||= Dependency.for(klass, sprig_id).id
end

#error_log_textObject



49
50
51
# File 'lib/sprig/seed/entry.rb', line 49

def error_log_text
  "There was an error saving #{klass.name} with sprig_id #{sprig_id}."
end

#in_progress_textObject



37
38
39
# File 'lib/sprig/seed/entry.rb', line 37

def in_progress_text
  "Planting #{klass.name} with sprig_id #{sprig_id}"
end

#recordObject



53
54
55
# File 'lib/sprig/seed/entry.rb', line 53

def record
  @record ||= new_or_existing_record
end

#save_recordObject



29
30
31
# File 'lib/sprig/seed/entry.rb', line 29

def save_record
  record.save
end

#save_to_storeObject



33
34
35
# File 'lib/sprig/seed/entry.rb', line 33

def save_to_store
  SprigRecordStore.instance.save(record.orm_record, sprig_id)
end

#success_log_textObject



41
42
43
44
45
46
47
# File 'lib/sprig/seed/entry.rb', line 41

def success_log_text
  if record.existing?
    "Updated"
  else
    "Saved"
  end
end