Class: CardDB::Resources::Rulesets
- Defined in:
- lib/carddb/resources/rulesets.rb
Overview
First-class rulesets resource for deck validation rules.
Instance Attribute Summary
Attributes inherited from Base
Instance Method Summary collapse
- #activate_version(id:) ⇒ Object
- #create(input:) ⇒ Object
- #create_draft(ruleset_id:, input:) ⇒ Object
- #deck_validation_rules(game_id:, ruleset_key:, ruleset_version_id: nil, cache: nil) ⇒ Object
- #get(id, cache: nil) ⇒ Object
- #get_by_key(game_id:, key:, cache: nil) ⇒ Object
- #get_version(id, cache: nil) ⇒ Object
- #import_draft_from_dataset_record(ruleset_id:, input:) ⇒ Object
- #list(game_id:, include_archived: nil, first: nil, after: nil, cache: nil) ⇒ Object
- #list_public(game_id:, first: nil, after: nil, cache: nil) ⇒ Object
- #preview_import(ruleset_id:, input:) ⇒ Object
- #publish_version(id:, input: nil) ⇒ Object
- #update(id:, input:) ⇒ Object
- #update_draft(id:, input:) ⇒ Object
- #validation_impact(ruleset_version_id:, first: nil, cache: nil) ⇒ Object
- #validation_rules(game_id:, ruleset_key:, ruleset_version_id: nil, cache: nil) ⇒ Object
- #versions(ruleset_id:, status: nil, first: nil, after: nil, cache: nil) ⇒ Object
Methods inherited from Base
Constructor Details
This class inherits a constructor from CardDB::Resources::Base
Instance Method Details
#activate_version(id:) ⇒ Object
172 173 174 175 176 177 |
# File 'lib/carddb/resources/rulesets.rb', line 172 def activate_version(id:) config.require_secret_credential!('rulesets.activate_version') data = connection.execute(QueryBuilder.activate_ruleset_version, { id: id }) RulesetVersion.new(data['rulesetVersionActivate'], client: client) end |
#create(input:) ⇒ Object
126 127 128 129 130 131 |
# File 'lib/carddb/resources/rulesets.rb', line 126 def create(input:) config.require_secret_credential!('rulesets.create') data = connection.execute(QueryBuilder.create_ruleset, { input: input }) Ruleset.new(data['rulesetCreate'], client: client) end |
#create_draft(ruleset_id:, input:) ⇒ Object
140 141 142 143 144 145 |
# File 'lib/carddb/resources/rulesets.rb', line 140 def create_draft(ruleset_id:, input:) config.require_secret_credential!('rulesets.create_draft') data = connection.execute(QueryBuilder.create_ruleset_version_draft, { rulesetId: ruleset_id, input: input }) RulesetVersion.new(data['rulesetVersionDraftCreate'], client: client) end |
#deck_validation_rules(game_id:, ruleset_key:, ruleset_version_id: nil, cache: nil) ⇒ Object
97 98 99 100 101 102 103 104 105 |
# File 'lib/carddb/resources/rulesets.rb', line 97 def deck_validation_rules(game_id:, ruleset_key:, ruleset_version_id: nil, cache: nil) variables = build_variables(gameId: game_id, rulesetKey: ruleset_key, rulesetVersionId: ruleset_version_id) key = cache_key('rulesets', 'deck_validation_rules', **variables) with_cache(key, resource: :rulesets, cache: cache) do data = connection.execute(QueryBuilder.deck_validation_rules, variables) data['deckValidationRules'] ? DeckValidationRules.new(data['deckValidationRules'], client: client) : nil end end |
#get(id, cache: nil) ⇒ Object
46 47 48 49 50 51 52 |
# File 'lib/carddb/resources/rulesets.rb', line 46 def get(id, cache: nil) key = cache_key('rulesets', 'get', id: id) with_cache(key, resource: :rulesets, cache: cache) do data = connection.execute(QueryBuilder.ruleset, { id: id }) data['ruleset'] ? Ruleset.new(data['ruleset'], client: client) : nil end end |
#get_by_key(game_id:, key:, cache: nil) ⇒ Object
54 55 56 57 58 59 60 |
# File 'lib/carddb/resources/rulesets.rb', line 54 def get_by_key(game_id:, key:, cache: nil) cache_key_value = cache_key('rulesets', 'get_by_key', game_id: game_id, key: key) with_cache(cache_key_value, resource: :rulesets, cache: cache) do data = connection.execute(QueryBuilder.ruleset, { gameId: game_id, key: key }) data['ruleset'] ? Ruleset.new(data['ruleset'], client: client) : nil end end |
#get_version(id, cache: nil) ⇒ Object
79 80 81 82 83 84 85 |
# File 'lib/carddb/resources/rulesets.rb', line 79 def get_version(id, cache: nil) key = cache_key('rulesets', 'get_version', id: id) with_cache(key, resource: :rulesets, cache: cache) do data = connection.execute(QueryBuilder.ruleset_version, { id: id }) data['rulesetVersion'] ? RulesetVersion.new(data['rulesetVersion'], client: client) : nil end end |
#import_draft_from_dataset_record(ruleset_id:, input:) ⇒ Object
147 148 149 150 151 152 153 154 155 |
# File 'lib/carddb/resources/rulesets.rb', line 147 def import_draft_from_dataset_record(ruleset_id:, input:) config.require_secret_credential!('rulesets.import_draft_from_dataset_record') data = connection.execute( QueryBuilder.import_ruleset_version_draft_from_dataset_record, { rulesetId: ruleset_id, input: input } ) RulesetVersion.new(data['rulesetVersionDraftImportFromDatasetRecord'], client: client) end |
#list(game_id:, include_archived: nil, first: nil, after: nil, cache: nil) ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/carddb/resources/rulesets.rb', line 7 def list(game_id:, include_archived: nil, first: nil, after: nil, cache: nil) query = QueryBuilder.rulesets( game_id: game_id, include_archived: include_archived, first: first, after: after ) variables = build_variables(gameId: game_id, includeArchived: include_archived, first: first, after: after) key = cache_key('rulesets', 'list', **variables) data = with_cache(key, resource: :rulesets, cache: cache) do connection.execute(query, variables) end Collection.new( data['rulesets'], item_class: Ruleset, next_page_loader: ->(cursor) { list(game_id: game_id, include_archived: include_archived, first: first, after: cursor, cache: cache) }, client: client ) end |
#list_public(game_id:, first: nil, after: nil, cache: nil) ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/carddb/resources/rulesets.rb', line 29 def list_public(game_id:, first: nil, after: nil, cache: nil) query = QueryBuilder.public_rulesets(game_id: game_id, first: first, after: after) variables = build_variables(gameId: game_id, first: first, after: after) key = cache_key('rulesets', 'list_public', **variables) data = with_cache(key, resource: :rulesets, cache: cache) do connection.execute(query, variables) end Collection.new( data['publicRulesets'], item_class: Ruleset, next_page_loader: ->(cursor) { list_public(game_id: game_id, first: first, after: cursor, cache: cache) }, client: client ) end |
#preview_import(ruleset_id:, input:) ⇒ Object
107 108 109 110 111 112 113 |
# File 'lib/carddb/resources/rulesets.rb', line 107 def preview_import(ruleset_id:, input:) data = connection.execute( QueryBuilder.ruleset_version_draft_import_preview, { rulesetId: ruleset_id, input: input } ) RulesetVersionDraftImportPreview.new(data['rulesetVersionDraftImportPreview'], client: client) end |
#publish_version(id:, input: nil) ⇒ Object
164 165 166 167 168 169 170 |
# File 'lib/carddb/resources/rulesets.rb', line 164 def publish_version(id:, input: nil) config.require_secret_credential!('rulesets.publish_version') variables = input.nil? ? { id: id } : { id: id, input: input } data = connection.execute(QueryBuilder.publish_ruleset_version, variables) RulesetVersion.new(data['rulesetVersionPublish'], client: client) end |
#update(id:, input:) ⇒ Object
133 134 135 136 137 138 |
# File 'lib/carddb/resources/rulesets.rb', line 133 def update(id:, input:) config.require_secret_credential!('rulesets.update') data = connection.execute(QueryBuilder.update_ruleset, { id: id, input: input }) Ruleset.new(data['rulesetUpdate'], client: client) end |
#update_draft(id:, input:) ⇒ Object
157 158 159 160 161 162 |
# File 'lib/carddb/resources/rulesets.rb', line 157 def update_draft(id:, input:) config.require_secret_credential!('rulesets.update_draft') data = connection.execute(QueryBuilder.update_ruleset_version_draft, { id: id, input: input }) RulesetVersion.new(data['rulesetVersionDraftUpdate'], client: client) end |
#validation_impact(ruleset_version_id:, first: nil, cache: nil) ⇒ Object
115 116 117 118 119 120 121 122 123 124 |
# File 'lib/carddb/resources/rulesets.rb', line 115 def validation_impact(ruleset_version_id:, first: nil, cache: nil) query = QueryBuilder.ruleset_validation_impact(ruleset_version_id: ruleset_version_id, first: first) variables = build_variables(rulesetVersionId: ruleset_version_id, first: first) key = cache_key('rulesets', 'validation_impact', **variables) with_cache(key, resource: :rulesets, cache: cache) do data = connection.execute(query, variables) RulesetValidationImpact.new(data['rulesetValidationImpact'], client: client) end end |
#validation_rules(game_id:, ruleset_key:, ruleset_version_id: nil, cache: nil) ⇒ Object
87 88 89 90 91 92 93 94 95 |
# File 'lib/carddb/resources/rulesets.rb', line 87 def validation_rules(game_id:, ruleset_key:, ruleset_version_id: nil, cache: nil) variables = build_variables(gameId: game_id, rulesetKey: ruleset_key, rulesetVersionId: ruleset_version_id) key = cache_key('rulesets', 'validation_rules', **variables) with_cache(key, resource: :rulesets, cache: cache) do data = connection.execute(QueryBuilder.ruleset_validation_rules, variables) data['rulesetValidationRules'] end end |
#versions(ruleset_id:, status: nil, first: nil, after: nil, cache: nil) ⇒ Object
62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
# File 'lib/carddb/resources/rulesets.rb', line 62 def versions(ruleset_id:, status: nil, first: nil, after: nil, cache: nil) query = QueryBuilder.ruleset_versions(ruleset_id: ruleset_id, status: status, first: first, after: after) variables = build_variables(rulesetId: ruleset_id, status: status, first: first, after: after) key = cache_key('rulesets', 'versions', **variables) data = with_cache(key, resource: :rulesets, cache: cache) do connection.execute(query, variables) end Collection.new( data['rulesetVersions'], item_class: RulesetVersion, next_page_loader: ->(cursor) { versions(ruleset_id: ruleset_id, status: status, first: first, after: cursor, cache: cache) }, client: client ) end |