carddb-rails 0.1.0 → 0.4.5

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d0b3bef990ba77cc06d5bcefe584ce475e8a86a9c760850f85b927477cf2b793
4
- data.tar.gz: bf78dc4b0c53c3e800ed79a229fdda92ae5e4fa26225674a13919fed7333f3da
3
+ metadata.gz: 04d2bbc372771a8a467b0acdd64405796f713dcdd73a80792f460ab10e59df2e
4
+ data.tar.gz: 50b4dd2f97a624d5760b24db4890b1e692e02b7d13fcc2cca7dfc8063abe2afa
5
5
  SHA512:
6
- metadata.gz: 42c1c12ae51af8f11c2d0ed65c0f7972b50bd6ae5980aa17dd4aaae28b36f61e250d6ebd3b5156b6785085cc9364b4c0e322f11996b16247c7fb24cf67ad9a06
7
- data.tar.gz: 377b72303e57d2621bacfa851977be257e6104a3acb2134109f12de04fb33ba58f184f7a05ec024336534e0e59a9a0cbee8e504836268771d3b6ffac73919082
6
+ metadata.gz: a7ea932a1d98b3e8dbae0d49eacc610997ddba99ba3cae09adeff065b813f9ea81f5ae21d39bba52815c6379323fcb9f67ff8ab1c023a08bd28e37cbda524008
7
+ data.tar.gz: fb195d0c67c952ff9730ffe500788fe4befa7a4b431acf8b373fc769e286291d7aa5e1895319d7a5fe92347fb2c4fc91552f408445f1488adad1d0ca7be351a1
data/CHANGELOG.md CHANGED
@@ -14,7 +14,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
14
14
  - `GraphQL::Batch` loaders and `GraphQL::Dataloader` sources for CardDB records, decks, games, datasets, and publishers.
15
15
  - GraphQL field macros for CardDB-backed resources and dataset list relationships.
16
16
  - Explicit deck sync, import, and export service wrappers plus `ActiveJob` support for deck sync jobs.
17
- - Token-aware deck controller helpers for preview, embed, access, and access-token exchange flows.
17
+ - Token-aware deck controller helpers for explicit deck reads and unified deck-token exchange flows.
18
18
  - CI, publish helper script, and gem release metadata aligned with the `carddb` Ruby client.
19
19
 
20
20
  ## [0.1.0] - 2026-06-17
data/README.md CHANGED
@@ -340,22 +340,23 @@ CardDB::Rails::DeckExportService.call(
340
340
 
341
341
  ## Deck Token Controller Helpers
342
342
 
343
- Controllers automatically get token-aware helpers for deck preview/embed/access flows:
343
+ Controllers get helpers for explicit draft/published deck reads and server-side deck token exchange:
344
344
 
345
345
  ```ruby
346
- class DeckPreviewsController < ApplicationController
346
+ class DecksController < ApplicationController
347
347
  def show
348
- @deck = carddb_preview_deck(params[:token])
348
+ @deck = carddb_published_deck(params[:id])
349
349
  end
350
350
  end
351
351
  ```
352
352
 
353
353
  Available helpers:
354
354
 
355
- - `carddb_preview_deck(token)`
356
- - `carddb_embed_deck(token)`
357
- - `carddb_access_deck(token)`
358
- - `carddb_exchange_deck_access_token(input)`
355
+ - `carddb_deck(id, read_state:, version: nil)`
356
+ - `carddb_draft_deck(id)`
357
+ - `carddb_published_deck(id, version: nil)`
358
+ - `carddb_deck_by_external_ref(external_ref, read_state:, version: nil)`
359
+ - `carddb_exchange_deck_token(input)`
359
360
 
360
361
  ## GraphQL Field Helper
361
362
 
@@ -3,24 +3,24 @@
3
3
  module CardDB
4
4
  module Rails
5
5
  module DeckControllerHelpers
6
- def carddb_preview_deck(token, client: carddb_client)
7
- client.decks.preview(token: token)
6
+ def carddb_deck(id, read_state:, version: nil, client: carddb_client)
7
+ client.decks.get(id, read_state: read_state, version: version)
8
8
  end
9
9
 
10
- def carddb_embed_deck(token, client: carddb_client)
11
- client.decks.embed(token: token)
10
+ def carddb_draft_deck(id, client: carddb_client)
11
+ client.decks.get_draft(id)
12
12
  end
13
13
 
14
- def carddb_access_deck(token, client: carddb_client)
15
- client.decks.access(token: token)
14
+ def carddb_published_deck(id, version: nil, client: carddb_client)
15
+ client.decks.get_published(id, version: version)
16
16
  end
17
17
 
18
- def carddb_exchange_deck_access_token(input, client: carddb_client)
19
- client.decks.exchange_access_token(input: input)
18
+ def carddb_deck_by_external_ref(external_ref, read_state:, version: nil, client: carddb_client)
19
+ client.decks.get_by_external_ref(external_ref: external_ref, read_state: read_state, version: version)
20
20
  end
21
21
 
22
- def carddb_exchange_deck_session_token(input, client: carddb_client)
23
- client.decks.exchange_session_token(input: input)
22
+ def carddb_exchange_deck_token(input, client: carddb_client)
23
+ client.decks.exchange_token(input: input)
24
24
  end
25
25
  end
26
26
  end
@@ -5,9 +5,10 @@ module CardDB
5
5
  module GraphQL
6
6
  module Dataloader
7
7
  class DeckByExternalRefSource < ::GraphQL::Dataloader::Source
8
- def initialize(client: nil)
8
+ def initialize(client: nil, read_state: 'DRAFT')
9
9
  super()
10
10
  @client = client
11
+ @read_state = read_state
11
12
  end
12
13
 
13
14
  def fetch(external_refs)
@@ -15,7 +16,7 @@ module CardDB
15
16
 
16
17
  client.batch do |batch|
17
18
  external_refs.each do |external_ref|
18
- batch.decks.get(external_ref: external_ref)
19
+ batch.decks.get_by_external_ref(external_ref: external_ref, read_state: @read_state)
19
20
  end
20
21
  end
21
22
  end
@@ -5,9 +5,10 @@ module CardDB
5
5
  module GraphQL
6
6
  module Dataloader
7
7
  class DeckSource < ::GraphQL::Dataloader::Source
8
- def initialize(client: nil)
8
+ def initialize(client: nil, read_state: 'DRAFT')
9
9
  super()
10
10
  @client = client
11
+ @read_state = read_state
11
12
  end
12
13
 
13
14
  def fetch(ids)
@@ -15,7 +16,7 @@ module CardDB
15
16
 
16
17
  client.batch do |batch|
17
18
  ids.each do |id|
18
- batch.decks.get(id)
19
+ batch.decks.get(id, read_state: @read_state)
19
20
  end
20
21
  end
21
22
  end
@@ -6,9 +6,10 @@ module CardDB
6
6
  module Rails
7
7
  module GraphQL
8
8
  class DeckLoader < ::GraphQL::Batch::Loader
9
- def initialize(client: nil)
9
+ def initialize(client: nil, read_state: 'DRAFT')
10
10
  super()
11
11
  @client = client
12
+ @read_state = read_state
12
13
  end
13
14
 
14
15
  def perform(ids)
@@ -16,7 +17,7 @@ module CardDB
16
17
 
17
18
  results = client.batch do |batch|
18
19
  ids.each do |id|
19
- batch.decks.get(id)
20
+ batch.decks.get(id, read_state: @read_state)
20
21
  end
21
22
  end
22
23
 
@@ -27,9 +28,10 @@ module CardDB
27
28
  end
28
29
 
29
30
  class DeckByExternalRefLoader < ::GraphQL::Batch::Loader
30
- def initialize(client: nil)
31
+ def initialize(client: nil, read_state: 'DRAFT')
31
32
  super()
32
33
  @client = client
34
+ @read_state = read_state
33
35
  end
34
36
 
35
37
  def perform(external_refs)
@@ -37,7 +39,7 @@ module CardDB
37
39
 
38
40
  results = client.batch do |batch|
39
41
  external_refs.each do |external_ref|
40
- batch.decks.get(external_ref: external_ref)
42
+ batch.decks.get_by_external_ref(external_ref: external_ref, read_state: @read_state)
41
43
  end
42
44
  end
43
45
 
@@ -4,7 +4,7 @@ module CardDB
4
4
  module Rails
5
5
  module GraphQL
6
6
  module Helpers
7
- def carddb_deck_field(name, type:, id: nil, external_ref: nil, client: nil, null: true, description: nil)
7
+ def carddb_deck_field(name, type:, id: nil, external_ref: nil, client: nil, null: true, description: nil, read_state: 'DRAFT')
8
8
  field name, type, null: null, description: description
9
9
 
10
10
  define_method(name) do
@@ -13,9 +13,9 @@ module CardDB
13
13
  resolved_external_ref = CardDB::Rails::Resolver.resolve_graphql_value(self, external_ref)
14
14
 
15
15
  if resolved_id && resolved_id != ''
16
- CardDB::Rails::GraphQL::DeckLoader.for(client: resolved_client).load(resolved_id)
16
+ CardDB::Rails::GraphQL::DeckLoader.for(client: resolved_client, read_state: read_state).load(resolved_id)
17
17
  elsif resolved_external_ref && resolved_external_ref != ''
18
- CardDB::Rails::GraphQL::DeckByExternalRefLoader.for(client: resolved_client).load(resolved_external_ref)
18
+ CardDB::Rails::GraphQL::DeckByExternalRefLoader.for(client: resolved_client, read_state: read_state).load(resolved_external_ref)
19
19
  end
20
20
  end
21
21
  end
@@ -193,6 +193,7 @@ module CardDB
193
193
  end
194
194
 
195
195
  def carddb_deck_dataloader_field(name, type:, id: nil, external_ref: nil, client: nil, null: true,
196
+ read_state: 'DRAFT',
196
197
  description: nil)
197
198
  field name, type, null: null, description: description
198
199
 
@@ -204,12 +205,14 @@ module CardDB
204
205
  if resolved_id && resolved_id != ''
205
206
  dataloader.with(
206
207
  CardDB::Rails::GraphQL::Dataloader::DeckSource,
207
- client: resolved_client
208
+ client: resolved_client,
209
+ read_state: read_state
208
210
  ).load(resolved_id)
209
211
  elsif resolved_external_ref && resolved_external_ref != ''
210
212
  dataloader.with(
211
213
  CardDB::Rails::GraphQL::Dataloader::DeckByExternalRefSource,
212
- client: resolved_client
214
+ client: resolved_client,
215
+ read_state: read_state
213
216
  ).load(resolved_external_ref)
214
217
  end
215
218
  end
@@ -13,13 +13,14 @@ module CardDB
13
13
  end
14
14
 
15
15
  class_methods do
16
- def has_carddb_deck(name = :carddb_deck, id: nil, external_ref: nil, client: nil, cache: nil)
16
+ def has_carddb_deck(name = :carddb_deck, id: nil, external_ref: nil, client: nil, cache: nil, read_state: 'DRAFT')
17
17
  name = name.to_sym
18
18
  definition = {
19
19
  id: id,
20
20
  external_ref: external_ref,
21
21
  client: client,
22
- cache: cache
22
+ cache: cache,
23
+ read_state: read_state
23
24
  }.freeze
24
25
 
25
26
  self.carddb_deck_definitions = carddb_deck_definitions.merge(name => definition)
@@ -62,7 +63,7 @@ module CardDB
62
63
  if ids.any?
63
64
  results = client.batch do |batch|
64
65
  ids.each do |id|
65
- batch.decks.get(id)
66
+ batch.decks.get(id, read_state: definition[:read_state])
66
67
  end
67
68
  end
68
69
  decks_by_id = ids.zip(results).to_h
@@ -74,7 +75,7 @@ module CardDB
74
75
  elsif external_refs.any?
75
76
  results = client.batch do |batch|
76
77
  external_refs.each do |external_ref|
77
- batch.decks.get(external_ref: external_ref)
78
+ batch.decks.get_by_external_ref(external_ref: external_ref, read_state: definition[:read_state])
78
79
  end
79
80
  end
80
81
  decks_by_external_ref = external_refs.zip(results).to_h
@@ -101,11 +102,16 @@ module CardDB
101
102
  return carddb_write_deck(name, nil) if id.blank? && external_ref.blank?
102
103
 
103
104
  client = carddb_deck_resolve_client(definition[:client])
104
- deck = if id.present?
105
- client.decks.get(id, cache: definition[:cache])
106
- else
107
- client.decks.get_by_external_ref(external_ref: external_ref, cache: definition[:cache])
108
- end
105
+ deck =
106
+ if id.present?
107
+ client.decks.get(id, read_state: definition[:read_state], cache: definition[:cache])
108
+ else
109
+ client.decks.get_by_external_ref(
110
+ external_ref: external_ref,
111
+ read_state: definition[:read_state],
112
+ cache: definition[:cache]
113
+ )
114
+ end
109
115
  carddb_write_deck(name, deck)
110
116
  end
111
117
 
@@ -2,6 +2,6 @@
2
2
 
3
3
  module CardDB
4
4
  module Rails
5
- VERSION = '0.1.0'
5
+ VERSION = '0.4.5'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: carddb-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.4.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - CardDB Team
@@ -29,7 +29,7 @@ dependencies:
29
29
  requirements:
30
30
  - - ">="
31
31
  - !ruby/object:Gem::Version
32
- version: 0.3.5
32
+ version: 0.4.5
33
33
  - - "<"
34
34
  - !ruby/object:Gem::Version
35
35
  version: '1.0'
@@ -39,7 +39,7 @@ dependencies:
39
39
  requirements:
40
40
  - - ">="
41
41
  - !ruby/object:Gem::Version
42
- version: 0.3.5
42
+ version: 0.4.5
43
43
  - - "<"
44
44
  - !ruby/object:Gem::Version
45
45
  version: '1.0'
@@ -136,7 +136,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
136
136
  - !ruby/object:Gem::Version
137
137
  version: '0'
138
138
  requirements: []
139
- rubygems_version: 4.0.9
139
+ rubygems_version: 4.0.14
140
140
  specification_version: 4
141
141
  summary: Rails integration for the CardDB Ruby client
142
142
  test_files: []