carddb 0.5.5 → 0.5.8

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: 31ca0cfdc7849f474982657b8e7382fde84e5c975bb913825532e7206b2f1fb6
4
- data.tar.gz: 35b85a566725deffbd9196a2288fad81ab53f4d11fb354ebb518a17fc3d47e81
3
+ metadata.gz: e96ae705e2f67a17c453bdb57a8b291f42839870807ae5dc882a9a6ebb4b7878
4
+ data.tar.gz: 238def5089c381ad922eeea2a27a8ab1f1887a4a5c488b88647031f4f17b3320
5
5
  SHA512:
6
- metadata.gz: 3cb026322ce8f0c0febe2c2e28e632f5fe8a81fc3a556bc8cf6ca094488964870b60e427ea70686069204fd4382aa627ffb4c31ea8fbbc80e7907ff87f682c7f
7
- data.tar.gz: 14220316d0d84aab2886b472cfa1a09bff3b92a5d4054f4d761ca1b83699ad50f0f5c7e867dcf8331d4ddcaa8e809f226025164290c365aab3fb3ebeca8bf53b
6
+ metadata.gz: 9575709cff9a6271a767b6cd9a5753f055e7a4f313aae5ac9a7d415d420653a444f2c84aaf5c087f0a86b2870243439f5847f968f3aa9e087e0b68ce449f5f1b
7
+ data.tar.gz: 7b062b0426bc721eb2d0e4ecfea71acad4290a517bb8e21bc6191fc96388e55ef1782fbaff80770c08f5cb88a9d5465030a3b7018a70ece4e2eda8f1fd4ac6fa
data/.rspec_status CHANGED
@@ -1,209 +1,216 @@
1
1
  example_id | status | run_time |
2
2
  ---------------------------------------------------------- | ------ | --------------- |
3
- ./spec/carddb/batch_spec.rb[1:1] | passed | 0.00908 seconds |
4
- ./spec/carddb/client_spec.rb[1:1:1] | passed | 0.00005 seconds |
5
- ./spec/carddb/client_spec.rb[1:1:2] | passed | 0.00004 seconds |
6
- ./spec/carddb/client_spec.rb[1:1:3] | passed | 0.00004 seconds |
7
- ./spec/carddb/client_spec.rb[1:1:4] | passed | 0.00004 seconds |
8
- ./spec/carddb/client_spec.rb[1:2:1] | passed | 0.00014 seconds |
9
- ./spec/carddb/client_spec.rb[1:2:2] | passed | 0.00017 seconds |
10
- ./spec/carddb/client_spec.rb[1:3:1] | passed | 0.00004 seconds |
3
+ ./spec/carddb/batch_spec.rb[1:1] | passed | 0.01141 seconds |
4
+ ./spec/carddb/batch_spec.rb[1:2] | passed | 0.00525 seconds |
5
+ ./spec/carddb/client_spec.rb[1:1:1] | passed | 0.0001 seconds |
6
+ ./spec/carddb/client_spec.rb[1:1:2] | passed | 0.00006 seconds |
7
+ ./spec/carddb/client_spec.rb[1:1:3] | passed | 0.00006 seconds |
8
+ ./spec/carddb/client_spec.rb[1:1:4] | passed | 0.00003 seconds |
9
+ ./spec/carddb/client_spec.rb[1:2:1] | passed | 0.00005 seconds |
10
+ ./spec/carddb/client_spec.rb[1:2:2] | passed | 0.00027 seconds |
11
+ ./spec/carddb/client_spec.rb[1:3:1] | passed | 0.00005 seconds |
11
12
  ./spec/carddb/client_spec.rb[1:4:1] | passed | 0.00004 seconds |
12
- ./spec/carddb/client_spec.rb[1:5:1] | passed | 0.00003 seconds |
13
- ./spec/carddb/client_spec.rb[1:6:1] | passed | 0.00003 seconds |
14
- ./spec/carddb/client_spec.rb[1:7:1] | passed | 0.00003 seconds |
13
+ ./spec/carddb/client_spec.rb[1:5:1] | passed | 0.00004 seconds |
14
+ ./spec/carddb/client_spec.rb[1:6:1] | passed | 0.00004 seconds |
15
+ ./spec/carddb/client_spec.rb[1:7:1] | passed | 0.00005 seconds |
15
16
  ./spec/carddb/client_spec.rb[1:8:1] | passed | 0.00004 seconds |
16
- ./spec/carddb/client_spec.rb[1:9:1] | passed | 0.00003 seconds |
17
- ./spec/carddb/client_spec.rb[1:10:1] | passed | 0.00003 seconds |
18
- ./spec/carddb/client_spec.rb[1:11:1] | passed | 0.00003 seconds |
17
+ ./spec/carddb/client_spec.rb[1:9:1] | passed | 0.00006 seconds |
18
+ ./spec/carddb/client_spec.rb[1:10:1] | passed | 0.00005 seconds |
19
+ ./spec/carddb/client_spec.rb[1:11:1] | passed | 0.00004 seconds |
19
20
  ./spec/carddb/client_spec.rb[1:12:1] | passed | 0.00004 seconds |
20
- ./spec/carddb/client_spec.rb[1:13:1] | passed | 0.00003 seconds |
21
- ./spec/carddb/client_spec.rb[1:14:1] | passed | 0.00026 seconds |
22
- ./spec/carddb/client_spec.rb[1:14:2] | passed | 0.00398 seconds |
21
+ ./spec/carddb/client_spec.rb[1:13:1] | passed | 0.00004 seconds |
22
+ ./spec/carddb/client_spec.rb[1:14:1] | passed | 0.00037 seconds |
23
+ ./spec/carddb/client_spec.rb[1:14:2] | passed | 0.00472 seconds |
23
24
  ./spec/carddb/collection_spec.rb[1:1:1] | passed | 0.00007 seconds |
24
- ./spec/carddb/collection_spec.rb[2:1:1] | passed | 0.00004 seconds |
25
- ./spec/carddb/collection_spec.rb[3:1:1] | passed | 0.00191 seconds |
26
- ./spec/carddb/collection_spec.rb[3:1:2] | passed | 0.00013 seconds |
27
- ./spec/carddb/collection_spec.rb[3:1:3] | passed | 0.0004 seconds |
28
- ./spec/carddb/collection_spec.rb[3:1:4] | passed | 0.0004 seconds |
29
- ./spec/carddb/collection_spec.rb[3:1:5] | passed | 0.00006 seconds |
30
- ./spec/carddb/collection_spec.rb[4:1:1] | passed | 0.00018 seconds |
31
- ./spec/carddb/collection_spec.rb[4:1:2] | passed | 0.00015 seconds |
32
- ./spec/carddb/collection_spec.rb[4:1:3] | passed | 0.00015 seconds |
33
- ./spec/carddb/collection_spec.rb[4:1:4] | passed | 0.00005 seconds |
25
+ ./spec/carddb/collection_spec.rb[2:1:1] | passed | 0.00003 seconds |
26
+ ./spec/carddb/collection_spec.rb[3:1:1] | passed | 0.00246 seconds |
27
+ ./spec/carddb/collection_spec.rb[3:1:2] | passed | 0.00019 seconds |
28
+ ./spec/carddb/collection_spec.rb[3:1:3] | passed | 0.00051 seconds |
29
+ ./spec/carddb/collection_spec.rb[3:1:4] | passed | 0.00042 seconds |
30
+ ./spec/carddb/collection_spec.rb[3:1:5] | passed | 0.00005 seconds |
31
+ ./spec/carddb/collection_spec.rb[4:1:1] | passed | 0.0002 seconds |
32
+ ./spec/carddb/collection_spec.rb[4:1:2] | passed | 0.00016 seconds |
33
+ ./spec/carddb/collection_spec.rb[4:1:3] | passed | 0.00016 seconds |
34
+ ./spec/carddb/collection_spec.rb[4:1:4] | passed | 0.00004 seconds |
34
35
  ./spec/carddb/configuration_spec.rb[1:1:1] | passed | 0.00005 seconds |
35
36
  ./spec/carddb/configuration_spec.rb[1:1:2] | passed | 0.00003 seconds |
36
- ./spec/carddb/configuration_spec.rb[1:1:3] | passed | 0.00004 seconds |
37
+ ./spec/carddb/configuration_spec.rb[1:1:3] | passed | 0.00003 seconds |
37
38
  ./spec/carddb/configuration_spec.rb[1:1:4] | passed | 0.00004 seconds |
38
- ./spec/carddb/configuration_spec.rb[1:1:5] | passed | 0.00003 seconds |
39
+ ./spec/carddb/configuration_spec.rb[1:1:5] | passed | 0.00008 seconds |
39
40
  ./spec/carddb/configuration_spec.rb[1:1:6] | passed | 0.00003 seconds |
40
- ./spec/carddb/configuration_spec.rb[1:2:1:1] | passed | 0.00003 seconds |
41
- ./spec/carddb/configuration_spec.rb[1:2:2:1] | passed | 0.00004 seconds |
42
- ./spec/carddb/configuration_spec.rb[1:2:2:2] | passed | 0.00004 seconds |
41
+ ./spec/carddb/configuration_spec.rb[1:2:1:1] | passed | 0.00005 seconds |
42
+ ./spec/carddb/configuration_spec.rb[1:2:2:1] | passed | 0.00003 seconds |
43
+ ./spec/carddb/configuration_spec.rb[1:2:2:2] | passed | 0.00006 seconds |
43
44
  ./spec/carddb/configuration_spec.rb[1:3:1:1] | passed | 0.00004 seconds |
44
- ./spec/carddb/configuration_spec.rb[1:3:2:1] | passed | 0.00004 seconds |
45
+ ./spec/carddb/configuration_spec.rb[1:3:2:1] | passed | 0.00003 seconds |
45
46
  ./spec/carddb/configuration_spec.rb[1:3:2:2] | passed | 0.00004 seconds |
46
47
  ./spec/carddb/configuration_spec.rb[1:3:2:3] | passed | 0.00003 seconds |
47
- ./spec/carddb/configuration_spec.rb[1:4:1] | passed | 0.00004 seconds |
48
- ./spec/carddb/configuration_spec.rb[1:4:2] | passed | 0.00002 seconds |
48
+ ./spec/carddb/configuration_spec.rb[1:4:1] | passed | 0.00003 seconds |
49
+ ./spec/carddb/configuration_spec.rb[1:4:2] | passed | 0.00003 seconds |
49
50
  ./spec/carddb/configuration_spec.rb[1:5:1] | passed | 0.00003 seconds |
50
51
  ./spec/carddb/configuration_spec.rb[1:6:1] | passed | 0.00003 seconds |
51
52
  ./spec/carddb/configuration_spec.rb[1:6:2] | passed | 0.00003 seconds |
52
- ./spec/carddb/configuration_spec.rb[1:6:3] | passed | 0.00003 seconds |
53
- ./spec/carddb/configuration_spec.rb[1:7:1] | passed | 0.00004 seconds |
53
+ ./spec/carddb/configuration_spec.rb[1:6:3] | passed | 0.00002 seconds |
54
+ ./spec/carddb/configuration_spec.rb[1:7:1] | passed | 0.00003 seconds |
54
55
  ./spec/carddb/configuration_spec.rb[1:7:2] | passed | 0.00003 seconds |
55
56
  ./spec/carddb/configuration_spec.rb[1:7:3] | passed | 0.00004 seconds |
56
- ./spec/carddb/deck_tokens_spec.rb[1:1:1] | passed | 0.00082 seconds |
57
- ./spec/carddb/deck_tokens_spec.rb[1:2:1] | passed | 0.00067 seconds |
57
+ ./spec/carddb/deck_tokens_spec.rb[1:1:1] | passed | 0.00078 seconds |
58
+ ./spec/carddb/deck_tokens_spec.rb[1:2:1] | passed | 0.00088 seconds |
58
59
  ./spec/carddb/deck_tokens_spec.rb[1:2:2] | passed | 0.00027 seconds |
59
- ./spec/carddb/deck_tokens_spec.rb[1:2:3] | passed | 0.00008 seconds |
60
- ./spec/carddb/filter_builder_spec.rb[1:1:1] | passed | 0.00004 seconds |
61
- ./spec/carddb/filter_builder_spec.rb[1:1:2] | passed | 0.00006 seconds |
60
+ ./spec/carddb/deck_tokens_spec.rb[1:2:3] | passed | 0.00015 seconds |
61
+ ./spec/carddb/filter_builder_spec.rb[1:1:1] | passed | 0.00005 seconds |
62
+ ./spec/carddb/filter_builder_spec.rb[1:1:2] | passed | 0.00003 seconds |
62
63
  ./spec/carddb/filter_builder_spec.rb[1:1:3] | passed | 0.00004 seconds |
63
64
  ./spec/carddb/filter_builder_spec.rb[1:1:4] | passed | 0.00004 seconds |
64
65
  ./spec/carddb/filter_builder_spec.rb[1:1:5] | passed | 0.00003 seconds |
65
66
  ./spec/carddb/filter_builder_spec.rb[1:1:6] | passed | 0.00003 seconds |
66
- ./spec/carddb/filter_builder_spec.rb[1:1:7] | passed | 0.00003 seconds |
67
+ ./spec/carddb/filter_builder_spec.rb[1:1:7] | passed | 0.00004 seconds |
67
68
  ./spec/carddb/filter_builder_spec.rb[1:1:8] | passed | 0.00003 seconds |
68
69
  ./spec/carddb/filter_builder_spec.rb[1:2:1] | passed | 0.00003 seconds |
69
- ./spec/carddb/filter_builder_spec.rb[1:2:2] | passed | 0.00004 seconds |
70
- ./spec/carddb/filter_builder_spec.rb[1:2:3] | passed | 0.00006 seconds |
70
+ ./spec/carddb/filter_builder_spec.rb[1:2:2] | passed | 0.00003 seconds |
71
+ ./spec/carddb/filter_builder_spec.rb[1:2:3] | passed | 0.00003 seconds |
71
72
  ./spec/carddb/filter_builder_spec.rb[1:2:4] | passed | 0.00003 seconds |
72
73
  ./spec/carddb/filter_builder_spec.rb[1:2:5] | passed | 0.00003 seconds |
73
74
  ./spec/carddb/filter_builder_spec.rb[1:2:6] | passed | 0.00003 seconds |
74
- ./spec/carddb/filter_builder_spec.rb[1:2:7] | passed | 0.00039 seconds |
75
+ ./spec/carddb/filter_builder_spec.rb[1:2:7] | passed | 0.00003 seconds |
75
76
  ./spec/carddb/filter_builder_spec.rb[1:2:8] | passed | 0.00003 seconds |
76
- ./spec/carddb/filter_builder_spec.rb[1:2:9] | passed | 0.00003 seconds |
77
+ ./spec/carddb/filter_builder_spec.rb[1:2:9] | passed | 0.00004 seconds |
77
78
  ./spec/carddb/filter_builder_spec.rb[1:2:10] | passed | 0.00003 seconds |
78
79
  ./spec/carddb/filter_builder_spec.rb[1:2:11] | passed | 0.00003 seconds |
79
- ./spec/carddb/filter_builder_spec.rb[1:2:12] | passed | 0.00003 seconds |
80
+ ./spec/carddb/filter_builder_spec.rb[1:2:12] | passed | 0.00002 seconds |
80
81
  ./spec/carddb/filter_builder_spec.rb[1:2:13] | passed | 0.00003 seconds |
81
- ./spec/carddb/query_builder_spec.rb[1:1:1] | passed | 0.00005 seconds |
82
+ ./spec/carddb/query_builder_spec.rb[1:1:1] | passed | 0.00004 seconds |
82
83
  ./spec/carddb/query_builder_spec.rb[1:1:2] | passed | 0.00004 seconds |
83
84
  ./spec/carddb/query_builder_spec.rb[1:1:3] | passed | 0.00004 seconds |
84
- ./spec/carddb/query_builder_spec.rb[1:2:1:1] | passed | 0.00004 seconds |
85
+ ./spec/carddb/query_builder_spec.rb[1:2:1:1] | passed | 0.00005 seconds |
85
86
  ./spec/carddb/query_builder_spec.rb[1:2:2:1] | passed | 0.00004 seconds |
86
- ./spec/carddb/query_builder_spec.rb[1:3:1] | passed | 0.00004 seconds |
87
+ ./spec/carddb/query_builder_spec.rb[1:3:1] | passed | 0.00005 seconds |
87
88
  ./spec/carddb/query_builder_spec.rb[1:3:2] | passed | 0.00004 seconds |
88
- ./spec/carddb/query_builder_spec.rb[1:4:1] | passed | 0.00004 seconds |
89
- ./spec/carddb/query_builder_spec.rb[1:4:2] | passed | 0.00005 seconds |
90
- ./spec/carddb/query_builder_spec.rb[1:5:1] | passed | 0.00003 seconds |
89
+ ./spec/carddb/query_builder_spec.rb[1:4:1] | passed | 0.00005 seconds |
90
+ ./spec/carddb/query_builder_spec.rb[1:4:2] | passed | 0.00004 seconds |
91
+ ./spec/carddb/query_builder_spec.rb[1:5:1] | passed | 0.00004 seconds |
91
92
  ./spec/carddb/query_builder_spec.rb[1:5:2] | passed | 0.00004 seconds |
92
- ./spec/carddb/query_builder_spec.rb[1:5:3] | passed | 0.00004 seconds |
93
- ./spec/carddb/query_builder_spec.rb[1:5:4] | passed | 0.00004 seconds |
94
- ./spec/carddb/query_builder_spec.rb[1:5:5] | passed | 0.00005 seconds |
95
- ./spec/carddb/query_builder_spec.rb[1:5:6] | passed | 0.00004 seconds |
93
+ ./spec/carddb/query_builder_spec.rb[1:5:3] | passed | 0.00512 seconds |
94
+ ./spec/carddb/query_builder_spec.rb[1:5:4] | passed | 0.00008 seconds |
95
+ ./spec/carddb/query_builder_spec.rb[1:5:5] | passed | 0.00004 seconds |
96
+ ./spec/carddb/query_builder_spec.rb[1:5:6] | passed | 0.00006 seconds |
96
97
  ./spec/carddb/query_builder_spec.rb[1:5:7] | passed | 0.00004 seconds |
97
- ./spec/carddb/query_builder_spec.rb[1:5:8] | passed | 0.0001 seconds |
98
- ./spec/carddb/query_builder_spec.rb[1:5:9] | passed | 0.00004 seconds |
99
- ./spec/carddb/query_builder_spec.rb[1:6:1] | passed | 0.00004 seconds |
100
- ./spec/carddb/query_builder_spec.rb[1:6:2] | passed | 0.00004 seconds |
101
- ./spec/carddb/query_builder_spec.rb[1:6:3] | passed | 0.00004 seconds |
102
- ./spec/carddb/query_builder_spec.rb[1:6:4] | passed | 0.00004 seconds |
103
- ./spec/carddb/query_builder_spec.rb[1:6:5] | passed | 0.00005 seconds |
104
- ./spec/carddb/query_builder_spec.rb[1:6:6] | passed | 0.00006 seconds |
105
- ./spec/carddb/query_builder_spec.rb[1:6:7] | passed | 0.00005 seconds |
106
- ./spec/carddb/query_builder_spec.rb[1:6:8] | passed | 0.00004 seconds |
107
- ./spec/carddb/query_builder_spec.rb[1:6:9] | passed | 0.00004 seconds |
108
- ./spec/carddb/query_builder_spec.rb[1:6:10] | passed | 0.00004 seconds |
109
- ./spec/carddb/resources/datasets_spec.rb[1:1:1] | passed | 0.00442 seconds |
110
- ./spec/carddb/resources/datasets_spec.rb[1:1:2] | passed | 0.00388 seconds |
111
- ./spec/carddb/resources/datasets_spec.rb[1:2:1] | passed | 0.0042 seconds |
112
- ./spec/carddb/resources/datasets_spec.rb[1:3:1] | passed | 0.00411 seconds |
113
- ./spec/carddb/resources/datasets_spec.rb[1:3:2] | passed | 0.00388 seconds |
114
- ./spec/carddb/resources/decks_spec.rb[1:1:1] | passed | 0.00412 seconds |
115
- ./spec/carddb/resources/decks_spec.rb[1:1:2] | passed | 0.00402 seconds |
116
- ./spec/carddb/resources/decks_spec.rb[1:1:3] | passed | 0.00396 seconds |
117
- ./spec/carddb/resources/decks_spec.rb[1:1:4] | passed | 0.00405 seconds |
98
+ ./spec/carddb/query_builder_spec.rb[1:5:8] | passed | 0.00004 seconds |
99
+ ./spec/carddb/query_builder_spec.rb[1:5:9] | passed | 0.00003 seconds |
100
+ ./spec/carddb/query_builder_spec.rb[1:5:10] | passed | 0.00005 seconds |
101
+ ./spec/carddb/query_builder_spec.rb[1:6:1] | passed | 0.00006 seconds |
102
+ ./spec/carddb/query_builder_spec.rb[1:6:2] | passed | 0.00003 seconds |
103
+ ./spec/carddb/query_builder_spec.rb[1:6:3] | passed | 0.00006 seconds |
104
+ ./spec/carddb/query_builder_spec.rb[1:6:4] | passed | 0.00043 seconds |
105
+ ./spec/carddb/query_builder_spec.rb[1:6:5] | passed | 0.00004 seconds |
106
+ ./spec/carddb/query_builder_spec.rb[1:6:6] | passed | 0.00007 seconds |
107
+ ./spec/carddb/query_builder_spec.rb[1:6:7] | passed | 0.00007 seconds |
108
+ ./spec/carddb/query_builder_spec.rb[1:6:8] | passed | 0.00006 seconds |
109
+ ./spec/carddb/query_builder_spec.rb[1:6:9] | passed | 0.00003 seconds |
110
+ ./spec/carddb/query_builder_spec.rb[1:6:10] | passed | 0.00003 seconds |
111
+ ./spec/carddb/query_builder_spec.rb[1:6:11] | passed | 0.00005 seconds |
112
+ ./spec/carddb/resources/datasets_spec.rb[1:1:1] | passed | 0.0047 seconds |
113
+ ./spec/carddb/resources/datasets_spec.rb[1:1:2] | passed | 0.00492 seconds |
114
+ ./spec/carddb/resources/datasets_spec.rb[1:2:1] | passed | 0.00422 seconds |
115
+ ./spec/carddb/resources/datasets_spec.rb[1:3:1] | passed | 0.0049 seconds |
116
+ ./spec/carddb/resources/datasets_spec.rb[1:3:2] | passed | 0.00483 seconds |
117
+ ./spec/carddb/resources/decks_spec.rb[1:1:1] | passed | 0.00502 seconds |
118
+ ./spec/carddb/resources/decks_spec.rb[1:1:2] | passed | 0.0051 seconds |
119
+ ./spec/carddb/resources/decks_spec.rb[1:1:3] | passed | 0.00594 seconds |
120
+ ./spec/carddb/resources/decks_spec.rb[1:1:4] | passed | 0.00398 seconds |
121
+ ./spec/carddb/resources/decks_spec.rb[1:1:5] | passed | 0.00442 seconds |
118
122
  ./spec/carddb/resources/decks_spec.rb[1:2:1] | passed | 0.00444 seconds |
119
- ./spec/carddb/resources/decks_spec.rb[1:2:2] | passed | 0.00762 seconds |
120
- ./spec/carddb/resources/decks_spec.rb[1:2:3] | passed | 0.00007 seconds |
121
- ./spec/carddb/resources/decks_spec.rb[1:3:1] | passed | 0.00364 seconds |
122
- ./spec/carddb/resources/decks_spec.rb[1:4:1] | passed | 0.00368 seconds |
123
- ./spec/carddb/resources/decks_spec.rb[1:5:1] | passed | 0.00374 seconds |
124
- ./spec/carddb/resources/decks_spec.rb[1:6:1] | passed | 0.00371 seconds |
125
- ./spec/carddb/resources/decks_spec.rb[1:6:2] | passed | 0.00393 seconds |
126
- ./spec/carddb/resources/decks_spec.rb[1:6:3] | passed | 0.00365 seconds |
127
- ./spec/carddb/resources/decks_spec.rb[1:6:4] | passed | 0.00007 seconds |
128
- ./spec/carddb/resources/decks_spec.rb[1:7:1] | passed | 0.00367 seconds |
129
- ./spec/carddb/resources/decks_spec.rb[1:8:1] | passed | 0.00403 seconds |
130
- ./spec/carddb/resources/decks_spec.rb[1:9:1] | passed | 0.0036 seconds |
131
- ./spec/carddb/resources/decks_spec.rb[1:10:1] | passed | 0.00381 seconds |
132
- ./spec/carddb/resources/decks_spec.rb[1:10:2] | passed | 0.00373 seconds |
133
- ./spec/carddb/resources/decks_spec.rb[1:10:3] | passed | 0.00389 seconds |
134
- ./spec/carddb/resources/decks_spec.rb[1:10:4] | passed | 0.00381 seconds |
135
- ./spec/carddb/resources/decks_spec.rb[1:11:1] | passed | 0.0036 seconds |
136
- ./spec/carddb/resources/decks_spec.rb[1:12:1] | passed | 0.00361 seconds |
137
- ./spec/carddb/resources/decks_spec.rb[1:12:2] | passed | 0.0037 seconds |
138
- ./spec/carddb/resources/decks_spec.rb[1:12:3] | passed | 0.00368 seconds |
139
- ./spec/carddb/resources/decks_spec.rb[1:12:4] | passed | 0.00006 seconds |
140
- ./spec/carddb/resources/decks_spec.rb[1:13:1] | passed | 0.0037 seconds |
141
- ./spec/carddb/resources/decks_spec.rb[1:14:1] | passed | 0.00724 seconds |
142
- ./spec/carddb/resources/decks_spec.rb[1:15:1] | passed | 0.00456 seconds |
143
- ./spec/carddb/resources/decks_spec.rb[1:15:2] | passed | 0.00446 seconds |
144
- ./spec/carddb/resources/decks_spec.rb[1:15:3] | passed | 0.00372 seconds |
145
- ./spec/carddb/resources/decks_spec.rb[1:16:1] | passed | 0.00598 seconds |
146
- ./spec/carddb/resources/decks_spec.rb[1:17:1] | passed | 0.00356 seconds |
147
- ./spec/carddb/resources/decks_spec.rb[1:18:1] | passed | 0.00471 seconds |
148
- ./spec/carddb/resources/decks_spec.rb[1:19:1] | passed | 0.00364 seconds |
149
- ./spec/carddb/resources/decks_spec.rb[1:20:1] | passed | 0.00348 seconds |
150
- ./spec/carddb/resources/decks_spec.rb[1:21:1] | passed | 0.00464 seconds |
151
- ./spec/carddb/resources/games_spec.rb[1:1:1] | passed | 0.00356 seconds |
152
- ./spec/carddb/resources/games_spec.rb[1:1:2] | passed | 0.00006 seconds |
153
- ./spec/carddb/resources/games_spec.rb[1:2:1] | passed | 0.0043 seconds |
154
- ./spec/carddb/resources/games_spec.rb[1:2:2] | passed | 0.00347 seconds |
155
- ./spec/carddb/resources/publisher_workflows_spec.rb[1:1:1] | passed | 0.00363 seconds |
156
- ./spec/carddb/resources/publisher_workflows_spec.rb[1:1:2] | passed | 0.00427 seconds |
157
- ./spec/carddb/resources/publisher_workflows_spec.rb[1:1:3] | passed | 0.00395 seconds |
158
- ./spec/carddb/resources/publisher_workflows_spec.rb[1:2:1] | passed | 0.00444 seconds |
159
- ./spec/carddb/resources/publisher_workflows_spec.rb[1:2:2] | passed | 0.00005 seconds |
160
- ./spec/carddb/resources/publisher_workflows_spec.rb[1:3:1] | passed | 0.00554 seconds |
161
- ./spec/carddb/resources/publisher_workflows_spec.rb[1:3:2] | passed | 0.00394 seconds |
162
- ./spec/carddb/resources/publisher_workflows_spec.rb[1:3:3] | passed | 0.0039 seconds |
163
- ./spec/carddb/resources/publisher_workflows_spec.rb[1:4:1] | passed | 0.00396 seconds |
164
- ./spec/carddb/resources/publisher_workflows_spec.rb[1:4:2] | passed | 0.00513 seconds |
165
- ./spec/carddb/resources/publisher_workflows_spec.rb[1:4:3] | passed | 0.0051 seconds |
166
- ./spec/carddb/resources/publisher_workflows_spec.rb[1:5:1] | passed | 0.00468 seconds |
167
- ./spec/carddb/resources/publisher_workflows_spec.rb[1:5:2] | passed | 0.00418 seconds |
168
- ./spec/carddb/resources/publishers_spec.rb[1:1:1] | passed | 0.00389 seconds |
169
- ./spec/carddb/resources/publishers_spec.rb[1:2:1] | passed | 0.00397 seconds |
170
- ./spec/carddb/resources/records_spec.rb[1:1:1] | passed | 0.00387 seconds |
171
- ./spec/carddb/resources/records_spec.rb[1:1:2] | passed | 0.00477 seconds |
172
- ./spec/carddb/resources/records_spec.rb[1:1:3] | passed | 0.00011 seconds |
173
- ./spec/carddb/resources/records_spec.rb[1:1:4] | passed | 0.00005 seconds |
174
- ./spec/carddb/resources/records_spec.rb[1:2:1] | passed | 0.0038 seconds |
175
- ./spec/carddb/resources/records_spec.rb[1:2:2] | passed | 0.00408 seconds |
176
- ./spec/carddb/resources/records_spec.rb[1:2:3] | passed | 0.00344 seconds |
177
- ./spec/carddb/resources/records_spec.rb[1:3:1] | passed | 0.00357 seconds |
178
- ./spec/carddb/resources/records_spec.rb[1:3:2] | passed | 0.00009 seconds |
179
- ./spec/carddb/resources/records_spec.rb[1:4:1] | passed | 0.0037 seconds |
123
+ ./spec/carddb/resources/decks_spec.rb[1:2:2] | passed | 0.00948 seconds |
124
+ ./spec/carddb/resources/decks_spec.rb[1:2:3] | passed | 0.00008 seconds |
125
+ ./spec/carddb/resources/decks_spec.rb[1:3:1] | passed | 0.0047 seconds |
126
+ ./spec/carddb/resources/decks_spec.rb[1:4:1] | passed | 0.00461 seconds |
127
+ ./spec/carddb/resources/decks_spec.rb[1:4:2] | passed | 0.00405 seconds |
128
+ ./spec/carddb/resources/decks_spec.rb[1:4:3] | passed | 0.00454 seconds |
129
+ ./spec/carddb/resources/decks_spec.rb[1:5:1] | passed | 0.0045 seconds |
130
+ ./spec/carddb/resources/decks_spec.rb[1:6:1] | passed | 0.00415 seconds |
131
+ ./spec/carddb/resources/decks_spec.rb[1:7:1] | passed | 0.00473 seconds |
132
+ ./spec/carddb/resources/decks_spec.rb[1:7:2] | passed | 0.00493 seconds |
133
+ ./spec/carddb/resources/decks_spec.rb[1:7:3] | passed | 0.00478 seconds |
134
+ ./spec/carddb/resources/decks_spec.rb[1:7:4] | passed | 0.00016 seconds |
135
+ ./spec/carddb/resources/decks_spec.rb[1:8:1] | passed | 0.00452 seconds |
136
+ ./spec/carddb/resources/decks_spec.rb[1:9:1] | passed | 0.00426 seconds |
137
+ ./spec/carddb/resources/decks_spec.rb[1:10:1] | passed | 0.00395 seconds |
138
+ ./spec/carddb/resources/decks_spec.rb[1:11:1] | passed | 0.00436 seconds |
139
+ ./spec/carddb/resources/decks_spec.rb[1:11:2] | passed | 0.00505 seconds |
140
+ ./spec/carddb/resources/decks_spec.rb[1:11:3] | passed | 0.00527 seconds |
141
+ ./spec/carddb/resources/decks_spec.rb[1:11:4] | passed | 0.00532 seconds |
142
+ ./spec/carddb/resources/decks_spec.rb[1:12:1] | passed | 0.00468 seconds |
143
+ ./spec/carddb/resources/decks_spec.rb[1:13:1] | passed | 0.00438 seconds |
144
+ ./spec/carddb/resources/decks_spec.rb[1:13:2] | passed | 0.00395 seconds |
145
+ ./spec/carddb/resources/decks_spec.rb[1:13:3] | passed | 0.0045 seconds |
146
+ ./spec/carddb/resources/decks_spec.rb[1:13:4] | passed | 0.00008 seconds |
147
+ ./spec/carddb/resources/decks_spec.rb[1:14:1] | passed | 0.00466 seconds |
148
+ ./spec/carddb/resources/decks_spec.rb[1:15:1] | passed | 0.00461 seconds |
149
+ ./spec/carddb/resources/decks_spec.rb[1:16:1] | passed | 0.00488 seconds |
150
+ ./spec/carddb/resources/decks_spec.rb[1:16:2] | passed | 0.00997 seconds |
151
+ ./spec/carddb/resources/decks_spec.rb[1:16:3] | passed | 0.00494 seconds |
152
+ ./spec/carddb/resources/decks_spec.rb[1:17:1] | passed | 0.00682 seconds |
153
+ ./spec/carddb/resources/decks_spec.rb[1:18:1] | passed | 0.00517 seconds |
154
+ ./spec/carddb/resources/decks_spec.rb[1:19:1] | passed | 0.00393 seconds |
155
+ ./spec/carddb/resources/decks_spec.rb[1:20:1] | passed | 0.00387 seconds |
156
+ ./spec/carddb/resources/decks_spec.rb[1:21:1] | passed | 0.00572 seconds |
157
+ ./spec/carddb/resources/decks_spec.rb[1:22:1] | passed | 0.00397 seconds |
158
+ ./spec/carddb/resources/games_spec.rb[1:1:1] | passed | 0.00573 seconds |
159
+ ./spec/carddb/resources/games_spec.rb[1:1:2] | passed | 0.00009 seconds |
160
+ ./spec/carddb/resources/games_spec.rb[1:2:1] | passed | 0.004 seconds |
161
+ ./spec/carddb/resources/games_spec.rb[1:2:2] | passed | 0.00427 seconds |
162
+ ./spec/carddb/resources/publisher_workflows_spec.rb[1:1:1] | passed | 0.00435 seconds |
163
+ ./spec/carddb/resources/publisher_workflows_spec.rb[1:1:2] | passed | 0.00582 seconds |
164
+ ./spec/carddb/resources/publisher_workflows_spec.rb[1:1:3] | passed | 0.00432 seconds |
165
+ ./spec/carddb/resources/publisher_workflows_spec.rb[1:2:1] | passed | 0.00567 seconds |
166
+ ./spec/carddb/resources/publisher_workflows_spec.rb[1:2:2] | passed | 0.0001 seconds |
167
+ ./spec/carddb/resources/publisher_workflows_spec.rb[1:3:1] | passed | 0.00569 seconds |
168
+ ./spec/carddb/resources/publisher_workflows_spec.rb[1:3:2] | passed | 0.00455 seconds |
169
+ ./spec/carddb/resources/publisher_workflows_spec.rb[1:3:3] | passed | 0.00437 seconds |
170
+ ./spec/carddb/resources/publisher_workflows_spec.rb[1:4:1] | passed | 0.00647 seconds |
171
+ ./spec/carddb/resources/publisher_workflows_spec.rb[1:4:2] | passed | 0.006 seconds |
172
+ ./spec/carddb/resources/publisher_workflows_spec.rb[1:4:3] | passed | 0.00598 seconds |
173
+ ./spec/carddb/resources/publisher_workflows_spec.rb[1:5:1] | passed | 0.00481 seconds |
174
+ ./spec/carddb/resources/publisher_workflows_spec.rb[1:5:2] | passed | 0.00523 seconds |
175
+ ./spec/carddb/resources/publishers_spec.rb[1:1:1] | passed | 0.005 seconds |
176
+ ./spec/carddb/resources/publishers_spec.rb[1:2:1] | passed | 0.00482 seconds |
177
+ ./spec/carddb/resources/records_spec.rb[1:1:1] | passed | 0.00575 seconds |
178
+ ./spec/carddb/resources/records_spec.rb[1:1:2] | passed | 0.00572 seconds |
179
+ ./spec/carddb/resources/records_spec.rb[1:1:3] | passed | 0.0002 seconds |
180
+ ./spec/carddb/resources/records_spec.rb[1:1:4] | passed | 0.00006 seconds |
181
+ ./spec/carddb/resources/records_spec.rb[1:2:1] | passed | 0.00505 seconds |
182
+ ./spec/carddb/resources/records_spec.rb[1:2:2] | passed | 0.0062 seconds |
183
+ ./spec/carddb/resources/records_spec.rb[1:2:3] | passed | 0.0049 seconds |
184
+ ./spec/carddb/resources/records_spec.rb[1:3:1] | passed | 0.00493 seconds |
185
+ ./spec/carddb/resources/records_spec.rb[1:3:2] | passed | 0.00044 seconds |
186
+ ./spec/carddb/resources/records_spec.rb[1:4:1] | passed | 0.00485 seconds |
180
187
  ./spec/carddb/resources/records_spec.rb[1:4:2] | passed | 0.00005 seconds |
181
- ./spec/carddb/resources/records_spec.rb[1:4:3] | passed | 0.00009 seconds |
182
- ./spec/carddb/resources/rules_spec.rb[1:1:1] | passed | 0.00363 seconds |
183
- ./spec/carddb/resources/rules_spec.rb[1:2:1] | passed | 0.00424 seconds |
184
- ./spec/carddb/resources/rulesets_spec.rb[1:1:1] | passed | 0.00348 seconds |
185
- ./spec/carddb/resources/rulesets_spec.rb[1:1:2] | passed | 0.00481 seconds |
186
- ./spec/carddb/resources/rulesets_spec.rb[1:1:3] | passed | 0.00413 seconds |
187
- ./spec/carddb/resources/rulesets_spec.rb[1:2:1] | passed | 0.0037 seconds |
188
- ./spec/carddb/resources/rulesets_spec.rb[1:2:2] | passed | 0.00401 seconds |
189
- ./spec/carddb/resources/rulesets_spec.rb[1:2:3] | passed | 0.00355 seconds |
190
- ./spec/carddb/resources/rulesets_spec.rb[1:3:1] | passed | 0.00452 seconds |
188
+ ./spec/carddb/resources/records_spec.rb[1:4:3] | passed | 0.0001 seconds |
189
+ ./spec/carddb/resources/rules_spec.rb[1:1:1] | passed | 0.00495 seconds |
190
+ ./spec/carddb/resources/rules_spec.rb[1:2:1] | passed | 0.00438 seconds |
191
+ ./spec/carddb/resources/rulesets_spec.rb[1:1:1] | passed | 0.00557 seconds |
192
+ ./spec/carddb/resources/rulesets_spec.rb[1:1:2] | passed | 0.00556 seconds |
193
+ ./spec/carddb/resources/rulesets_spec.rb[1:1:3] | passed | 0.00455 seconds |
194
+ ./spec/carddb/resources/rulesets_spec.rb[1:2:1] | passed | 0.00609 seconds |
195
+ ./spec/carddb/resources/rulesets_spec.rb[1:2:2] | passed | 0.00444 seconds |
196
+ ./spec/carddb/resources/rulesets_spec.rb[1:2:3] | passed | 0.00539 seconds |
197
+ ./spec/carddb/resources/rulesets_spec.rb[1:3:1] | passed | 0.00644 seconds |
191
198
  ./spec/carddb/resources/rulesets_spec.rb[1:3:2] | passed | 0.00006 seconds |
192
- ./spec/carddb/resources/scans_spec.rb[1:1] | passed | 0.00449 seconds |
193
- ./spec/carddb/resources/scans_spec.rb[1:2] | passed | 0.00757 seconds |
194
- ./spec/carddb/resources/scans_spec.rb[1:3] | passed | 0.00483 seconds |
195
- ./spec/carddb/resources/scans_spec.rb[1:4] | passed | 0.00381 seconds |
196
- ./spec/carddb/resources/scans_spec.rb[1:5] | passed | 0.0038 seconds |
197
- ./spec/carddb/resources/scans_spec.rb[1:6] | passed | 0.0043 seconds |
198
- ./spec/carddb/resources/scans_spec.rb[1:7] | passed | 0.00365 seconds |
199
- ./spec/carddb/resources/scans_spec.rb[1:8] | passed | 0.00008 seconds |
199
+ ./spec/carddb/resources/scans_spec.rb[1:1] | passed | 0.00466 seconds |
200
+ ./spec/carddb/resources/scans_spec.rb[1:2] | passed | 0.01111 seconds |
201
+ ./spec/carddb/resources/scans_spec.rb[1:3] | passed | 0.00502 seconds |
202
+ ./spec/carddb/resources/scans_spec.rb[1:4] | passed | 0.00529 seconds |
203
+ ./spec/carddb/resources/scans_spec.rb[1:5] | passed | 0.0055 seconds |
204
+ ./spec/carddb/resources/scans_spec.rb[1:6] | passed | 0.00615 seconds |
205
+ ./spec/carddb/resources/scans_spec.rb[1:7] | passed | 0.00495 seconds |
206
+ ./spec/carddb/resources/scans_spec.rb[1:8] | passed | 0.00014 seconds |
200
207
  ./spec/carddb_spec.rb[1:1] | passed | 0.00003 seconds |
201
208
  ./spec/carddb_spec.rb[1:2:1] | passed | 0.00003 seconds |
202
209
  ./spec/carddb_spec.rb[1:3:1] | passed | 0.00003 seconds |
203
210
  ./spec/carddb_spec.rb[1:4:1] | passed | 0.00003 seconds |
204
211
  ./spec/carddb_spec.rb[1:5:1] | passed | 0.00003 seconds |
205
212
  ./spec/carddb_spec.rb[1:6:1] | passed | 0.00003 seconds |
206
- ./spec/carddb_spec.rb[1:7:1] | passed | 0.00003 seconds |
213
+ ./spec/carddb_spec.rb[1:7:1] | passed | 0.00004 seconds |
207
214
  ./spec/carddb_spec.rb[1:8:1] | passed | 0.00003 seconds |
208
215
  ./spec/carddb_spec.rb[1:9:1] | passed | 0.00003 seconds |
209
216
  ./spec/carddb_spec.rb[1:10:1] | passed | 0.00003 seconds |
data/CHANGELOG.md CHANGED
@@ -7,6 +7,26 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.5.8] - 2026-07-27
11
+
12
+ ### Added
13
+
14
+ - `CardDB.decks.valuation` with current TCGPlayer totals, section and entry breakdowns, pricing coverage, and missing-price reasons.
15
+ - `CardDB::DeckValuation`, `DeckSectionValuation`, `DeckEntryValuation`, and `Money` response wrappers.
16
+ - Batch support for deck valuation queries.
17
+
18
+ ## [0.5.7] - 2026-07-24
19
+
20
+ ### Added
21
+
22
+ - Current legality details for published decks and immutable deck versions, including nullable validity, status, issue counts, checked versions, and validation issues.
23
+ - Published representation metadata through `Deck#read_state` and `Deck#represented_version_id`.
24
+ - Draft or published deck selection for ruleset validation impact previews through the `scope:` option.
25
+
26
+ ### Changed
27
+
28
+ - Batch deck reads now request current legality and published representation fields.
29
+
10
30
  ## [0.5.5] - 2026-07-09
11
31
 
12
32
  ### Added
data/README.md CHANGED
@@ -576,12 +576,20 @@ entry_payload = CardDB.decks.add_entry(
576
576
  )
577
577
 
578
578
  validation = CardDB.decks.validate(id: updated.id)
579
+ valuation = CardDB.decks.valuation(
580
+ id: updated.id,
581
+ read_state: "DRAFT",
582
+ input: { subTypeName: "Normal" }, # metric defaults to MARKET
583
+ cache: false
584
+ )
579
585
  publish = CardDB.decks.publish(
580
586
  id: updated.id,
581
587
  input: { expectedDraftRevision: entry_payload.deck.draft_revision }
582
588
  )
583
589
 
584
590
  puts publish.blockers.map(&:message) unless publish.blockers.empty?
591
+ puts "#{valuation.priced_total.currency_code} #{valuation.priced_total.amount}"
592
+ puts "Missing prices: #{valuation.missing_quantity}" unless valuation.complete?
585
593
  puts CardDB.decks.export_deck(id: updated.id).text
586
594
 
587
595
  # Import with publisher-configured format auto-detection
@@ -617,6 +625,12 @@ CardDB.decks.import_deck(
617
625
  )
618
626
  ```
619
627
 
628
+ Valuation metrics are `MARKET`, `LOW`, `MID`, `HIGH`, and `DIRECT_LOW`. Money amounts remain decimal
629
+ strings. `priced_total` includes only entries with usable prices, so inspect `status`,
630
+ `priced_quantity`, `missing_quantity`, and entry `missing_reason` values before presenting it as a
631
+ complete deck value. Use `read_state: "PUBLISHED"` with an optional `version:` selector to value an
632
+ immutable snapshot, and `cache: false` for the freshest value allowed by the server-side price cache.
633
+
620
634
  Section definitions come from the deck ruleset and are available on `deck.section_definitions`,
621
635
  `version.section_definitions`, or through `CardDB.decks.section_definitions(...)`. Use `key`,
622
636
  `default?`, `min_cards`, `max_cards`, and `excluded_from_deck_size?` to render sections and
data/lib/carddb/batch.rb CHANGED
@@ -224,6 +224,8 @@ module CardDB
224
224
  end
225
225
  when :get_by_external_ref
226
226
  build_deck_by_external_ref_query(op, index)
227
+ when :valuation
228
+ build_deck_valuation_query(op, index)
227
229
  else
228
230
  raise ArgumentError, "Unsupported batch method for decks: #{op[:method]}"
229
231
  end
@@ -251,6 +253,22 @@ module CardDB
251
253
  ["#{query}) { #{deck_fields} }", variables, types]
252
254
  end
253
255
 
256
+ def build_deck_valuation_query(op, index)
257
+ id_var = "deckValuationId#{index}"
258
+ state_var = "deckValuationReadState#{index}"
259
+ input_var = "deckValuationInput#{index}"
260
+ query = "#{op[:alias]}: deckValuation(id: $#{id_var}, readState: $#{state_var}"
261
+ variables = {
262
+ id_var => op[:kwargs][:id],
263
+ state_var => op[:kwargs][:read_state],
264
+ input_var => op[:kwargs][:input]
265
+ }
266
+ types = { id_var => 'UUID', state_var => 'DeckReadState', input_var => 'DeckValuationInput' }
267
+ query = add_deck_version_argument(query, variables, types, op[:kwargs][:version], index)
268
+
269
+ ["#{query}, input: $#{input_var}) { #{deck_valuation_fields} }", variables, types]
270
+ end
271
+
254
272
  def add_deck_version_argument(query, variables, types, version, index)
255
273
  return query if version.nil?
256
274
 
@@ -278,7 +296,7 @@ module CardDB
278
296
  "(#{defs.join(', ')})"
279
297
  end
280
298
 
281
- def wrap_result(result, resource, _method)
299
+ def wrap_result(result, resource, method)
282
300
  return nil if result.nil?
283
301
 
284
302
  case resource
@@ -291,7 +309,7 @@ module CardDB
291
309
  when :records
292
310
  Record.new(result, client: @client)
293
311
  when :decks
294
- Deck.new(result, client: @client)
312
+ method == :valuation ? DeckValuation.new(result, client: @client) : Deck.new(result, client: @client)
295
313
  else
296
314
  result
297
315
  end
@@ -331,14 +349,34 @@ module CardDB
331
349
  'createdByAccountId createdByApiApplicationId accountId apiApplicationId',
332
350
  'gameId game { id key name publisher { id name slug } }',
333
351
  'slug identifier title description formatKey visibility accessMode',
334
- 'discoverability state archivedAt deletedAt unpublishedAt',
352
+ 'discoverability state readState representedVersionId archivedAt deletedAt unpublishedAt',
335
353
  'externalRefApiApplicationId externalRef externalSubjectRef',
336
354
  'rulesetId sourceUrl metadata',
337
355
  'entries { id datasetId recordId identifier quantity section sortOrder annotations display }',
338
356
  'sectionDefinitions { key label description order default aliases minCards maxCards excludedFromDeckSize legalCardTypes metadata }',
339
- 'latestPublishedVersion { id deckId versionNumber slug identifier title description formatKey visibility state publishedAt }',
357
+ "latestPublishedVersion { id deckId versionNumber slug identifier title description formatKey visibility currentLegality { #{deck_legality_fields} } }",
340
358
  'publishedAt draftRevision draftUpdatedAt draftUpdatedByAccountId draftUpdatedByApiApplicationId',
341
- 'hasUnpublishedChanges createdAt updatedAt'
359
+ "hasUnpublishedChanges valid currentLegality { #{deck_legality_fields} } createdAt updatedAt"
360
+ ].join(' ')
361
+ end
362
+
363
+ def deck_valuation_fields
364
+ [
365
+ 'status subTypeName metric pricedTotal { amount currencyCode }',
366
+ 'totalEntryCount pricedEntryCount missingEntryCount',
367
+ 'totalQuantity pricedQuantity missingQuantity',
368
+ 'sections { section status pricedSubtotal { amount currencyCode }',
369
+ 'totalEntryCount pricedEntryCount missingEntryCount totalQuantity pricedQuantity missingQuantity }',
370
+ 'entries { entryId datasetId recordId identifier section quantity',
371
+ 'unitPrice { amount currencyCode } pricedSubtotal { amount currencyCode } missingReason }'
372
+ ].join(' ')
373
+ end
374
+
375
+ def deck_legality_fields
376
+ [
377
+ 'status valid blockerCount warningCount affectedEntryCount checkedAt',
378
+ 'rulesetVersionId cardDatasetVersionId reason',
379
+ 'issues { code severity message entryIds section datasetId identifier metadata }'
342
380
  ].join(' ')
343
381
  end
344
382
  end
@@ -366,5 +404,11 @@ module CardDB
366
404
  @batch.add_operation(resource: @resource, method: :get_by_external_ref, args: args, kwargs: kwargs)
367
405
  nil # Return nil since we're batching
368
406
  end
407
+
408
+ # Proxy valuation calls to the batch
409
+ def valuation(**kwargs)
410
+ @batch.add_operation(resource: @resource, method: :valuation, kwargs: kwargs)
411
+ nil # Return nil since we're batching
412
+ end
369
413
  end
370
414
  end
@@ -1707,6 +1707,14 @@ module CardDB
1707
1707
  data['state']
1708
1708
  end
1709
1709
 
1710
+ def read_state
1711
+ data['readState']
1712
+ end
1713
+
1714
+ def represented_version_id
1715
+ data['representedVersionId']
1716
+ end
1717
+
1710
1718
  def archived?
1711
1719
  state == 'ARCHIVED'
1712
1720
  end
@@ -1789,6 +1797,14 @@ module CardDB
1789
1797
  !!data['hasUnpublishedChanges']
1790
1798
  end
1791
1799
 
1800
+ def valid?
1801
+ data['valid']
1802
+ end
1803
+
1804
+ def current_legality
1805
+ @current_legality ||= DeckLegality.new(data['currentLegality'], client: client)
1806
+ end
1807
+
1792
1808
  def created_at
1793
1809
  parse_time(data['createdAt'])
1794
1810
  end
@@ -1898,6 +1914,10 @@ module CardDB
1898
1914
  @validated_against ||= data['validatedAgainst'] ? DeckValidatedAgainst.new(data['validatedAgainst'], client: client) : nil
1899
1915
  end
1900
1916
 
1917
+ def current_legality
1918
+ @current_legality ||= DeckLegality.new(data['currentLegality'], client: client)
1919
+ end
1920
+
1901
1921
  def section_definitions
1902
1922
  @section_definitions ||= (data['sectionDefinitions'] || []).map do |definition|
1903
1923
  DeckSectionDefinition.new(definition, client: client)
@@ -2182,6 +2202,75 @@ module CardDB
2182
2202
  def metadata = data['metadata'] || {}
2183
2203
  end
2184
2204
 
2205
+ # Wrapper for decimal money returned by valuation APIs
2206
+ class Money < Resource
2207
+ def amount = data['amount']
2208
+ def currency_code = data['currencyCode']
2209
+ end
2210
+
2211
+ # Wrapper for one deck entry's contribution to a valuation
2212
+ class DeckEntryValuation < Resource
2213
+ def entry_id = data['entryId']
2214
+ def dataset_id = data['datasetId']
2215
+ def record_id = data['recordId']
2216
+ def identifier = data['identifier']
2217
+ def section = data['section']
2218
+ def quantity = data['quantity']
2219
+ def missing_reason = data['missingReason']
2220
+
2221
+ def unit_price
2222
+ @unit_price ||= data['unitPrice'] ? Money.new(data['unitPrice'], client: client) : nil
2223
+ end
2224
+
2225
+ def priced_subtotal
2226
+ @priced_subtotal ||= data['pricedSubtotal'] ? Money.new(data['pricedSubtotal'], client: client) : nil
2227
+ end
2228
+ end
2229
+
2230
+ # Wrapper for one deck section's valuation and pricing coverage
2231
+ class DeckSectionValuation < Resource
2232
+ def section = data['section']
2233
+ def status = data['status']
2234
+ def total_entry_count = data['totalEntryCount']
2235
+ def priced_entry_count = data['pricedEntryCount']
2236
+ def missing_entry_count = data['missingEntryCount']
2237
+ def total_quantity = data['totalQuantity']
2238
+ def priced_quantity = data['pricedQuantity']
2239
+ def missing_quantity = data['missingQuantity']
2240
+
2241
+ def priced_subtotal
2242
+ @priced_subtotal ||= Money.new(data['pricedSubtotal'], client: client)
2243
+ end
2244
+ end
2245
+
2246
+ # Wrapper for current deck valuation and pricing coverage
2247
+ class DeckValuation < Resource
2248
+ def status = data['status']
2249
+ def sub_type_name = data['subTypeName']
2250
+ def metric = data['metric']
2251
+ def total_entry_count = data['totalEntryCount']
2252
+ def priced_entry_count = data['pricedEntryCount']
2253
+ def missing_entry_count = data['missingEntryCount']
2254
+ def total_quantity = data['totalQuantity']
2255
+ def priced_quantity = data['pricedQuantity']
2256
+ def missing_quantity = data['missingQuantity']
2257
+ def complete? = status == 'COMPLETE'
2258
+ def partial? = status == 'PARTIAL'
2259
+ def unavailable? = status == 'UNAVAILABLE'
2260
+
2261
+ def priced_total
2262
+ @priced_total ||= Money.new(data['pricedTotal'], client: client)
2263
+ end
2264
+
2265
+ def sections
2266
+ @sections ||= (data['sections'] || []).map { |section| DeckSectionValuation.new(section, client: client) }
2267
+ end
2268
+
2269
+ def entries
2270
+ @entries ||= (data['entries'] || []).map { |entry| DeckEntryValuation.new(entry, client: client) }
2271
+ end
2272
+ end
2273
+
2185
2274
  class DeckValidatedAgainst < Resource
2186
2275
  def ruleset_id = data['rulesetId']
2187
2276
  def ruleset_version_id = data['rulesetVersionId']
@@ -2203,6 +2292,23 @@ module CardDB
2203
2292
  def metadata = data['metadata'] || {}
2204
2293
  end
2205
2294
 
2295
+ # Wrapper for a published deck snapshot's legality against current rules and card data
2296
+ class DeckLegality < Resource
2297
+ def status = data['status']
2298
+ def valid? = data['valid']
2299
+ def blocker_count = data['blockerCount']
2300
+ def warning_count = data['warningCount']
2301
+ def affected_entry_count = data['affectedEntryCount']
2302
+ def checked_at = parse_time(data['checkedAt'])
2303
+ def ruleset_version_id = data['rulesetVersionId']
2304
+ def card_dataset_version_id = data['cardDatasetVersionId']
2305
+ def reason = data['reason']
2306
+
2307
+ def issues
2308
+ @issues ||= (data['issues'] || []).map { |issue| DeckValidationIssue.new(issue, client: client) }
2309
+ end
2310
+ end
2311
+
2206
2312
  class DeckValidationAffectedEntry < Resource
2207
2313
  def entry_id = data['entryId']
2208
2314
  def dataset_id = data['datasetId']
@@ -1012,6 +1012,16 @@ module CardDB
1012
1012
  GRAPHQL
1013
1013
  end
1014
1014
 
1015
+ def deck_valuation
1016
+ <<~GRAPHQL
1017
+ query DeckValuation($id: UUID!, $readState: DeckReadState!, $version: DeckPublishedVersionSelector, $input: DeckValuationInput!) {
1018
+ deckValuation(id: $id, readState: $readState, version: $version, input: $input) {
1019
+ #{deck_valuation_fields}
1020
+ }
1021
+ }
1022
+ GRAPHQL
1023
+ end
1024
+
1015
1025
  # Builds a myDeck query
1016
1026
  def my_deck
1017
1027
  <<~GRAPHQL
@@ -1248,10 +1258,11 @@ module CardDB
1248
1258
  GRAPHQL
1249
1259
  end
1250
1260
 
1251
- def ruleset_validation_impact(ruleset_version_id:, first: nil)
1261
+ def ruleset_validation_impact(ruleset_version_id:, first: nil, scope: nil)
1252
1262
  args = build_args(
1253
- { rulesetVersionId: ruleset_version_id, first: first },
1254
- required: [:rulesetVersionId]
1263
+ { rulesetVersionId: ruleset_version_id, first: first, scope: scope },
1264
+ required: %i[rulesetVersionId scope],
1265
+ type_overrides: { scope: 'RulesetValidationImpactScope' }
1255
1266
  )
1256
1267
 
1257
1268
  <<~GRAPHQL
@@ -2806,6 +2817,23 @@ module CardDB
2806
2817
  FIELDS
2807
2818
  end
2808
2819
 
2820
+ def deck_legality_fields
2821
+ <<~FIELDS
2822
+ status
2823
+ valid
2824
+ blockerCount
2825
+ warningCount
2826
+ affectedEntryCount
2827
+ checkedAt
2828
+ rulesetVersionId
2829
+ cardDatasetVersionId
2830
+ reason
2831
+ issues {
2832
+ #{deck_validation_issue_fields}
2833
+ }
2834
+ FIELDS
2835
+ end
2836
+
2809
2837
  def deck_validation_fields
2810
2838
  <<~FIELDS
2811
2839
  deckId
@@ -2831,6 +2859,70 @@ module CardDB
2831
2859
  FIELDS
2832
2860
  end
2833
2861
 
2862
+ def money_fields
2863
+ <<~FIELDS
2864
+ amount
2865
+ currencyCode
2866
+ FIELDS
2867
+ end
2868
+
2869
+ def deck_entry_valuation_fields
2870
+ <<~FIELDS
2871
+ entryId
2872
+ datasetId
2873
+ recordId
2874
+ identifier
2875
+ section
2876
+ quantity
2877
+ unitPrice {
2878
+ #{money_fields}
2879
+ }
2880
+ pricedSubtotal {
2881
+ #{money_fields}
2882
+ }
2883
+ missingReason
2884
+ FIELDS
2885
+ end
2886
+
2887
+ def deck_section_valuation_fields
2888
+ <<~FIELDS
2889
+ section
2890
+ status
2891
+ pricedSubtotal {
2892
+ #{money_fields}
2893
+ }
2894
+ totalEntryCount
2895
+ pricedEntryCount
2896
+ missingEntryCount
2897
+ totalQuantity
2898
+ pricedQuantity
2899
+ missingQuantity
2900
+ FIELDS
2901
+ end
2902
+
2903
+ def deck_valuation_fields
2904
+ <<~FIELDS
2905
+ status
2906
+ subTypeName
2907
+ metric
2908
+ pricedTotal {
2909
+ #{money_fields}
2910
+ }
2911
+ totalEntryCount
2912
+ pricedEntryCount
2913
+ missingEntryCount
2914
+ totalQuantity
2915
+ pricedQuantity
2916
+ missingQuantity
2917
+ sections {
2918
+ #{deck_section_valuation_fields}
2919
+ }
2920
+ entries {
2921
+ #{deck_entry_valuation_fields}
2922
+ }
2923
+ FIELDS
2924
+ end
2925
+
2834
2926
  def ruleset_version_fields
2835
2927
  <<~FIELDS
2836
2928
  id
@@ -2978,6 +3070,8 @@ module CardDB
2978
3070
  accessMode
2979
3071
  discoverability
2980
3072
  state
3073
+ readState
3074
+ representedVersionId
2981
3075
  archivedAt
2982
3076
  deletedAt
2983
3077
  unpublishedAt
@@ -2999,6 +3093,10 @@ module CardDB
2999
3093
  draftUpdatedByAccountId
3000
3094
  draftUpdatedByApiApplicationId
3001
3095
  hasUnpublishedChanges
3096
+ valid
3097
+ currentLegality {
3098
+ #{deck_legality_fields}
3099
+ }
3002
3100
  createdAt
3003
3101
  updatedAt
3004
3102
  game {
@@ -3088,6 +3186,9 @@ module CardDB
3088
3186
  validatedAgainst {
3089
3187
  #{deck_validated_against_fields}
3090
3188
  }
3189
+ currentLegality {
3190
+ #{deck_legality_fields}
3191
+ }
3091
3192
  sectionDefinitions {
3092
3193
  #{deck_section_definition_fields}
3093
3194
  }
@@ -104,6 +104,26 @@ module CardDB
104
104
  end
105
105
  end
106
106
 
107
+ # Return current TCGPlayer valuation for a draft or published deck representation.
108
+ #
109
+ # The returned priced total includes only entries with usable prices. Check its
110
+ # status and coverage counts before treating it as the complete deck value.
111
+ #
112
+ # @param id [String] Deck UUID
113
+ # @param read_state [String] DRAFT or PUBLISHED
114
+ # @param input [Hash] Valuation subtype and optional metric
115
+ # @param version [Hash, nil] Optional published version selector
116
+ # @param cache [Boolean, nil] Whether to use the client cache; use false for the freshest available value
117
+ # @return [DeckValuation, nil]
118
+ def valuation(id:, read_state:, input:, version: nil, cache: nil)
119
+ variables = build_variables(id: id, readState: read_state, version: version, input: input)
120
+ key = cache_key('decks', 'valuation', **variables)
121
+ with_cache(key, resource: :decks, cache: cache) do
122
+ data = connection.execute(QueryBuilder.deck_valuation, variables)
123
+ data['deckValuation'] ? DeckValuation.new(data['deckValuation'], client: client) : nil
124
+ end
125
+ end
126
+
107
127
  def get_draft(id, cache: nil)
108
128
  get(id, read_state: 'DRAFT', cache: cache)
109
129
  end
@@ -112,9 +112,13 @@ module CardDB
112
112
  RulesetVersionDraftImportPreview.new(data['rulesetVersionDraftImportPreview'], client: client)
113
113
  end
114
114
 
115
- def validation_impact(ruleset_version_id:, first: nil, cache: nil)
116
- query = QueryBuilder.ruleset_validation_impact(ruleset_version_id: ruleset_version_id, first: first)
117
- variables = build_variables(rulesetVersionId: ruleset_version_id, first: first)
115
+ def validation_impact(ruleset_version_id:, first: nil, scope: nil, cache: nil)
116
+ query = QueryBuilder.ruleset_validation_impact(
117
+ ruleset_version_id: ruleset_version_id,
118
+ first: first,
119
+ scope: scope
120
+ )
121
+ variables = build_variables(rulesetVersionId: ruleset_version_id, first: first, scope: scope)
118
122
  key = cache_key('rulesets', 'validation_impact', **variables)
119
123
 
120
124
  with_cache(key, resource: :rulesets, cache: cache) do
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module CardDB
4
- VERSION = '0.5.5'
4
+ VERSION = '0.5.8'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: carddb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.5
4
+ version: 0.5.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - CardDB Team