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 +4 -4
- data/CHANGELOG.md +1 -1
- data/README.md +8 -7
- data/lib/carddb/rails/deck_controller_helpers.rb +10 -10
- data/lib/carddb/rails/graphql/dataloader/deck_by_external_ref_source.rb +3 -2
- data/lib/carddb/rails/graphql/dataloader/deck_source.rb +3 -2
- data/lib/carddb/rails/graphql/deck_loader.rb +6 -4
- data/lib/carddb/rails/graphql/helpers.rb +8 -5
- data/lib/carddb/rails/has_carddb_deck.rb +15 -9
- data/lib/carddb/rails/version.rb +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 04d2bbc372771a8a467b0acdd64405796f713dcdd73a80792f460ab10e59df2e
|
|
4
|
+
data.tar.gz: 50b4dd2f97a624d5760b24db4890b1e692e02b7d13fcc2cca7dfc8063abe2afa
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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
|
|
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
|
|
343
|
+
Controllers get helpers for explicit draft/published deck reads and server-side deck token exchange:
|
|
344
344
|
|
|
345
345
|
```ruby
|
|
346
|
-
class
|
|
346
|
+
class DecksController < ApplicationController
|
|
347
347
|
def show
|
|
348
|
-
@deck =
|
|
348
|
+
@deck = carddb_published_deck(params[:id])
|
|
349
349
|
end
|
|
350
350
|
end
|
|
351
351
|
```
|
|
352
352
|
|
|
353
353
|
Available helpers:
|
|
354
354
|
|
|
355
|
-
- `
|
|
356
|
-
- `
|
|
357
|
-
- `
|
|
358
|
-
- `
|
|
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
|
|
7
|
-
client.decks.
|
|
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
|
|
11
|
-
client.decks.
|
|
10
|
+
def carddb_draft_deck(id, client: carddb_client)
|
|
11
|
+
client.decks.get_draft(id)
|
|
12
12
|
end
|
|
13
13
|
|
|
14
|
-
def
|
|
15
|
-
client.decks.
|
|
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
|
|
19
|
-
client.decks.
|
|
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
|
|
23
|
-
client.decks.
|
|
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.
|
|
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.
|
|
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.
|
|
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 =
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
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
|
|
data/lib/carddb/rails/version.rb
CHANGED
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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: []
|