Module: Hari::Entity::Repository

Extended by:
ActiveSupport::Concern
Included in:
Hari::Entity
Defined in:
lib/hari/entity/repository.rb

Defined Under Namespace

Modules: ClassMethods

Instance Method Summary collapse

Instance Method Details

#createObject



14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/hari/entity/repository.rb', line 14

def create
  run_callbacks :create do
    fail Hari::ValidationsFailed, self unless valid?

    @id ||= generate_id
    @created_at ||= Time.now
    self.updated_at = Time.now
    persist
  end

  self
end

#create_or_updateObject Also known as: save



6
7
8
9
10
# File 'lib/hari/entity/repository.rb', line 6

def create_or_update
  run_callbacks(:save) { new? ? create : update }.tap do
    @changed_attributes.clear
  end
end

#deleteObject Also known as: destroy



44
45
46
47
48
49
50
51
# File 'lib/hari/entity/repository.rb', line 44

def delete
  run_callbacks :destroy do
    Hari.redis.del id
    @destroyed = true
  end

  self
end

#persistObject



38
39
40
41
42
# File 'lib/hari/entity/repository.rb', line 38

def persist
  source = to_json
  @previously_changed = changes
  Hari.redis.set id, source
end

#updateObject



27
28
29
30
31
32
33
34
35
36
# File 'lib/hari/entity/repository.rb', line 27

def update
  run_callbacks :update do
    fail Hari::ValidationsFailed, self unless valid?

    self.updated_at = Time.now.utc.iso8601
    persist
  end

  self
end