carddb 0.4.6 → 0.5.1
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 +147 -145
- data/CHANGELOG.md +12 -0
- data/README.md +11 -1
- data/lib/carddb/collection.rb +50 -0
- data/lib/carddb/query_builder.rb +69 -0
- data/lib/carddb/resources/datasets.rb +59 -0
- 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: d00dbdfaebec37115c6c7a651087fdadb5c09c5895d05590beede4f30a8b1bcd
|
|
4
|
+
data.tar.gz: 9949f66bd4a9360732e935b2d9c7efb07c616d087d3177546800f640339353ea
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 78cdc870aea1d9f69c866670bc57e1633533e26334549fc75fe370fbc62e63f8906bef264f7b2e08a50369efc243d75ab5ba236b1be20df4c3d64e9017184413
|
|
7
|
+
data.tar.gz: 63c80c883393a46d1b3e011438fd6d57b5cbf898985d357a86bca7bbb9b203454d8f3c6423d1e3881e79500f70aaef4ff97d2fa8338d0f44bf7d953158b348b3
|
data/.rspec_status
CHANGED
|
@@ -1,204 +1,206 @@
|
|
|
1
1
|
example_id | status | run_time |
|
|
2
2
|
---------------------------------------------------------- | ------ | --------------- |
|
|
3
|
-
./spec/carddb/batch_spec.rb[1:1] | passed | 0.
|
|
4
|
-
./spec/carddb/client_spec.rb[1:1:1] | passed | 0.
|
|
5
|
-
./spec/carddb/client_spec.rb[1:1:2] | passed | 0.
|
|
3
|
+
./spec/carddb/batch_spec.rb[1:1] | passed | 0.00878 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
6
|
./spec/carddb/client_spec.rb[1:1:3] | passed | 0.00004 seconds |
|
|
7
7
|
./spec/carddb/client_spec.rb[1:1:4] | passed | 0.00003 seconds |
|
|
8
|
-
./spec/carddb/client_spec.rb[1:2:1] | passed | 0.
|
|
9
|
-
./spec/carddb/client_spec.rb[1:2:2] | passed | 0.
|
|
10
|
-
./spec/carddb/client_spec.rb[1:3:1] | passed | 0.
|
|
8
|
+
./spec/carddb/client_spec.rb[1:2:1] | passed | 0.00015 seconds |
|
|
9
|
+
./spec/carddb/client_spec.rb[1:2:2] | passed | 0.00018 seconds |
|
|
10
|
+
./spec/carddb/client_spec.rb[1:3:1] | passed | 0.00003 seconds |
|
|
11
11
|
./spec/carddb/client_spec.rb[1:4:1] | passed | 0.00003 seconds |
|
|
12
|
-
./spec/carddb/client_spec.rb[1:5:1] | passed | 0.
|
|
12
|
+
./spec/carddb/client_spec.rb[1:5:1] | passed | 0.00004 seconds |
|
|
13
13
|
./spec/carddb/client_spec.rb[1:6:1] | passed | 0.00003 seconds |
|
|
14
14
|
./spec/carddb/client_spec.rb[1:7:1] | passed | 0.00003 seconds |
|
|
15
15
|
./spec/carddb/client_spec.rb[1:8:1] | passed | 0.00003 seconds |
|
|
16
16
|
./spec/carddb/client_spec.rb[1:9:1] | passed | 0.00003 seconds |
|
|
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:10:1] | passed | 0.00018 seconds |
|
|
18
|
+
./spec/carddb/client_spec.rb[1:11:1] | passed | 0.00005 seconds |
|
|
19
19
|
./spec/carddb/client_spec.rb[1:12:1] | passed | 0.00003 seconds |
|
|
20
20
|
./spec/carddb/client_spec.rb[1:13:1] | passed | 0.00003 seconds |
|
|
21
|
-
./spec/carddb/client_spec.rb[1:14:1] | passed | 0.
|
|
22
|
-
./spec/carddb/client_spec.rb[1:14:2] | passed | 0.
|
|
23
|
-
./spec/carddb/collection_spec.rb[1:1:1] | passed | 0.
|
|
21
|
+
./spec/carddb/client_spec.rb[1:14:1] | passed | 0.0004 seconds |
|
|
22
|
+
./spec/carddb/client_spec.rb[1:14:2] | passed | 0.00401 seconds |
|
|
23
|
+
./spec/carddb/collection_spec.rb[1:1:1] | passed | 0.00005 seconds |
|
|
24
24
|
./spec/carddb/collection_spec.rb[2:1:1] | passed | 0.00003 seconds |
|
|
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.
|
|
25
|
+
./spec/carddb/collection_spec.rb[3:1:1] | passed | 0.00213 seconds |
|
|
26
|
+
./spec/carddb/collection_spec.rb[3:1:2] | passed | 0.00014 seconds |
|
|
27
|
+
./spec/carddb/collection_spec.rb[3:1:3] | passed | 0.00034 seconds |
|
|
28
|
+
./spec/carddb/collection_spec.rb[3:1:4] | passed | 0.00031 seconds |
|
|
29
29
|
./spec/carddb/collection_spec.rb[3:1:5] | passed | 0.00004 seconds |
|
|
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.
|
|
30
|
+
./spec/carddb/collection_spec.rb[4:1:1] | passed | 0.00013 seconds |
|
|
31
|
+
./spec/carddb/collection_spec.rb[4:1:2] | passed | 0.00014 seconds |
|
|
32
|
+
./spec/carddb/collection_spec.rb[4:1:3] | passed | 0.00013 seconds |
|
|
33
33
|
./spec/carddb/collection_spec.rb[4:1:4] | passed | 0.00004 seconds |
|
|
34
34
|
./spec/carddb/configuration_spec.rb[1:1:1] | passed | 0.00004 seconds |
|
|
35
35
|
./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:4] | passed | 0.
|
|
36
|
+
./spec/carddb/configuration_spec.rb[1:1:3] | passed | 0.00004 seconds |
|
|
37
|
+
./spec/carddb/configuration_spec.rb[1:1:4] | passed | 0.00006 seconds |
|
|
38
38
|
./spec/carddb/configuration_spec.rb[1:1:5] | passed | 0.00003 seconds |
|
|
39
39
|
./spec/carddb/configuration_spec.rb[1:1:6] | passed | 0.00003 seconds |
|
|
40
|
-
./spec/carddb/configuration_spec.rb[1:2:1:1] | passed | 0.
|
|
40
|
+
./spec/carddb/configuration_spec.rb[1:2:1:1] | passed | 0.00004 seconds |
|
|
41
41
|
./spec/carddb/configuration_spec.rb[1:2:2:1] | passed | 0.00004 seconds |
|
|
42
42
|
./spec/carddb/configuration_spec.rb[1:2:2:2] | passed | 0.00004 seconds |
|
|
43
|
-
./spec/carddb/configuration_spec.rb[1:3:1:1] | passed | 0.
|
|
44
|
-
./spec/carddb/configuration_spec.rb[1:3:2:1] | passed | 0.
|
|
45
|
-
./spec/carddb/configuration_spec.rb[1:3:2:2] | passed | 0.
|
|
46
|
-
./spec/carddb/configuration_spec.rb[1:3:2:3] | passed | 0.
|
|
43
|
+
./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:2] | passed | 0.00005 seconds |
|
|
46
|
+
./spec/carddb/configuration_spec.rb[1:3:2:3] | passed | 0.00003 seconds |
|
|
47
47
|
./spec/carddb/configuration_spec.rb[1:4:1] | passed | 0.00003 seconds |
|
|
48
|
-
./spec/carddb/configuration_spec.rb[1:4:2] | passed | 0.
|
|
48
|
+
./spec/carddb/configuration_spec.rb[1:4:2] | passed | 0.00003 seconds |
|
|
49
49
|
./spec/carddb/configuration_spec.rb[1:5:1] | passed | 0.00003 seconds |
|
|
50
50
|
./spec/carddb/configuration_spec.rb[1:6:1] | passed | 0.00003 seconds |
|
|
51
51
|
./spec/carddb/configuration_spec.rb[1:6:2] | passed | 0.00003 seconds |
|
|
52
52
|
./spec/carddb/configuration_spec.rb[1:6:3] | passed | 0.00003 seconds |
|
|
53
|
-
./spec/carddb/configuration_spec.rb[1:7:1] | passed | 0.
|
|
53
|
+
./spec/carddb/configuration_spec.rb[1:7:1] | passed | 0.00004 seconds |
|
|
54
54
|
./spec/carddb/configuration_spec.rb[1:7:2] | passed | 0.00004 seconds |
|
|
55
|
-
./spec/carddb/configuration_spec.rb[1:7:3] | passed | 0.
|
|
56
|
-
./spec/carddb/deck_tokens_spec.rb[1:1:1] | passed | 0.
|
|
57
|
-
./spec/carddb/deck_tokens_spec.rb[1:2:1] | passed | 0.
|
|
58
|
-
./spec/carddb/deck_tokens_spec.rb[1:2:2] | passed | 0.
|
|
59
|
-
./spec/carddb/deck_tokens_spec.rb[1:2:3] | passed | 0.
|
|
55
|
+
./spec/carddb/configuration_spec.rb[1:7:3] | passed | 0.00006 seconds |
|
|
56
|
+
./spec/carddb/deck_tokens_spec.rb[1:1:1] | passed | 0.00067 seconds |
|
|
57
|
+
./spec/carddb/deck_tokens_spec.rb[1:2:1] | passed | 0.00068 seconds |
|
|
58
|
+
./spec/carddb/deck_tokens_spec.rb[1:2:2] | passed | 0.00024 seconds |
|
|
59
|
+
./spec/carddb/deck_tokens_spec.rb[1:2:3] | passed | 0.00005 seconds |
|
|
60
60
|
./spec/carddb/filter_builder_spec.rb[1:1:1] | passed | 0.00004 seconds |
|
|
61
61
|
./spec/carddb/filter_builder_spec.rb[1:1:2] | passed | 0.00004 seconds |
|
|
62
|
-
./spec/carddb/filter_builder_spec.rb[1:1:3] | passed | 0.
|
|
63
|
-
./spec/carddb/filter_builder_spec.rb[1:1:4] | passed | 0.
|
|
64
|
-
./spec/carddb/filter_builder_spec.rb[1:1:5] | passed | 0.
|
|
62
|
+
./spec/carddb/filter_builder_spec.rb[1:1:3] | passed | 0.00374 seconds |
|
|
63
|
+
./spec/carddb/filter_builder_spec.rb[1:1:4] | passed | 0.00005 seconds |
|
|
64
|
+
./spec/carddb/filter_builder_spec.rb[1:1:5] | passed | 0.00004 seconds |
|
|
65
65
|
./spec/carddb/filter_builder_spec.rb[1:1:6] | passed | 0.00004 seconds |
|
|
66
66
|
./spec/carddb/filter_builder_spec.rb[1:1:7] | passed | 0.00003 seconds |
|
|
67
67
|
./spec/carddb/filter_builder_spec.rb[1:1:8] | passed | 0.00003 seconds |
|
|
68
|
-
./spec/carddb/filter_builder_spec.rb[1:2:1] | passed | 0.
|
|
68
|
+
./spec/carddb/filter_builder_spec.rb[1:2:1] | passed | 0.00005 seconds |
|
|
69
69
|
./spec/carddb/filter_builder_spec.rb[1:2:2] | passed | 0.00003 seconds |
|
|
70
70
|
./spec/carddb/filter_builder_spec.rb[1:2:3] | passed | 0.00003 seconds |
|
|
71
|
-
./spec/carddb/filter_builder_spec.rb[1:2:4] | passed | 0.
|
|
72
|
-
./spec/carddb/filter_builder_spec.rb[1:2:5] | passed | 0.
|
|
71
|
+
./spec/carddb/filter_builder_spec.rb[1:2:4] | passed | 0.00004 seconds |
|
|
72
|
+
./spec/carddb/filter_builder_spec.rb[1:2:5] | passed | 0.00004 seconds |
|
|
73
73
|
./spec/carddb/filter_builder_spec.rb[1:2:6] | passed | 0.00003 seconds |
|
|
74
74
|
./spec/carddb/filter_builder_spec.rb[1:2:7] | passed | 0.00003 seconds |
|
|
75
75
|
./spec/carddb/filter_builder_spec.rb[1:2:8] | passed | 0.00003 seconds |
|
|
76
76
|
./spec/carddb/filter_builder_spec.rb[1:2:9] | passed | 0.00003 seconds |
|
|
77
77
|
./spec/carddb/filter_builder_spec.rb[1:2:10] | passed | 0.00003 seconds |
|
|
78
|
-
./spec/carddb/filter_builder_spec.rb[1:2:11] | passed | 0.
|
|
79
|
-
./spec/carddb/filter_builder_spec.rb[1:2:12] | passed | 0.
|
|
78
|
+
./spec/carddb/filter_builder_spec.rb[1:2:11] | passed | 0.00041 seconds |
|
|
79
|
+
./spec/carddb/filter_builder_spec.rb[1:2:12] | passed | 0.00004 seconds |
|
|
80
80
|
./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:2] | passed | 0.
|
|
83
|
-
./spec/carddb/query_builder_spec.rb[1:1:3] | passed | 0.
|
|
84
|
-
./spec/carddb/query_builder_spec.rb[1:2:1:1] | passed | 0.
|
|
81
|
+
./spec/carddb/query_builder_spec.rb[1:1:1] | passed | 0.00005 seconds |
|
|
82
|
+
./spec/carddb/query_builder_spec.rb[1:1:2] | passed | 0.00004 seconds |
|
|
83
|
+
./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.00005 seconds |
|
|
85
85
|
./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.
|
|
86
|
+
./spec/carddb/query_builder_spec.rb[1:3:1] | passed | 0.00004 seconds |
|
|
87
87
|
./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.
|
|
88
|
+
./spec/carddb/query_builder_spec.rb[1:4:1] | passed | 0.00013 seconds |
|
|
89
|
+
./spec/carddb/query_builder_spec.rb[1:4:2] | passed | 0.00004 seconds |
|
|
90
90
|
./spec/carddb/query_builder_spec.rb[1:5:1] | passed | 0.00003 seconds |
|
|
91
|
-
./spec/carddb/query_builder_spec.rb[1:5:2] | passed | 0.
|
|
91
|
+
./spec/carddb/query_builder_spec.rb[1:5:2] | passed | 0.00005 seconds |
|
|
92
92
|
./spec/carddb/query_builder_spec.rb[1:5:3] | passed | 0.00004 seconds |
|
|
93
93
|
./spec/carddb/query_builder_spec.rb[1:5:4] | passed | 0.00003 seconds |
|
|
94
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.
|
|
95
|
+
./spec/carddb/query_builder_spec.rb[1:5:6] | passed | 0.00004 seconds |
|
|
96
96
|
./spec/carddb/query_builder_spec.rb[1:5:7] | passed | 0.00003 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:6:1] | passed | 0.
|
|
97
|
+
./spec/carddb/query_builder_spec.rb[1:5:8] | passed | 0.00006 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.0001 seconds |
|
|
100
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.
|
|
102
|
-
./spec/carddb/query_builder_spec.rb[1:6:4] | passed | 0.
|
|
101
|
+
./spec/carddb/query_builder_spec.rb[1:6:3] | passed | 0.00005 seconds |
|
|
102
|
+
./spec/carddb/query_builder_spec.rb[1:6:4] | passed | 0.00003 seconds |
|
|
103
103
|
./spec/carddb/query_builder_spec.rb[1:6:5] | passed | 0.00005 seconds |
|
|
104
104
|
./spec/carddb/query_builder_spec.rb[1:6:6] | passed | 0.00006 seconds |
|
|
105
105
|
./spec/carddb/query_builder_spec.rb[1:6:7] | passed | 0.00006 seconds |
|
|
106
|
-
./spec/carddb/query_builder_spec.rb[1:6:8] | passed | 0.
|
|
107
|
-
./spec/carddb/query_builder_spec.rb[1:6:9] | passed | 0.
|
|
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.00003 seconds |
|
|
108
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.
|
|
109
|
+
./spec/carddb/resources/datasets_spec.rb[1:1:1] | passed | 0.00411 seconds |
|
|
110
110
|
./spec/carddb/resources/datasets_spec.rb[1:1:2] | passed | 0.00382 seconds |
|
|
111
|
-
./spec/carddb/resources/datasets_spec.rb[1:2:1] | passed | 0.
|
|
112
|
-
./spec/carddb/resources/
|
|
113
|
-
./spec/carddb/resources/
|
|
114
|
-
./spec/carddb/resources/decks_spec.rb[1:1:
|
|
115
|
-
./spec/carddb/resources/decks_spec.rb[1:1:
|
|
116
|
-
./spec/carddb/resources/decks_spec.rb[1:
|
|
117
|
-
./spec/carddb/resources/decks_spec.rb[1:
|
|
118
|
-
./spec/carddb/resources/decks_spec.rb[1:2:
|
|
119
|
-
./spec/carddb/resources/decks_spec.rb[1:
|
|
120
|
-
./spec/carddb/resources/decks_spec.rb[1:
|
|
121
|
-
./spec/carddb/resources/decks_spec.rb[1:
|
|
122
|
-
./spec/carddb/resources/decks_spec.rb[1:
|
|
123
|
-
./spec/carddb/resources/decks_spec.rb[1:
|
|
124
|
-
./spec/carddb/resources/decks_spec.rb[1:6:
|
|
111
|
+
./spec/carddb/resources/datasets_spec.rb[1:2:1] | passed | 0.00402 seconds |
|
|
112
|
+
./spec/carddb/resources/datasets_spec.rb[1:3:1] | passed | 0.00418 seconds |
|
|
113
|
+
./spec/carddb/resources/datasets_spec.rb[1:3:2] | passed | 0.00412 seconds |
|
|
114
|
+
./spec/carddb/resources/decks_spec.rb[1:1:1] | passed | 0.00442 seconds |
|
|
115
|
+
./spec/carddb/resources/decks_spec.rb[1:1:2] | passed | 0.00392 seconds |
|
|
116
|
+
./spec/carddb/resources/decks_spec.rb[1:1:3] | passed | 0.00384 seconds |
|
|
117
|
+
./spec/carddb/resources/decks_spec.rb[1:1:4] | passed | 0.00405 seconds |
|
|
118
|
+
./spec/carddb/resources/decks_spec.rb[1:2:1] | passed | 0.00423 seconds |
|
|
119
|
+
./spec/carddb/resources/decks_spec.rb[1:2:2] | passed | 0.00816 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.00375 seconds |
|
|
122
|
+
./spec/carddb/resources/decks_spec.rb[1:4:1] | passed | 0.00372 seconds |
|
|
123
|
+
./spec/carddb/resources/decks_spec.rb[1:5:1] | passed | 0.00354 seconds |
|
|
124
|
+
./spec/carddb/resources/decks_spec.rb[1:6:1] | passed | 0.00375 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.0038 seconds |
|
|
125
127
|
./spec/carddb/resources/decks_spec.rb[1:6:4] | passed | 0.00008 seconds |
|
|
126
|
-
./spec/carddb/resources/decks_spec.rb[1:7:1] | passed | 0.
|
|
127
|
-
./spec/carddb/resources/decks_spec.rb[1:8:1] | passed | 0.
|
|
128
|
-
./spec/carddb/resources/decks_spec.rb[1:9:1] | passed | 0.
|
|
129
|
-
./spec/carddb/resources/decks_spec.rb[1:10:1] | passed | 0.
|
|
130
|
-
./spec/carddb/resources/decks_spec.rb[1:10:2] | passed | 0.
|
|
131
|
-
./spec/carddb/resources/decks_spec.rb[1:10:3] | passed | 0.
|
|
132
|
-
./spec/carddb/resources/decks_spec.rb[1:10:4] | passed | 0.
|
|
133
|
-
./spec/carddb/resources/decks_spec.rb[1:11:1] | passed | 0.
|
|
134
|
-
./spec/carddb/resources/decks_spec.rb[1:12:1] | passed | 0.
|
|
135
|
-
./spec/carddb/resources/decks_spec.rb[1:12:2] | passed | 0.
|
|
136
|
-
./spec/carddb/resources/decks_spec.rb[1:12:3] | passed | 0.
|
|
137
|
-
./spec/carddb/resources/decks_spec.rb[1:12:4] | passed | 0.
|
|
138
|
-
./spec/carddb/resources/decks_spec.rb[1:13:1] | passed | 0.
|
|
139
|
-
./spec/carddb/resources/decks_spec.rb[1:14:1] | passed | 0.
|
|
140
|
-
./spec/carddb/resources/decks_spec.rb[1:15:1] | passed | 0.
|
|
141
|
-
./spec/carddb/resources/decks_spec.rb[1:15:2] | passed | 0.
|
|
142
|
-
./spec/carddb/resources/decks_spec.rb[1:15:3] | passed | 0.
|
|
143
|
-
./spec/carddb/resources/decks_spec.rb[1:16:1] | passed | 0.
|
|
144
|
-
./spec/carddb/resources/decks_spec.rb[1:17:1] | passed | 0.
|
|
145
|
-
./spec/carddb/resources/decks_spec.rb[1:18:1] | passed | 0.
|
|
146
|
-
./spec/carddb/resources/decks_spec.rb[1:19:1] | passed | 0.
|
|
147
|
-
./spec/carddb/resources/decks_spec.rb[1:20:1] | passed | 0.
|
|
148
|
-
./spec/carddb/resources/decks_spec.rb[1:21:1] | passed | 0.
|
|
149
|
-
./spec/carddb/resources/games_spec.rb[1:1:1] | passed | 0.
|
|
150
|
-
./spec/carddb/resources/games_spec.rb[1:1:2] | passed | 0.
|
|
151
|
-
./spec/carddb/resources/games_spec.rb[1:2:1] | passed | 0.
|
|
152
|
-
./spec/carddb/resources/games_spec.rb[1:2:2] | passed | 0.
|
|
153
|
-
./spec/carddb/resources/publisher_workflows_spec.rb[1:1:1] | passed | 0.
|
|
154
|
-
./spec/carddb/resources/publisher_workflows_spec.rb[1:1:2] | passed | 0.
|
|
155
|
-
./spec/carddb/resources/publisher_workflows_spec.rb[1:1:3] | passed | 0.
|
|
156
|
-
./spec/carddb/resources/publisher_workflows_spec.rb[1:2:1] | passed | 0.
|
|
128
|
+
./spec/carddb/resources/decks_spec.rb[1:7:1] | passed | 0.00374 seconds |
|
|
129
|
+
./spec/carddb/resources/decks_spec.rb[1:8:1] | passed | 0.00388 seconds |
|
|
130
|
+
./spec/carddb/resources/decks_spec.rb[1:9:1] | passed | 0.00369 seconds |
|
|
131
|
+
./spec/carddb/resources/decks_spec.rb[1:10:1] | passed | 0.00399 seconds |
|
|
132
|
+
./spec/carddb/resources/decks_spec.rb[1:10:2] | passed | 0.00397 seconds |
|
|
133
|
+
./spec/carddb/resources/decks_spec.rb[1:10:3] | passed | 0.00414 seconds |
|
|
134
|
+
./spec/carddb/resources/decks_spec.rb[1:10:4] | passed | 0.00406 seconds |
|
|
135
|
+
./spec/carddb/resources/decks_spec.rb[1:11:1] | passed | 0.00374 seconds |
|
|
136
|
+
./spec/carddb/resources/decks_spec.rb[1:12:1] | passed | 0.00367 seconds |
|
|
137
|
+
./spec/carddb/resources/decks_spec.rb[1:12:2] | passed | 0.00392 seconds |
|
|
138
|
+
./spec/carddb/resources/decks_spec.rb[1:12:3] | passed | 0.00392 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.00372 seconds |
|
|
141
|
+
./spec/carddb/resources/decks_spec.rb[1:14:1] | passed | 0.00731 seconds |
|
|
142
|
+
./spec/carddb/resources/decks_spec.rb[1:15:1] | passed | 0.00432 seconds |
|
|
143
|
+
./spec/carddb/resources/decks_spec.rb[1:15:2] | passed | 0.00506 seconds |
|
|
144
|
+
./spec/carddb/resources/decks_spec.rb[1:15:3] | passed | 0.00443 seconds |
|
|
145
|
+
./spec/carddb/resources/decks_spec.rb[1:16:1] | passed | 0.0048 seconds |
|
|
146
|
+
./spec/carddb/resources/decks_spec.rb[1:17:1] | passed | 0.00482 seconds |
|
|
147
|
+
./spec/carddb/resources/decks_spec.rb[1:18:1] | passed | 0.00354 seconds |
|
|
148
|
+
./spec/carddb/resources/decks_spec.rb[1:19:1] | passed | 0.00473 seconds |
|
|
149
|
+
./spec/carddb/resources/decks_spec.rb[1:20:1] | passed | 0.0037 seconds |
|
|
150
|
+
./spec/carddb/resources/decks_spec.rb[1:21:1] | passed | 0.00344 seconds |
|
|
151
|
+
./spec/carddb/resources/games_spec.rb[1:1:1] | passed | 0.00428 seconds |
|
|
152
|
+
./spec/carddb/resources/games_spec.rb[1:1:2] | passed | 0.00007 seconds |
|
|
153
|
+
./spec/carddb/resources/games_spec.rb[1:2:1] | passed | 0.00368 seconds |
|
|
154
|
+
./spec/carddb/resources/games_spec.rb[1:2:2] | passed | 0.00445 seconds |
|
|
155
|
+
./spec/carddb/resources/publisher_workflows_spec.rb[1:1:1] | passed | 0.00366 seconds |
|
|
156
|
+
./spec/carddb/resources/publisher_workflows_spec.rb[1:1:2] | passed | 0.00415 seconds |
|
|
157
|
+
./spec/carddb/resources/publisher_workflows_spec.rb[1:1:3] | passed | 0.00372 seconds |
|
|
158
|
+
./spec/carddb/resources/publisher_workflows_spec.rb[1:2:1] | passed | 0.00445 seconds |
|
|
157
159
|
./spec/carddb/resources/publisher_workflows_spec.rb[1:2:2] | passed | 0.00006 seconds |
|
|
158
|
-
./spec/carddb/resources/publisher_workflows_spec.rb[1:3:1] | passed | 0.
|
|
159
|
-
./spec/carddb/resources/publisher_workflows_spec.rb[1:3:2] | passed | 0.
|
|
160
|
-
./spec/carddb/resources/publisher_workflows_spec.rb[1:3:3] | passed | 0.
|
|
161
|
-
./spec/carddb/resources/publisher_workflows_spec.rb[1:4:1] | passed | 0.
|
|
162
|
-
./spec/carddb/resources/publisher_workflows_spec.rb[1:4:2] | passed | 0.
|
|
163
|
-
./spec/carddb/resources/publisher_workflows_spec.rb[1:4:3] | passed | 0.
|
|
164
|
-
./spec/carddb/resources/publisher_workflows_spec.rb[1:5:1] | passed | 0.
|
|
165
|
-
./spec/carddb/resources/publisher_workflows_spec.rb[1:5:2] | passed | 0.
|
|
166
|
-
./spec/carddb/resources/publishers_spec.rb[1:1:1] | passed | 0.
|
|
167
|
-
./spec/carddb/resources/publishers_spec.rb[1:2:1] | passed | 0.
|
|
168
|
-
./spec/carddb/resources/records_spec.rb[1:1:1] | passed | 0.
|
|
169
|
-
./spec/carddb/resources/records_spec.rb[1:1:2] | passed | 0.
|
|
170
|
-
./spec/carddb/resources/records_spec.rb[1:1:3] | passed | 0.
|
|
171
|
-
./spec/carddb/resources/records_spec.rb[1:1:4] | passed | 0.
|
|
172
|
-
./spec/carddb/resources/records_spec.rb[1:2:1] | passed | 0.
|
|
173
|
-
./spec/carddb/resources/records_spec.rb[1:2:2] | passed | 0.
|
|
174
|
-
./spec/carddb/resources/records_spec.rb[1:2:3] | passed | 0.
|
|
175
|
-
./spec/carddb/resources/records_spec.rb[1:3:1] | passed | 0.
|
|
176
|
-
./spec/carddb/resources/records_spec.rb[1:3:2] | passed | 0.
|
|
177
|
-
./spec/carddb/resources/records_spec.rb[1:4:1] | passed | 0.
|
|
178
|
-
./spec/carddb/resources/records_spec.rb[1:4:2] | passed | 0.
|
|
179
|
-
./spec/carddb/resources/records_spec.rb[1:4:3] | passed | 0.
|
|
180
|
-
./spec/carddb/resources/rules_spec.rb[1:1:1] | passed | 0.
|
|
181
|
-
./spec/carddb/resources/rules_spec.rb[1:2:1] | passed | 0.
|
|
182
|
-
./spec/carddb/resources/rulesets_spec.rb[1:1:1] | passed | 0.
|
|
183
|
-
./spec/carddb/resources/rulesets_spec.rb[1:1:2] | passed | 0.
|
|
184
|
-
./spec/carddb/resources/rulesets_spec.rb[1:2:1] | passed | 0.
|
|
185
|
-
./spec/carddb/resources/rulesets_spec.rb[1:2:2] | passed | 0.
|
|
186
|
-
./spec/carddb/resources/rulesets_spec.rb[1:3:1] | passed | 0.
|
|
187
|
-
./spec/carddb/resources/rulesets_spec.rb[1:3:2] | passed | 0.
|
|
188
|
-
./spec/carddb/resources/scans_spec.rb[1:1] | passed | 0.
|
|
189
|
-
./spec/carddb/resources/scans_spec.rb[1:2] | passed | 0.
|
|
190
|
-
./spec/carddb/resources/scans_spec.rb[1:3] | passed | 0.
|
|
191
|
-
./spec/carddb/resources/scans_spec.rb[1:4] | passed | 0.
|
|
192
|
-
./spec/carddb/resources/scans_spec.rb[1:5] | passed | 0.
|
|
193
|
-
./spec/carddb/resources/scans_spec.rb[1:6] | passed | 0.
|
|
194
|
-
./spec/carddb/resources/scans_spec.rb[1:7] | passed | 0.
|
|
160
|
+
./spec/carddb/resources/publisher_workflows_spec.rb[1:3:1] | passed | 0.00506 seconds |
|
|
161
|
+
./spec/carddb/resources/publisher_workflows_spec.rb[1:3:2] | passed | 0.0044 seconds |
|
|
162
|
+
./spec/carddb/resources/publisher_workflows_spec.rb[1:3:3] | passed | 0.00435 seconds |
|
|
163
|
+
./spec/carddb/resources/publisher_workflows_spec.rb[1:4:1] | passed | 0.00442 seconds |
|
|
164
|
+
./spec/carddb/resources/publisher_workflows_spec.rb[1:4:2] | passed | 0.00517 seconds |
|
|
165
|
+
./spec/carddb/resources/publisher_workflows_spec.rb[1:4:3] | passed | 0.00428 seconds |
|
|
166
|
+
./spec/carddb/resources/publisher_workflows_spec.rb[1:5:1] | passed | 0.00485 seconds |
|
|
167
|
+
./spec/carddb/resources/publisher_workflows_spec.rb[1:5:2] | passed | 0.00412 seconds |
|
|
168
|
+
./spec/carddb/resources/publishers_spec.rb[1:1:1] | passed | 0.00445 seconds |
|
|
169
|
+
./spec/carddb/resources/publishers_spec.rb[1:2:1] | passed | 0.00428 seconds |
|
|
170
|
+
./spec/carddb/resources/records_spec.rb[1:1:1] | passed | 0.00399 seconds |
|
|
171
|
+
./spec/carddb/resources/records_spec.rb[1:1:2] | passed | 0.00442 seconds |
|
|
172
|
+
./spec/carddb/resources/records_spec.rb[1:1:3] | passed | 0.00075 seconds |
|
|
173
|
+
./spec/carddb/resources/records_spec.rb[1:1:4] | passed | 0.00004 seconds |
|
|
174
|
+
./spec/carddb/resources/records_spec.rb[1:2:1] | passed | 0.00353 seconds |
|
|
175
|
+
./spec/carddb/resources/records_spec.rb[1:2:2] | passed | 0.00353 seconds |
|
|
176
|
+
./spec/carddb/resources/records_spec.rb[1:2:3] | passed | 0.00438 seconds |
|
|
177
|
+
./spec/carddb/resources/records_spec.rb[1:3:1] | passed | 0.00341 seconds |
|
|
178
|
+
./spec/carddb/resources/records_spec.rb[1:3:2] | passed | 0.00045 seconds |
|
|
179
|
+
./spec/carddb/resources/records_spec.rb[1:4:1] | passed | 0.00351 seconds |
|
|
180
|
+
./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.00013 seconds |
|
|
182
|
+
./spec/carddb/resources/rules_spec.rb[1:1:1] | passed | 0.00348 seconds |
|
|
183
|
+
./spec/carddb/resources/rules_spec.rb[1:2:1] | passed | 0.00384 seconds |
|
|
184
|
+
./spec/carddb/resources/rulesets_spec.rb[1:1:1] | passed | 0.00381 seconds |
|
|
185
|
+
./spec/carddb/resources/rulesets_spec.rb[1:1:2] | passed | 0.00522 seconds |
|
|
186
|
+
./spec/carddb/resources/rulesets_spec.rb[1:2:1] | passed | 0.00423 seconds |
|
|
187
|
+
./spec/carddb/resources/rulesets_spec.rb[1:2:2] | passed | 0.00413 seconds |
|
|
188
|
+
./spec/carddb/resources/rulesets_spec.rb[1:3:1] | passed | 0.00478 seconds |
|
|
189
|
+
./spec/carddb/resources/rulesets_spec.rb[1:3:2] | passed | 0.00006 seconds |
|
|
190
|
+
./spec/carddb/resources/scans_spec.rb[1:1] | passed | 0.00418 seconds |
|
|
191
|
+
./spec/carddb/resources/scans_spec.rb[1:2] | passed | 0.00783 seconds |
|
|
192
|
+
./spec/carddb/resources/scans_spec.rb[1:3] | passed | 0.0037 seconds |
|
|
193
|
+
./spec/carddb/resources/scans_spec.rb[1:4] | passed | 0.00508 seconds |
|
|
194
|
+
./spec/carddb/resources/scans_spec.rb[1:5] | passed | 0.00362 seconds |
|
|
195
|
+
./spec/carddb/resources/scans_spec.rb[1:6] | passed | 0.00376 seconds |
|
|
196
|
+
./spec/carddb/resources/scans_spec.rb[1:7] | passed | 0.0039 seconds |
|
|
195
197
|
./spec/carddb/resources/scans_spec.rb[1:8] | passed | 0.00008 seconds |
|
|
196
|
-
./spec/carddb_spec.rb[1:1] | passed | 0.
|
|
197
|
-
./spec/carddb_spec.rb[1:2:1] | passed | 0.
|
|
198
|
-
./spec/carddb_spec.rb[1:3:1] | passed | 0.
|
|
199
|
-
./spec/carddb_spec.rb[1:4:1] | passed | 0.
|
|
198
|
+
./spec/carddb_spec.rb[1:1] | passed | 0.00003 seconds |
|
|
199
|
+
./spec/carddb_spec.rb[1:2:1] | passed | 0.00003 seconds |
|
|
200
|
+
./spec/carddb_spec.rb[1:3:1] | passed | 0.00003 seconds |
|
|
201
|
+
./spec/carddb_spec.rb[1:4:1] | passed | 0.00003 seconds |
|
|
200
202
|
./spec/carddb_spec.rb[1:5:1] | passed | 0.00003 seconds |
|
|
201
|
-
./spec/carddb_spec.rb[1:6:1] | passed | 0.
|
|
203
|
+
./spec/carddb_spec.rb[1:6:1] | passed | 0.00004 seconds |
|
|
202
204
|
./spec/carddb_spec.rb[1:7:1] | passed | 0.00003 seconds |
|
|
203
205
|
./spec/carddb_spec.rb[1:8:1] | passed | 0.00003 seconds |
|
|
204
206
|
./spec/carddb_spec.rb[1:9:1] | passed | 0.00003 seconds |
|
data/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,18 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.5.1] - 2026-07-08
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- Documented deck import `candidateSelections` for resolving ambiguous matches by selected record ID.
|
|
15
|
+
|
|
16
|
+
## [0.5.0] - 2026-07-06
|
|
17
|
+
|
|
18
|
+
### Added
|
|
19
|
+
|
|
20
|
+
- Dataset filter value lookup with paginated field facets and optional counts.
|
|
21
|
+
|
|
10
22
|
## [0.4.1] - 2026-06-22
|
|
11
23
|
|
|
12
24
|
### Added
|
data/README.md
CHANGED
|
@@ -596,13 +596,23 @@ imported = CardDB.decks.import_deck(
|
|
|
596
596
|
|
|
597
597
|
puts "Detected #{imported.detection.name} (#{imported.detection.confidence})"
|
|
598
598
|
|
|
599
|
+
# Resolve legitimate duplicate matches by selecting a returned candidate record.
|
|
600
|
+
candidate_selections = imported.ambiguous.map do |entry|
|
|
601
|
+
{
|
|
602
|
+
lineNumber: entry.line_number,
|
|
603
|
+
raw: entry.raw,
|
|
604
|
+
recordId: entry.candidates.first.record_id
|
|
605
|
+
}
|
|
606
|
+
end
|
|
607
|
+
|
|
599
608
|
# Or force one configured import format by key/id
|
|
600
609
|
CardDB.decks.import_deck(
|
|
601
610
|
input: {
|
|
602
611
|
deckId: updated.id,
|
|
603
612
|
format: "CONFIGURED",
|
|
604
613
|
importFormatKey: "pokemon-live",
|
|
605
|
-
text: "1 Iron Leaves ex TEF 25"
|
|
614
|
+
text: "1 Iron Leaves ex TEF 25",
|
|
615
|
+
candidateSelections: candidate_selections
|
|
606
616
|
}
|
|
607
617
|
)
|
|
608
618
|
```
|
data/lib/carddb/collection.rb
CHANGED
|
@@ -656,6 +656,56 @@ module CardDB
|
|
|
656
656
|
end
|
|
657
657
|
end
|
|
658
658
|
|
|
659
|
+
# Wrapper for distinct values returned for a single filter field.
|
|
660
|
+
class DatasetFilterValueConnection
|
|
661
|
+
attr_reader :data
|
|
662
|
+
|
|
663
|
+
def initialize(data)
|
|
664
|
+
@data = data || {}
|
|
665
|
+
end
|
|
666
|
+
|
|
667
|
+
def field
|
|
668
|
+
data['field']
|
|
669
|
+
end
|
|
670
|
+
|
|
671
|
+
def edges
|
|
672
|
+
data['edges'] || []
|
|
673
|
+
end
|
|
674
|
+
|
|
675
|
+
def values
|
|
676
|
+
@values ||= edges.map { |edge| DatasetFilterValue.new(edge['node']) }
|
|
677
|
+
end
|
|
678
|
+
|
|
679
|
+
def page_info
|
|
680
|
+
data['pageInfo'] || {}
|
|
681
|
+
end
|
|
682
|
+
|
|
683
|
+
def has_next_page?
|
|
684
|
+
!!page_info['hasNextPage']
|
|
685
|
+
end
|
|
686
|
+
|
|
687
|
+
def end_cursor
|
|
688
|
+
page_info['endCursor']
|
|
689
|
+
end
|
|
690
|
+
end
|
|
691
|
+
|
|
692
|
+
# Wrapper for one distinct filter value.
|
|
693
|
+
class DatasetFilterValue
|
|
694
|
+
attr_reader :data
|
|
695
|
+
|
|
696
|
+
def initialize(data)
|
|
697
|
+
@data = data || {}
|
|
698
|
+
end
|
|
699
|
+
|
|
700
|
+
def value
|
|
701
|
+
data['value']
|
|
702
|
+
end
|
|
703
|
+
|
|
704
|
+
def count
|
|
705
|
+
data['count']
|
|
706
|
+
end
|
|
707
|
+
end
|
|
708
|
+
|
|
659
709
|
# Wrapper for FieldInfo
|
|
660
710
|
class FieldInfo
|
|
661
711
|
attr_reader :data
|
data/lib/carddb/query_builder.rb
CHANGED
|
@@ -219,6 +219,42 @@ module CardDB
|
|
|
219
219
|
GRAPHQL
|
|
220
220
|
end
|
|
221
221
|
|
|
222
|
+
def dataset_filter_values(
|
|
223
|
+
fields:,
|
|
224
|
+
id: nil,
|
|
225
|
+
publisher_slug: nil,
|
|
226
|
+
game_key: nil,
|
|
227
|
+
dataset_key: nil,
|
|
228
|
+
search: nil,
|
|
229
|
+
include_counts: nil,
|
|
230
|
+
first: nil,
|
|
231
|
+
after: nil
|
|
232
|
+
)
|
|
233
|
+
raise ArgumentError, 'fields must contain at least one field key' if fields.empty?
|
|
234
|
+
|
|
235
|
+
dataset_lookup = dataset_filter_values_lookup(
|
|
236
|
+
id: id,
|
|
237
|
+
publisher_slug: publisher_slug,
|
|
238
|
+
game_key: game_key,
|
|
239
|
+
dataset_key: dataset_key
|
|
240
|
+
)
|
|
241
|
+
filter_params = { fields: fields, search: search, includeCounts: include_counts, first: first, after: after }.compact
|
|
242
|
+
args = build_args(dataset_lookup.merge(filter_params), required: dataset_lookup.keys + [:fields])
|
|
243
|
+
|
|
244
|
+
dataset_args = graphql_variable_calls(dataset_lookup.keys)
|
|
245
|
+
filter_args = graphql_variable_calls(filter_params.keys)
|
|
246
|
+
|
|
247
|
+
<<~GRAPHQL
|
|
248
|
+
query FetchDatasetFilterValues#{args[:definition]} {
|
|
249
|
+
fetchDataset(#{dataset_args}) {
|
|
250
|
+
filterValues(#{filter_args}) {
|
|
251
|
+
#{dataset_filter_value_connection_fields}
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
GRAPHQL
|
|
256
|
+
end
|
|
257
|
+
|
|
222
258
|
def list_datasets(
|
|
223
259
|
publisher_id:,
|
|
224
260
|
game_id: nil,
|
|
@@ -1741,6 +1777,8 @@ module CardDB
|
|
|
1741
1777
|
status: 'String',
|
|
1742
1778
|
level: 'String',
|
|
1743
1779
|
key: 'String',
|
|
1780
|
+
fields: '[String!]',
|
|
1781
|
+
includeCounts: 'Boolean',
|
|
1744
1782
|
id: 'UUID!',
|
|
1745
1783
|
ids: '[UUID!]!'
|
|
1746
1784
|
}
|
|
@@ -1760,6 +1798,18 @@ module CardDB
|
|
|
1760
1798
|
end
|
|
1761
1799
|
# rubocop:enable Metrics/MethodLength
|
|
1762
1800
|
|
|
1801
|
+
def dataset_filter_values_lookup(id:, publisher_slug:, game_key:, dataset_key:)
|
|
1802
|
+
return { id: id } if id
|
|
1803
|
+
|
|
1804
|
+
raise ArgumentError, 'provide either id or publisher_slug, game_key, and dataset_key' unless [publisher_slug, game_key, dataset_key].all?
|
|
1805
|
+
|
|
1806
|
+
{ publisherSlug: publisher_slug, gameKey: game_key, datasetKey: dataset_key }
|
|
1807
|
+
end
|
|
1808
|
+
|
|
1809
|
+
def graphql_variable_calls(keys)
|
|
1810
|
+
keys.map { |key| "#{key}: $#{key}" }.join(', ')
|
|
1811
|
+
end
|
|
1812
|
+
|
|
1763
1813
|
def file_fields
|
|
1764
1814
|
<<~FIELDS
|
|
1765
1815
|
id
|
|
@@ -1930,6 +1980,25 @@ module CardDB
|
|
|
1930
1980
|
FIELDS
|
|
1931
1981
|
end
|
|
1932
1982
|
|
|
1983
|
+
def dataset_filter_value_connection_fields
|
|
1984
|
+
<<~FIELDS
|
|
1985
|
+
field
|
|
1986
|
+
edges {
|
|
1987
|
+
cursor
|
|
1988
|
+
node {
|
|
1989
|
+
value
|
|
1990
|
+
count
|
|
1991
|
+
}
|
|
1992
|
+
}
|
|
1993
|
+
pageInfo {
|
|
1994
|
+
hasNextPage
|
|
1995
|
+
hasPreviousPage
|
|
1996
|
+
startCursor
|
|
1997
|
+
endCursor
|
|
1998
|
+
}
|
|
1999
|
+
FIELDS
|
|
2000
|
+
end
|
|
2001
|
+
|
|
1933
2002
|
# rubocop:disable Metrics/MethodLength
|
|
1934
2003
|
def field_info_fields(depth:)
|
|
1935
2004
|
nested_fields = if depth.positive?
|
|
@@ -186,6 +186,65 @@ module CardDB
|
|
|
186
186
|
(data['fetchDatasets'] || []).map { |d| Dataset.new(d, client: client) }
|
|
187
187
|
end
|
|
188
188
|
|
|
189
|
+
# Get distinct values for one or more filterable fields on a dataset.
|
|
190
|
+
#
|
|
191
|
+
# @param fields [Array<String, Symbol>] Field keys to fetch values for
|
|
192
|
+
# @param id [String, nil] Dataset UUID. Provide either id or dataset_key.
|
|
193
|
+
# @param dataset_key [String, nil] Dataset key when looking up by publisher/game keys
|
|
194
|
+
# @param publisher_slug [String, nil] Publisher slug (uses default if not provided)
|
|
195
|
+
# @param game_key [String, nil] Game key (uses default if not provided)
|
|
196
|
+
# @param search [String, nil] Optional case-insensitive search within values
|
|
197
|
+
# @param include_counts [Boolean, nil] Include per-value counts
|
|
198
|
+
# @param first [Integer, nil] Maximum values per field (max 500)
|
|
199
|
+
# @param after [String, nil] Cursor for pagination. Applies to each field.
|
|
200
|
+
# @return [Array<DatasetFilterValueConnection>]
|
|
201
|
+
def filter_values(
|
|
202
|
+
fields:,
|
|
203
|
+
id: nil,
|
|
204
|
+
dataset_key: nil,
|
|
205
|
+
publisher_slug: nil,
|
|
206
|
+
game_key: nil,
|
|
207
|
+
search: nil,
|
|
208
|
+
include_counts: nil,
|
|
209
|
+
first: nil,
|
|
210
|
+
after: nil,
|
|
211
|
+
cache: nil
|
|
212
|
+
)
|
|
213
|
+
field_keys = fields.map(&:to_s)
|
|
214
|
+
resolved_publisher = id ? nil : resolve_publisher(publisher_slug)
|
|
215
|
+
resolved_game = id ? nil : resolve_game(game_key)
|
|
216
|
+
|
|
217
|
+
validate_access!(resolved_publisher, resolved_game) unless id
|
|
218
|
+
|
|
219
|
+
query = QueryBuilder.dataset_filter_values(
|
|
220
|
+
id: id,
|
|
221
|
+
publisher_slug: resolved_publisher,
|
|
222
|
+
game_key: resolved_game,
|
|
223
|
+
dataset_key: dataset_key,
|
|
224
|
+
fields: field_keys,
|
|
225
|
+
search: search,
|
|
226
|
+
include_counts: include_counts,
|
|
227
|
+
first: first,
|
|
228
|
+
after: after
|
|
229
|
+
)
|
|
230
|
+
variables = build_variables(
|
|
231
|
+
id: id,
|
|
232
|
+
publisherSlug: resolved_publisher,
|
|
233
|
+
gameKey: resolved_game,
|
|
234
|
+
datasetKey: dataset_key,
|
|
235
|
+
fields: field_keys,
|
|
236
|
+
search: search,
|
|
237
|
+
includeCounts: include_counts,
|
|
238
|
+
first: first,
|
|
239
|
+
after: after
|
|
240
|
+
)
|
|
241
|
+
key = cache_key('datasets', 'filter_values', **variables)
|
|
242
|
+
|
|
243
|
+
data = with_cache(key, resource: :datasets, cache: cache) { connection.execute(query, variables) }
|
|
244
|
+
filter_values = data.dig('fetchDataset', 'filterValues') || []
|
|
245
|
+
filter_values.map { |value| DatasetFilterValueConnection.new(value) }
|
|
246
|
+
end
|
|
247
|
+
|
|
189
248
|
# Get the schema for a dataset
|
|
190
249
|
#
|
|
191
250
|
# @param dataset_key [String] Dataset key
|
data/lib/carddb/version.rb
CHANGED