Class: RailsQuery::Generators::QueryGenerator

Inherits:
Rails::Generators::NamedBase
  • Object
show all
Defined in:
lib/generators/rails_query/query/query_generator.rb

Overview

Generator that creates a provider and queries based on the provided name and query list.

Instance Method Summary collapse

Instance Method Details

#add_queries_to_providerObject



38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/generators/rails_query/query/query_generator.rb', line 38

def add_queries_to_provider
  provider_path = "app/providers/#{file_name}_provider.rb"
  return unless File.exist?(provider_path)

  content = File.read(provider_path)

  pending_queries = queries.reject do |query|
    content.match?(/^\s*query\s+:#{Regexp.escape(query)}\b/)
  end

  return if pending_queries.empty?

  inject_into_file provider_path, after: "include RailsQuery::Adapter\n" do
    pending_queries.map { |query| "\n  query :#{query}\n" }.join
  end
end

#create_provider_directoryObject



13
14
15
# File 'lib/generators/rails_query/query/query_generator.rb', line 13

def create_provider_directory
  empty_directory "app/providers"
end

#create_provider_fileObject



21
22
23
24
# File 'lib/generators/rails_query/query/query_generator.rb', line 21

def create_provider_file
  @provider_module = class_name
  template "provider.rb.tt", "app/providers/#{file_name}_provider.rb"
end

#create_queries_directoryObject



17
18
19
# File 'lib/generators/rails_query/query/query_generator.rb', line 17

def create_queries_directory
  empty_directory "app/providers/#{file_name}/queries"
end

#create_query_filesObject



26
27
28
29
30
31
32
33
34
35
36
# File 'lib/generators/rails_query/query/query_generator.rb', line 26

def create_query_files
  queries.each do |query|
    @query_name = query
    @provider_module = class_name

    template(
      "query.rb.tt",
      "app/providers/#{file_name}/queries/#{query}_query.rb"
    )
  end
end

#show_usageObject



55
56
57
# File 'lib/generators/rails_query/query/query_generator.rb', line 55

def show_usage
  say "\nQueries created successfully!", :green
end