Sha256: a9da5ef779491ed4fcdae0ccb0501386e044bdee631b119be27d85b3fe8a1f7a

Contents?: true

Size: 928 Bytes

Versions: 7

Compression:

Stored size: 928 Bytes

Contents

# This is an internal utility class used to manage the GraphQL types, which are stored in an object dump called 'types.json'.
# The developers might want to use this class to CRUD their GraphQL application types. The scaffold generators will also
# use this class for the same purpose.
class Types

  require 'oj'

  BASIC = ['Int', 'Boolean', 'String', 'Float', 'ID']

  def initialize
    @filename = "#{FileUtils.pwd}/config/types.yml"
    @types = load
  end

  def all
    @types
  end

  def merge type
    @types.merge! type
    save
  end

  def delete type_name
    raise "Type #{type_name} not found" unless @types.keys.include?(type_name)
    @types.delete type_name
    save
  end

  def clear
    @types = {}
    save
  end

  private
  def load
    return {} unless File.exists?(@filename)
    YAML.load_file @filename
  end

  def save
    File.open(@filename, 'w') { |file| file.write(@types.to_yaml)}
  end

end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
surikat-0.3.2 lib/surikat/types.rb
surikat-0.3.1 lib/surikat/types.rb
surikat-0.3.0 lib/surikat/types.rb
surikat-0.2.5 lib/surikat/types.rb
surikat-0.2.4 lib/surikat/types.rb
surikat-0.2.3 lib/surikat/types.rb
surikat-0.2.2 lib/surikat/types.rb