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 +4 -4
- data/.rspec_status +166 -159
- data/CHANGELOG.md +20 -0
- data/README.md +14 -0
- data/lib/carddb/batch.rb +49 -5
- data/lib/carddb/collection.rb +106 -0
- data/lib/carddb/query_builder.rb +104 -3
- data/lib/carddb/resources/decks.rb +20 -0
- data/lib/carddb/resources/rulesets.rb +7 -3
- data/lib/carddb/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: e96ae705e2f67a17c453bdb57a8b291f42839870807ae5dc882a9a6ebb4b7878
|
|
4
|
+
data.tar.gz: 238def5089c381ad922eeea2a27a8ab1f1887a4a5c488b88647031f4f17b3320
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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.
|
|
4
|
-
./spec/carddb/
|
|
5
|
-
./spec/carddb/client_spec.rb[1:1:
|
|
6
|
-
./spec/carddb/client_spec.rb[1:1:
|
|
7
|
-
./spec/carddb/client_spec.rb[1:1:
|
|
8
|
-
./spec/carddb/client_spec.rb[1:
|
|
9
|
-
./spec/carddb/client_spec.rb[1:2:
|
|
10
|
-
./spec/carddb/client_spec.rb[1:
|
|
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.
|
|
13
|
-
./spec/carddb/client_spec.rb[1:6:1] | passed | 0.
|
|
14
|
-
./spec/carddb/client_spec.rb[1:7:1] | passed | 0.
|
|
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.
|
|
17
|
-
./spec/carddb/client_spec.rb[1:10:1] | passed | 0.
|
|
18
|
-
./spec/carddb/client_spec.rb[1:11:1] | passed | 0.
|
|
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.
|
|
21
|
-
./spec/carddb/client_spec.rb[1:14:1] | passed | 0.
|
|
22
|
-
./spec/carddb/client_spec.rb[1:14:2] | passed | 0.
|
|
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.
|
|
25
|
-
./spec/carddb/collection_spec.rb[3:1:1] | passed | 0.
|
|
26
|
-
./spec/carddb/collection_spec.rb[3:1:2] | passed | 0.
|
|
27
|
-
./spec/carddb/collection_spec.rb[3:1:3] | passed | 0.
|
|
28
|
-
./spec/carddb/collection_spec.rb[3:1:4] | passed | 0.
|
|
29
|
-
./spec/carddb/collection_spec.rb[3:1:5] | passed | 0.
|
|
30
|
-
./spec/carddb/collection_spec.rb[4:1:1] | passed | 0.
|
|
31
|
-
./spec/carddb/collection_spec.rb[4:1:2] | passed | 0.
|
|
32
|
-
./spec/carddb/collection_spec.rb[4:1:3] | passed | 0.
|
|
33
|
-
./spec/carddb/collection_spec.rb[4:1:4] | passed | 0.
|
|
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.
|
|
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.
|
|
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.
|
|
41
|
-
./spec/carddb/configuration_spec.rb[1:2:2:1] | passed | 0.
|
|
42
|
-
./spec/carddb/configuration_spec.rb[1:2:2:2] | passed | 0.
|
|
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.
|
|
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.
|
|
48
|
-
./spec/carddb/configuration_spec.rb[1:4:2] | passed | 0.
|
|
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.
|
|
53
|
-
./spec/carddb/configuration_spec.rb[1:7:1] | passed | 0.
|
|
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.
|
|
57
|
-
./spec/carddb/deck_tokens_spec.rb[1:2:1] | passed | 0.
|
|
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.
|
|
60
|
-
./spec/carddb/filter_builder_spec.rb[1:1:1] | passed | 0.
|
|
61
|
-
./spec/carddb/filter_builder_spec.rb[1:1:2] | passed | 0.
|
|
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.
|
|
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.
|
|
70
|
-
./spec/carddb/filter_builder_spec.rb[1:2:3] | passed | 0.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
89
|
-
./spec/carddb/query_builder_spec.rb[1:4:2] | passed | 0.
|
|
90
|
-
./spec/carddb/query_builder_spec.rb[1:5:1] | passed | 0.
|
|
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.
|
|
93
|
-
./spec/carddb/query_builder_spec.rb[1:5:4] | passed | 0.
|
|
94
|
-
./spec/carddb/query_builder_spec.rb[1:5:5] | passed | 0.
|
|
95
|
-
./spec/carddb/query_builder_spec.rb[1:5:6] | passed | 0.
|
|
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.
|
|
98
|
-
./spec/carddb/query_builder_spec.rb[1:5:9] | passed | 0.
|
|
99
|
-
./spec/carddb/query_builder_spec.rb[1:
|
|
100
|
-
./spec/carddb/query_builder_spec.rb[1:6:
|
|
101
|
-
./spec/carddb/query_builder_spec.rb[1:6:
|
|
102
|
-
./spec/carddb/query_builder_spec.rb[1:6:
|
|
103
|
-
./spec/carddb/query_builder_spec.rb[1:6:
|
|
104
|
-
./spec/carddb/query_builder_spec.rb[1:6:
|
|
105
|
-
./spec/carddb/query_builder_spec.rb[1:6:
|
|
106
|
-
./spec/carddb/query_builder_spec.rb[1:6:
|
|
107
|
-
./spec/carddb/query_builder_spec.rb[1:6:
|
|
108
|
-
./spec/carddb/query_builder_spec.rb[1:6:
|
|
109
|
-
./spec/carddb/
|
|
110
|
-
./spec/carddb/
|
|
111
|
-
./spec/carddb/resources/datasets_spec.rb[1:
|
|
112
|
-
./spec/carddb/resources/datasets_spec.rb[1:
|
|
113
|
-
./spec/carddb/resources/datasets_spec.rb[1:
|
|
114
|
-
./spec/carddb/resources/
|
|
115
|
-
./spec/carddb/resources/
|
|
116
|
-
./spec/carddb/resources/decks_spec.rb[1:1:
|
|
117
|
-
./spec/carddb/resources/decks_spec.rb[1:1:
|
|
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.
|
|
120
|
-
./spec/carddb/resources/decks_spec.rb[1:2:3] | passed | 0.
|
|
121
|
-
./spec/carddb/resources/decks_spec.rb[1:3:1] | passed | 0.
|
|
122
|
-
./spec/carddb/resources/decks_spec.rb[1:4:1] | passed | 0.
|
|
123
|
-
./spec/carddb/resources/decks_spec.rb[1:
|
|
124
|
-
./spec/carddb/resources/decks_spec.rb[1:
|
|
125
|
-
./spec/carddb/resources/decks_spec.rb[1:
|
|
126
|
-
./spec/carddb/resources/decks_spec.rb[1:6:
|
|
127
|
-
./spec/carddb/resources/decks_spec.rb[1:
|
|
128
|
-
./spec/carddb/resources/decks_spec.rb[1:7:
|
|
129
|
-
./spec/carddb/resources/decks_spec.rb[1:
|
|
130
|
-
./spec/carddb/resources/decks_spec.rb[1:
|
|
131
|
-
./spec/carddb/resources/decks_spec.rb[1:
|
|
132
|
-
./spec/carddb/resources/decks_spec.rb[1:
|
|
133
|
-
./spec/carddb/resources/decks_spec.rb[1:10:
|
|
134
|
-
./spec/carddb/resources/decks_spec.rb[1:
|
|
135
|
-
./spec/carddb/resources/decks_spec.rb[1:11:
|
|
136
|
-
./spec/carddb/resources/decks_spec.rb[1:
|
|
137
|
-
./spec/carddb/resources/decks_spec.rb[1:
|
|
138
|
-
./spec/carddb/resources/decks_spec.rb[1:12:
|
|
139
|
-
./spec/carddb/resources/decks_spec.rb[1:
|
|
140
|
-
./spec/carddb/resources/decks_spec.rb[1:13:
|
|
141
|
-
./spec/carddb/resources/decks_spec.rb[1:
|
|
142
|
-
./spec/carddb/resources/decks_spec.rb[1:
|
|
143
|
-
./spec/carddb/resources/decks_spec.rb[1:
|
|
144
|
-
./spec/carddb/resources/decks_spec.rb[1:15:
|
|
145
|
-
./spec/carddb/resources/decks_spec.rb[1:16:1] | passed | 0.
|
|
146
|
-
./spec/carddb/resources/decks_spec.rb[1:
|
|
147
|
-
./spec/carddb/resources/decks_spec.rb[1:
|
|
148
|
-
./spec/carddb/resources/decks_spec.rb[1:
|
|
149
|
-
./spec/carddb/resources/decks_spec.rb[1:
|
|
150
|
-
./spec/carddb/resources/decks_spec.rb[1:
|
|
151
|
-
./spec/carddb/resources/
|
|
152
|
-
./spec/carddb/resources/
|
|
153
|
-
./spec/carddb/resources/
|
|
154
|
-
./spec/carddb/resources/games_spec.rb[1:
|
|
155
|
-
./spec/carddb/resources/
|
|
156
|
-
./spec/carddb/resources/
|
|
157
|
-
./spec/carddb/resources/
|
|
158
|
-
./spec/carddb/resources/publisher_workflows_spec.rb[1:
|
|
159
|
-
./spec/carddb/resources/publisher_workflows_spec.rb[1:
|
|
160
|
-
./spec/carddb/resources/publisher_workflows_spec.rb[1:3
|
|
161
|
-
./spec/carddb/resources/publisher_workflows_spec.rb[1:
|
|
162
|
-
./spec/carddb/resources/publisher_workflows_spec.rb[1:
|
|
163
|
-
./spec/carddb/resources/publisher_workflows_spec.rb[1:
|
|
164
|
-
./spec/carddb/resources/publisher_workflows_spec.rb[1:
|
|
165
|
-
./spec/carddb/resources/publisher_workflows_spec.rb[1:
|
|
166
|
-
./spec/carddb/resources/publisher_workflows_spec.rb[1:
|
|
167
|
-
./spec/carddb/resources/publisher_workflows_spec.rb[1:
|
|
168
|
-
./spec/carddb/resources/
|
|
169
|
-
./spec/carddb/resources/
|
|
170
|
-
./spec/carddb/resources/
|
|
171
|
-
./spec/carddb/resources/
|
|
172
|
-
./spec/carddb/resources/
|
|
173
|
-
./spec/carddb/resources/records_spec.rb[1:1:
|
|
174
|
-
./spec/carddb/resources/records_spec.rb[1:2
|
|
175
|
-
./spec/carddb/resources/records_spec.rb[1:
|
|
176
|
-
./spec/carddb/resources/records_spec.rb[1:
|
|
177
|
-
./spec/carddb/resources/records_spec.rb[1:
|
|
178
|
-
./spec/carddb/resources/records_spec.rb[1:
|
|
179
|
-
./spec/carddb/resources/records_spec.rb[1:
|
|
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.
|
|
182
|
-
./spec/carddb/resources/rules_spec.rb[1:1:1] | passed | 0.
|
|
183
|
-
./spec/carddb/resources/rules_spec.rb[1:2:1] | passed | 0.
|
|
184
|
-
./spec/carddb/resources/rulesets_spec.rb[1:1:1] | passed | 0.
|
|
185
|
-
./spec/carddb/resources/rulesets_spec.rb[1:1:2] | passed | 0.
|
|
186
|
-
./spec/carddb/resources/rulesets_spec.rb[1:1:3] | passed | 0.
|
|
187
|
-
./spec/carddb/resources/rulesets_spec.rb[1:2:1] | passed | 0.
|
|
188
|
-
./spec/carddb/resources/rulesets_spec.rb[1:2:2] | passed | 0.
|
|
189
|
-
./spec/carddb/resources/rulesets_spec.rb[1:2:3] | passed | 0.
|
|
190
|
-
./spec/carddb/resources/rulesets_spec.rb[1:3:1] | passed | 0.
|
|
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.
|
|
193
|
-
./spec/carddb/resources/scans_spec.rb[1:2] | passed | 0.
|
|
194
|
-
./spec/carddb/resources/scans_spec.rb[1:3] | passed | 0.
|
|
195
|
-
./spec/carddb/resources/scans_spec.rb[1:4] | passed | 0.
|
|
196
|
-
./spec/carddb/resources/scans_spec.rb[1:5] | passed | 0.
|
|
197
|
-
./spec/carddb/resources/scans_spec.rb[1:6] | passed | 0.
|
|
198
|
-
./spec/carddb/resources/scans_spec.rb[1:7] | passed | 0.
|
|
199
|
-
./spec/carddb/resources/scans_spec.rb[1:8] | passed | 0.
|
|
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.
|
|
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,
|
|
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
|
-
|
|
357
|
+
"latestPublishedVersion { id deckId versionNumber slug identifier title description formatKey visibility currentLegality { #{deck_legality_fields} } }",
|
|
340
358
|
'publishedAt draftRevision draftUpdatedAt draftUpdatedByAccountId draftUpdatedByApiApplicationId',
|
|
341
|
-
|
|
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
|
data/lib/carddb/collection.rb
CHANGED
|
@@ -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']
|
data/lib/carddb/query_builder.rb
CHANGED
|
@@ -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: [
|
|
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(
|
|
117
|
-
|
|
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
|
data/lib/carddb/version.rb
CHANGED