Method: Glib::Json::NewDynamicText#retrieve_local_texts

Defined in:
app/controllers/concerns/glib/json/new_dynamic_text.rb

#retrieve_local_texts(keys) ⇒ Object



60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
# File 'app/controllers/concerns/glib/json/new_dynamic_text.rb', line 60

def retrieve_local_texts(keys)
  translated_texts = {}
  db_keys = []

  redis = Glib::DynamicText::Config.redis
  contents = redis.pipelined do
    keys.each do |key|
      args = @__specs[key].first.args
      options = {
        scope: args.fetch(:scope, 'itinerarybuilder'),
        lang: args.fetch(:lang, 'en')
      }

      scope_key = "#{options[:scope]}.#{options[:lang]}.#{key}"
      redis.get(scope_key)
    end
  end

  keys.each_with_index do |key, index|
    if content = contents[index]
      translated_texts[key] = content
      db_keys << key if content.match(/\{\{image(\d)\}\}/)
    else
      db_keys << key
    end
  end

  if db_keys.size > 0
    texts = Glib::Text.where(key: db_keys)
    texts.each do |text|
      translated_texts[text.key] = text.content
      @__specs_db[text.key] = text
    end
  end

  translated_texts
end