carddb-rails 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +24 -0
  3. data/LICENSE.txt +21 -0
  4. data/README.md +494 -0
  5. data/lib/carddb/rails/configuration.rb +16 -0
  6. data/lib/carddb/rails/controller_helpers.rb +11 -0
  7. data/lib/carddb/rails/deck_controller_helpers.rb +27 -0
  8. data/lib/carddb/rails/deck_export_service.rb +21 -0
  9. data/lib/carddb/rails/deck_import_service.rb +20 -0
  10. data/lib/carddb/rails/deck_sync_job.rb +15 -0
  11. data/lib/carddb/rails/deck_sync_service.rb +21 -0
  12. data/lib/carddb/rails/graphql/dataloader/dataset_source.rb +37 -0
  13. data/lib/carddb/rails/graphql/dataloader/deck_by_external_ref_source.rb +26 -0
  14. data/lib/carddb/rails/graphql/dataloader/deck_source.rb +26 -0
  15. data/lib/carddb/rails/graphql/dataloader/game_source.rb +30 -0
  16. data/lib/carddb/rails/graphql/dataloader/publisher_source.rb +26 -0
  17. data/lib/carddb/rails/graphql/dataloader/record_source.rb +39 -0
  18. data/lib/carddb/rails/graphql/dataset_loader.rb +41 -0
  19. data/lib/carddb/rails/graphql/deck_loader.rb +51 -0
  20. data/lib/carddb/rails/graphql/game_loader.rb +34 -0
  21. data/lib/carddb/rails/graphql/helpers.rb +220 -0
  22. data/lib/carddb/rails/graphql/publisher_loader.rb +30 -0
  23. data/lib/carddb/rails/graphql/record_loader.rb +43 -0
  24. data/lib/carddb/rails/has_carddb_dataset.rb +89 -0
  25. data/lib/carddb/rails/has_carddb_datasets.rb +105 -0
  26. data/lib/carddb/rails/has_carddb_deck.rb +134 -0
  27. data/lib/carddb/rails/has_carddb_game.rb +84 -0
  28. data/lib/carddb/rails/has_carddb_publisher.rb +75 -0
  29. data/lib/carddb/rails/has_carddb_record.rb +166 -0
  30. data/lib/carddb/rails/railtie.rb +34 -0
  31. data/lib/carddb/rails/resolver.rb +54 -0
  32. data/lib/carddb/rails/test_helper.rb +12 -0
  33. data/lib/carddb/rails/version.rb +7 -0
  34. data/lib/carddb/rails.rb +93 -0
  35. data/lib/carddb-rails.rb +3 -0
  36. data/lib/generators/carddb/install/install_generator.rb +15 -0
  37. data/lib/generators/carddb/install/templates/carddb.rb +23 -0
  38. metadata +142 -0
@@ -0,0 +1,54 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'active_support/core_ext/object/blank'
4
+
5
+ module CardDB
6
+ module Rails
7
+ module Resolver
8
+ module_function
9
+
10
+ def resolve_option(receiver, option)
11
+ case option
12
+ when Symbol
13
+ receiver.public_send(option)
14
+ when Proc
15
+ receiver.instance_exec(&option)
16
+ else
17
+ option
18
+ end
19
+ end
20
+
21
+ def resolve_required_option(receiver, option, name)
22
+ resolved = resolve_option(receiver, option)
23
+ raise ArgumentError, "#{name} is required" if resolved.blank?
24
+
25
+ resolved
26
+ end
27
+
28
+ def resolve_client(receiver, option)
29
+ resolved = resolve_option(receiver, option)
30
+ resolved || CardDB::Rails.client
31
+ end
32
+
33
+ def resolve_graphql_value(graphql_object, option)
34
+ case option
35
+ when Symbol
36
+ graphql_object.object.public_send(option)
37
+ when Proc
38
+ graphql_object.instance_exec(&option)
39
+ else
40
+ option
41
+ end
42
+ end
43
+
44
+ def resolve_graphql_client(graphql_object, option)
45
+ case option
46
+ when Proc
47
+ graphql_object.instance_exec(&option)
48
+ else
49
+ option
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CardDB
4
+ module Rails
5
+ module TestHelper
6
+ def reset_carddb_rails_configuration!
7
+ CardDB.reset_configuration!
8
+ CardDB::Rails.reset_configuration!
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CardDB
4
+ module Rails
5
+ VERSION = '0.1.0'
6
+ end
7
+ end
@@ -0,0 +1,93 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'carddb'
4
+
5
+ require_relative 'rails/version'
6
+ require_relative 'rails/configuration'
7
+ require_relative 'rails/controller_helpers'
8
+ require_relative 'rails/deck_controller_helpers'
9
+ require_relative 'rails/resolver'
10
+ require_relative 'rails/deck_import_service'
11
+ require_relative 'rails/deck_export_service'
12
+ require_relative 'rails/deck_sync_service'
13
+ require_relative 'rails/deck_sync_job'
14
+ require_relative 'rails/has_carddb_record'
15
+ require_relative 'rails/has_carddb_deck'
16
+ require_relative 'rails/has_carddb_game'
17
+ require_relative 'rails/has_carddb_dataset'
18
+ require_relative 'rails/has_carddb_datasets'
19
+ require_relative 'rails/has_carddb_publisher'
20
+ require_relative 'rails/graphql/helpers'
21
+ require_relative 'rails/graphql/dataloader/record_source'
22
+ require_relative 'rails/graphql/dataloader/deck_source'
23
+ require_relative 'rails/graphql/dataloader/deck_by_external_ref_source'
24
+ require_relative 'rails/graphql/dataloader/game_source'
25
+ require_relative 'rails/graphql/dataloader/dataset_source'
26
+ require_relative 'rails/graphql/dataloader/publisher_source'
27
+ require_relative 'rails/graphql/game_loader'
28
+ require_relative 'rails/graphql/deck_loader'
29
+ require_relative 'rails/graphql/dataset_loader'
30
+ require_relative 'rails/graphql/publisher_loader'
31
+ require_relative 'rails/graphql/record_loader'
32
+
33
+ module CardDB
34
+ module Rails
35
+ class << self
36
+ def configuration
37
+ @configuration ||= Configuration.new
38
+ end
39
+
40
+ def configure
41
+ yield(configuration)
42
+ configuration
43
+ end
44
+
45
+ def reset_configuration!
46
+ @configuration = Configuration.new
47
+ end
48
+
49
+ def client
50
+ configuration.client || CardDB.default_client
51
+ end
52
+
53
+ def apply_rails_configuration!(app = ::Rails.application)
54
+ credentials = extract_credentials(app, configuration.credentials_key)
55
+ apply_credentials!(credentials) if credentials
56
+ apply_rails_defaults!
57
+ end
58
+
59
+ private
60
+
61
+ def apply_credentials!(credentials)
62
+ endpoint = credentials[:endpoint] || credentials['endpoint']
63
+
64
+ CardDB.configure do |config|
65
+ config.api_key ||= credentials[:api_key] || credentials['api_key']
66
+ config.publishable_key ||= credentials[:publishable_key] || credentials['publishable_key']
67
+ config.secret_key ||= credentials[:secret_key] || credentials['secret_key']
68
+ config.access_token ||= credentials[:access_token] || credentials['access_token']
69
+ config.endpoint = endpoint if endpoint
70
+ end
71
+ end
72
+
73
+ def apply_rails_defaults!
74
+ CardDB.configure do |config|
75
+ config.cache ||= ::Rails.cache if configuration.use_rails_cache
76
+ config.logger ||= ::Rails.logger if configuration.use_rails_logger
77
+ end
78
+ end
79
+
80
+ def extract_credentials(app, credentials_key)
81
+ credentials = if app.credentials.respond_to?(:dig)
82
+ app.credentials[credentials_key]
83
+ elsif app.credentials.respond_to?(credentials_key)
84
+ app.credentials.public_send(credentials_key)
85
+ end
86
+
87
+ credentials&.to_h || credentials
88
+ end
89
+ end
90
+ end
91
+ end
92
+
93
+ require_relative 'rails/railtie' if defined?(::Rails::Railtie)
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'carddb/rails'
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'rails/generators'
4
+
5
+ module CardDB
6
+ module Generators
7
+ class InstallGenerator < ::Rails::Generators::Base
8
+ source_root ::File.expand_path('templates', __dir__)
9
+
10
+ def copy_initializer
11
+ template 'carddb.rb', 'config/initializers/carddb.rb'
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Configure the CardDB client for this Rails app.
4
+ CardDB.configure do |config|
5
+ credentials = Rails.application.credentials[:carddb] || {}
6
+
7
+ config.api_key = credentials[:api_key] if credentials[:api_key].present?
8
+ config.publishable_key = credentials[:publishable_key] if credentials[:publishable_key].present?
9
+ config.secret_key = credentials[:secret_key] if credentials[:secret_key].present?
10
+ config.access_token = credentials[:access_token] if credentials[:access_token].present?
11
+ config.endpoint = credentials[:endpoint] if credentials[:endpoint].present?
12
+
13
+ config.cache ||= Rails.cache
14
+ config.logger ||= Rails.logger
15
+
16
+ # Optional defaults:
17
+ # config.default_publisher = 'pokemon-company'
18
+ # config.default_game = 'pokemon-tcg'
19
+
20
+ # Optional restrictions:
21
+ # config.allowed_publishers = ['pokemon-company']
22
+ # config.allowed_games = { 'pokemon-company' => ['pokemon-tcg'] }
23
+ end
metadata ADDED
@@ -0,0 +1,142 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: carddb-rails
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - CardDB Team
8
+ bindir: bin
9
+ cert_chain: []
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: activejob
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - ">="
17
+ - !ruby/object:Gem::Version
18
+ version: '7.0'
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - ">="
24
+ - !ruby/object:Gem::Version
25
+ version: '7.0'
26
+ - !ruby/object:Gem::Dependency
27
+ name: carddb
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 0.3.5
33
+ - - "<"
34
+ - !ruby/object:Gem::Version
35
+ version: '1.0'
36
+ type: :runtime
37
+ prerelease: false
38
+ version_requirements: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: 0.3.5
43
+ - - "<"
44
+ - !ruby/object:Gem::Version
45
+ version: '1.0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: graphql-batch
48
+ requirement: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: '0.6'
53
+ type: :runtime
54
+ prerelease: false
55
+ version_requirements: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ version: '0.6'
60
+ - !ruby/object:Gem::Dependency
61
+ name: railties
62
+ requirement: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - ">="
65
+ - !ruby/object:Gem::Version
66
+ version: '7.0'
67
+ type: :runtime
68
+ prerelease: false
69
+ version_requirements: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ version: '7.0'
74
+ description: Rails-specific helpers for CardDB, including model helpers, GraphQL batch
75
+ loaders, and Railtie configuration.
76
+ email:
77
+ - support@carddb.xtda.org
78
+ executables: []
79
+ extensions: []
80
+ extra_rdoc_files: []
81
+ files:
82
+ - CHANGELOG.md
83
+ - LICENSE.txt
84
+ - README.md
85
+ - lib/carddb-rails.rb
86
+ - lib/carddb/rails.rb
87
+ - lib/carddb/rails/configuration.rb
88
+ - lib/carddb/rails/controller_helpers.rb
89
+ - lib/carddb/rails/deck_controller_helpers.rb
90
+ - lib/carddb/rails/deck_export_service.rb
91
+ - lib/carddb/rails/deck_import_service.rb
92
+ - lib/carddb/rails/deck_sync_job.rb
93
+ - lib/carddb/rails/deck_sync_service.rb
94
+ - lib/carddb/rails/graphql/dataloader/dataset_source.rb
95
+ - lib/carddb/rails/graphql/dataloader/deck_by_external_ref_source.rb
96
+ - lib/carddb/rails/graphql/dataloader/deck_source.rb
97
+ - lib/carddb/rails/graphql/dataloader/game_source.rb
98
+ - lib/carddb/rails/graphql/dataloader/publisher_source.rb
99
+ - lib/carddb/rails/graphql/dataloader/record_source.rb
100
+ - lib/carddb/rails/graphql/dataset_loader.rb
101
+ - lib/carddb/rails/graphql/deck_loader.rb
102
+ - lib/carddb/rails/graphql/game_loader.rb
103
+ - lib/carddb/rails/graphql/helpers.rb
104
+ - lib/carddb/rails/graphql/publisher_loader.rb
105
+ - lib/carddb/rails/graphql/record_loader.rb
106
+ - lib/carddb/rails/has_carddb_dataset.rb
107
+ - lib/carddb/rails/has_carddb_datasets.rb
108
+ - lib/carddb/rails/has_carddb_deck.rb
109
+ - lib/carddb/rails/has_carddb_game.rb
110
+ - lib/carddb/rails/has_carddb_publisher.rb
111
+ - lib/carddb/rails/has_carddb_record.rb
112
+ - lib/carddb/rails/railtie.rb
113
+ - lib/carddb/rails/resolver.rb
114
+ - lib/carddb/rails/test_helper.rb
115
+ - lib/carddb/rails/version.rb
116
+ - lib/generators/carddb/install/install_generator.rb
117
+ - lib/generators/carddb/install/templates/carddb.rb
118
+ homepage: https://github.com/carddb/carddb-rails
119
+ licenses:
120
+ - MIT
121
+ metadata:
122
+ source_code_uri: https://github.com/carddb/carddb-rails
123
+ changelog_uri: https://github.com/carddb/carddb-rails/blob/main/CHANGELOG.md
124
+ rubygems_mfa_required: 'true'
125
+ rdoc_options: []
126
+ require_paths:
127
+ - lib
128
+ required_ruby_version: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - ">="
131
+ - !ruby/object:Gem::Version
132
+ version: 3.0.0
133
+ required_rubygems_version: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - ">="
136
+ - !ruby/object:Gem::Version
137
+ version: '0'
138
+ requirements: []
139
+ rubygems_version: 4.0.9
140
+ specification_version: 4
141
+ summary: Rails integration for the CardDB Ruby client
142
+ test_files: []