Module: Untied::Consumer::Sync::Backend::Base

Defined in:
lib/untied-consumer-sync/backend/base.rb

Defined Under Namespace

Modules: ClassMethods

Constant Summary collapse

@@instances =
{}

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object



8
9
10
# File 'lib/untied-consumer-sync/backend/base.rb', line 8

def self.included(base)
  base.extend ClassMethods
end

Instance Method Details

#create_model(payload) ⇒ Object

Public: Cria o modelo se o mesmo não existir no banco de dados.

payload - Hash com os dados a serem inseridos.

Retorna True se a operação for bem sucedida e False no caso contrário.



37
38
39
40
41
42
43
44
45
# File 'lib/untied-consumer-sync/backend/base.rb', line 37

def create_model(payload)
  temp_model = (find(payload[@model_data['mappings']['id']]) or
                 @model.unscoped.new)

  # Seta os atributos
  payload.each_pair { |key, value| temp_model.send("#{key.to_s}=", value) } if temp_model.zombie

  temp_model.save
end

#create_zombie(id) ⇒ Object

Public: Cria um modelo zumbie temporário.

id - Inteiro que indentifica o objeto de acordo com a configuração

Retorna o modelo recém criado.



23
24
25
26
27
28
29
30
# File 'lib/untied-consumer-sync/backend/base.rb', line 23

def create_zombie(id)
  zombie = @model.unscoped.new do |z|
    z.send("#{ @model_data['mappings']['id'] }=", id)
  end
  zombie.save(:validate => false)

  zombie
end

#destroy_model(payload) ⇒ Object

Public: Destroi o modelo se o mesmo não existir no banco de dados.

payload - Hash com os dados do modelo.

Retorna True se a operação for bem sucedida e False no caso contrário.



65
66
67
68
69
# File 'lib/untied-consumer-sync/backend/base.rb', line 65

def destroy_model(payload)
  temp_model = find(payload[@model_data['mappings']['id']])

  temp_model.destroy if temp_model
end

#initialize(model_data) ⇒ Object

Public: Lida com a manipulação dos modelos através de payloads.



13
14
15
16
# File 'lib/untied-consumer-sync/backend/base.rb', line 13

def initialize(model_data)
  @model = model_data['name'].constantize
  @model_data = model_data
end

#update_model(payload) ⇒ Object

Public: Atualiza o modelo ou o cria se o mesmo não existir no banco.

payload - Hash com os dados a serem inseridos.

Retorna True se a operação for bem sucedida e False no caso contrário.



52
53
54
55
56
57
58
# File 'lib/untied-consumer-sync/backend/base.rb', line 52

def update_model(payload)
  temp_model = (find(payload[@model_data['mappings']['id']]) or
                 @model.unscoped.new)
  payload.each_pair {|key, value| temp_model.send("#{key.to_s}=", value)}

  temp_model.save
end