module Geonames::Models::MongoWrapper

Public Class Methods

batch(data) click to toggle source
# File lib/geonames_local/models/mongodb.rb, line 20
def batch(data)
  @regions, @cities = data[:region], data[:city]
  @regions.each { |r| create Region, parse_region(r) }
  @cities.each  { |c| create City, parse_city(c) }
end
clean() click to toggle source
# File lib/geonames_local/models/mongodb.rb, line 26
def clean
  [Nation, Region, City].each(&:delete_all)
end
create(klass, data) click to toggle source
# File lib/geonames_local/models/mongodb.rb, line 30
def create(klass, data)
  # info "#{klass}.new #{data}"
  klass.create! data
rescue => e
  warn "Prob com spot #{e} #{e.backtrace.join("\n")}"
end
nations(data) click to toggle source

Parse Nations

# File lib/geonames_local/models/mongodb.rb, line 46
def nations(data)
  data.each do |row|
    create Nation, parse_nation(row) rescue nil
  end
end
nations_populated?() click to toggle source
# File lib/geonames_local/models/mongodb.rb, line 52
def nations_populated?
  Nation.count > 0
end
parse_city(s) click to toggle source

Parse Cities

# File lib/geonames_local/models/mongodb.rb, line 86
def parse_city(s)
  region = Region.find_by(code: s.region)
  # ---
  # info s.inspect
  info "City: #{s.zip} | #{s.name} / #{region.try(:abbr)}"
  {
    id: s.gid.to_s, code: s.code,
    name_translations: translate(s.name),
    souls: s.pop, geom: [s.lon, s.lat],
    region_id: region.id.to_s, postal: s.zip # tz
  }
end
parse_nation(row) click to toggle source
# File lib/geonames_local/models/mongodb.rb, line 56
def parse_nation(row)
  abbr, iso3, ison, fips, name, capital, area, pop, continent,
  tld, cur_code, cur_name, phone, pos_code, pos_regex,
  langs, gid, neighbours = row.split(/\t/)
  info "Nation: #{name}/#{abbr}"
  # info "#{row}"
  # info "------------------------"
  {
    name_translations: translate(name),
    postal: pos_code, cash: cur_code, gid: gid,
    abbr: abbr, slug: name.downcase, code: iso3, lang: langs
  }
end
parse_region(r) click to toggle source

Parse Regions

# File lib/geonames_local/models/mongodb.rb, line 73
def parse_region(r)
  nation = Nation.find_by(abbr: /#{r.nation}/i)
  info "Region: #{r.name} / #{r.abbr}"
  {
    id: r.gid.to_s, abbr: r.abbr,
    name_translations: translate(r.name),
    nation: nation, code: r.region
  }
end
translate(txt) click to toggle source
# File lib/geonames_local/models/mongodb.rb, line 37
def translate(txt)
  name_i18n = Opt[:locales].reduce({}) do |h, l|
    h.merge(l => txt)
  end
end