Sha256: 8faca5a30c12f3d8863a2b3123066d42e7fac35d88801653df77f0ba01d64c16

Contents?: true

Size: 989 Bytes

Versions: 3

Compression:

Stored size: 989 Bytes

Contents

require 'json'

module Norikra
  class Stats
    attr_accessor :targets, :queries

    def self.generate(engine)
      Norikra::Stats.new(
        targets: engine.targets.map{|t|
          {
            :name => t.name,
            :fields => engine.typedef_manager.dump_target(t.name),
            :auto_field => t.auto_field
          }
        },
        queries: engine.queries.map(&:dump)
      )
    end

    def initialize(opts={})
      @targets = opts[:targets] || []
      @queries = opts[:queries] || []
    end

    def to_hash
      {targets: @targets, queries: @queries}
    end

    def to_json
      JSON.pretty_generate(self.to_hash)
    end

    def dump(path)
      tmp_path = path + '.tmp'
      File.open(tmp_path, 'w') do |file|
        file.write(self.to_json)
      end
      File.rename(tmp_path, path)
    end

    def self.load(path)
      File.open(path, 'r') do |file|
        self.new(JSON.parse(file.read, symbolize_names: true))
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
norikra-0.1.7-java lib/norikra/stats.rb
norikra-0.1.6-java lib/norikra/stats.rb
norikra-0.1.5-java lib/norikra/stats.rb