Class: Graphiti::Schema
Instance Attribute Summary collapse
-
#resources ⇒ Object
readonly
Returns the value of attribute resources.
Class Method Summary collapse
Instance Method Summary collapse
- #generate ⇒ Object
-
#initialize(resources) ⇒ Schema
constructor
A new instance of Schema.
Constructor Details
#initialize(resources) ⇒ Schema
Returns a new instance of Schema.
27 28 29 30 31 |
# File 'lib/graphiti/schema.rb', line 27 def initialize(resources) @resources = resources.sort_by(&:name) @remote_resources = @resources.select(&:remote?) @local_resources = @resources - @remote_resources end |
Instance Attribute Details
#resources ⇒ Object (readonly)
Returns the value of attribute resources.
3 4 5 |
# File 'lib/graphiti/schema.rb', line 3 def resources @resources end |
Class Method Details
.generate(resources = nil) ⇒ Object
5 6 7 8 9 10 11 12 |
# File 'lib/graphiti/schema.rb', line 5 def self.generate(resources = nil) # TODO: Maybe handle this in graphiti-rails ::Rails.application.eager_load! if defined?(::Rails) resources ||= Graphiti.resources.reject(&:abstract_class?) resources.reject! { |r| r.name.nil? } new(resources).generate end |
.generate!(resources = nil) ⇒ Object
14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/graphiti/schema.rb', line 14 def self.generate!(resources = nil) schema = generate(resources) if ENV["FORCE_SCHEMA"] != "true" && File.exist?(Graphiti.config.schema_path) old = JSON.parse(File.read(Graphiti.config.schema_path)) errors = Graphiti::SchemaDiff.new(old, schema).compare return errors if errors.any? end FileUtils.mkdir_p(Graphiti.config.schema_path.to_s.gsub("/schema.json", "")) File.write(Graphiti.config.schema_path, JSON.pretty_generate(schema)) [] end |
Instance Method Details
#generate ⇒ Object
33 34 35 36 37 38 39 |
# File 'lib/graphiti/schema.rb', line 33 def generate { resources: generate_resources, endpoints: generate_endpoints, types: generate_types } end |