Sha256: 997979e10d8b949cf7dcb66a808a6ef5639441d01b99dcc92fb70f72f7a9f1a6

Contents?: true

Size: 1.6 KB

Versions: 5

Compression:

Stored size: 1.6 KB

Contents

# frozen_string_literal: true

require "json"
require_relative "base"

module JpLocalGov
  module Data
    class Exporter
      SELECT_SQL = <<-SQL
        SELECT
          code,
          prefecture_code,
          prefecture,
          prefecture_kana,
          city,
          city_kana,
          prefecture_capital
        FROM local_governments
        ORDER BY code
      SQL

      def initialize
        @db = JpLocalGov::Data::Base.new.db
      end

      def execute
        local_governments.each do |prefix, value|
          file_path = File.expand_path("../../data/json/#{prefix}.json", __FILE__)
          File.open(file_path, "wb") do |file|
            file.write JSON.pretty_generate(value)
          end
        end
      end

      private

      def local_governments
        local_governments = {}

        @db.execute(SELECT_SQL) do |row|
          lg_hash = to_hash(row)
          local_governments[lg_hash[:prefecture_code]] ||= {}
          local_governments[lg_hash[:prefecture_code]] =
            local_governments[lg_hash[:prefecture_code]].merge(lg_hash[:code] => lg_hash)
        end

        local_governments
      end

      def to_hash(row)
        local_government = {}
        local_government[:code],
        local_government[:prefecture_code],
        local_government[:prefecture],
        local_government[:prefecture_kana],
        local_government[:city],
        local_government[:city_kana],
        local_government[:prefecture_capital] = row

        local_government[:prefecture_capital] = local_government[:prefecture_capital] == "1"
        local_government
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
jp_local_gov-0.3.1 data/exporter.rb
jp_local_gov-0.3.0 data/exporter.rb
jp_local_gov-0.2.1 data/exporter.rb
jp_local_gov-0.2.0 data/exporter.rb
jp_local_gov-0.1.0 data/exporter.rb