Class: RailsAuditLog::Generators::Graphql::InstallGenerator

Inherits:
Rails::Generators::Base
  • Object
show all
Defined in:
lib/generators/rails_audit_log/graphql/install/install_generator.rb

Constant Summary collapse

QUERY_TYPE_PATH =
"app/graphql/types/query_type.rb"
MIXIN =
"RailsAuditLog::Graphql::Queries::AuditLogEntriesQueryMixin"
SCHEMA_PLUGIN =
"RailsAuditLog::Graphql::SchemaPlugin"

Instance Method Summary collapse

Instance Method Details

#inject_mixinObject



16
17
18
19
20
21
22
23
24
25
26
# File 'lib/generators/rails_audit_log/graphql/install/install_generator.rb', line 16

def inject_mixin
  if File.exist?(File.join(destination_root, QUERY_TYPE_PATH))
    inject_into_file QUERY_TYPE_PATH,
      "  include #{MIXIN}\n",
      after: /class\s+\S+\s*<\s*\S+\s*\n/
  else
    say ""
    say "#{QUERY_TYPE_PATH} not found. Add this line manually to your QueryType:", :yellow
    say "  include #{MIXIN}", :green
  end
end

#inject_schema_pluginObject



28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/generators/rails_audit_log/graphql/install/install_generator.rb', line 28

def inject_schema_plugin
  schema_files = Dir.glob(File.join(destination_root, "app/graphql/**/*schema*.rb"))
  if schema_files.any?
    schema_path = schema_files.first.delete_prefix("#{destination_root}/")
    inject_into_file schema_path,
      "  include #{SCHEMA_PLUGIN}\n",
      after: /class\s+\S+\s*<\s*GraphQL::Schema\s*\n/
  else
    say ""
    say "No schema file found. Add this line manually to your GraphQL::Schema subclass:", :yellow
    say "  include #{SCHEMA_PLUGIN}", :green
  end
end


42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/generators/rails_audit_log/graphql/install/install_generator.rb', line 42

def print_next_steps
  say ""
  say "Done! Your GraphQL API now has:", :green
  say "  auditLogEntry(id: ID!): AuditLogEntry"
  say "  auditLogEntries(...): [AuditLogEntry!]!"
  say "  auditLogReify(itemType:, itemId:, at:): AuditLogJson"
  say "  auditLogEntriesCount(...): Int!"
  say ""
  say "SchemaPlugin applies complexity/depth limits and enables dataloader."
  say "Override defaults in an initializer:"
  say "  RailsAuditLog::Graphql.max_complexity = 500"
  say ""
  say "See the README for full documentation."
end