carddb 0.3.0 → 0.3.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.rspec_status +171 -151
- data/CHANGELOG.md +7 -0
- data/README.md +189 -1
- data/examples/publisher_content_pipeline.rb +80 -0
- data/lib/carddb/client.rb +28 -0
- data/lib/carddb/collection.rb +517 -0
- data/lib/carddb/query_builder.rb +1030 -44
- data/lib/carddb/resources/datasets.rb +85 -0
- data/lib/carddb/resources/exports.rb +96 -0
- data/lib/carddb/resources/files.rb +43 -0
- data/lib/carddb/resources/games.rb +70 -0
- data/lib/carddb/resources/import_formats.rb +103 -0
- data/lib/carddb/resources/imports.rb +225 -0
- data/lib/carddb/resources/records.rb +157 -0
- data/lib/carddb/version.rb +1 -1
- data/lib/carddb.rb +32 -0
- metadata +6 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 634f5e0613ba7af5e96a3eceeae6463e0c8beee8ed661769f65afa75d90c58b5
|
|
4
|
+
data.tar.gz: 7e5596f16aab3b7efe0c952e980b58db8b2c3b645b0981f6306220645cde981f
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: c424c8cda7e4ce075a9ff624be3749288dfb4e3f9cc7aff0227e682f5d8331a72a93ede5e4ece6a251c21e83572cada7ad6f247e4250d394943d72618c812bea
|
|
7
|
+
data.tar.gz: 65f04720bf93f3f929301dba07ddd9e1a2bb92ed4da547df492f566bf7a28e8b53fbab4011737c6b23703fb16f7efebcc8fd5a46fc71f3d3dca41d7434f6e32f
|
data/.rspec_status
CHANGED
|
@@ -1,151 +1,171 @@
|
|
|
1
|
-
example_id
|
|
2
|
-
|
|
3
|
-
./spec/carddb/client_spec.rb[1:1:1]
|
|
4
|
-
./spec/carddb/client_spec.rb[1:1:2]
|
|
5
|
-
./spec/carddb/client_spec.rb[1:1:3]
|
|
6
|
-
./spec/carddb/client_spec.rb[1:1:4]
|
|
7
|
-
./spec/carddb/client_spec.rb[1:2:1]
|
|
8
|
-
./spec/carddb/client_spec.rb[1:2:2]
|
|
9
|
-
./spec/carddb/client_spec.rb[1:3:1]
|
|
10
|
-
./spec/carddb/client_spec.rb[1:4:1]
|
|
11
|
-
./spec/carddb/client_spec.rb[1:5:1]
|
|
12
|
-
./spec/carddb/client_spec.rb[1:6:1]
|
|
13
|
-
./spec/carddb/client_spec.rb[1:7:1]
|
|
14
|
-
./spec/carddb/client_spec.rb[1:
|
|
15
|
-
./spec/carddb/
|
|
16
|
-
./spec/carddb/
|
|
17
|
-
./spec/carddb/
|
|
18
|
-
./spec/carddb/
|
|
19
|
-
./spec/carddb/collection_spec.rb[
|
|
20
|
-
./spec/carddb/collection_spec.rb[
|
|
21
|
-
./spec/carddb/collection_spec.rb[3:1:
|
|
22
|
-
./spec/carddb/collection_spec.rb[
|
|
23
|
-
./spec/carddb/collection_spec.rb[
|
|
24
|
-
./spec/carddb/collection_spec.rb[
|
|
25
|
-
./spec/carddb/collection_spec.rb[
|
|
26
|
-
./spec/carddb/
|
|
27
|
-
./spec/carddb/
|
|
28
|
-
./spec/carddb/
|
|
29
|
-
./spec/carddb/
|
|
30
|
-
./spec/carddb/configuration_spec.rb[1:1:
|
|
31
|
-
./spec/carddb/configuration_spec.rb[1:1:
|
|
32
|
-
./spec/carddb/configuration_spec.rb[1:
|
|
33
|
-
./spec/carddb/configuration_spec.rb[1:
|
|
34
|
-
./spec/carddb/configuration_spec.rb[1:
|
|
35
|
-
./spec/carddb/configuration_spec.rb[1:
|
|
36
|
-
./spec/carddb/configuration_spec.rb[1:
|
|
37
|
-
./spec/carddb/configuration_spec.rb[1:
|
|
38
|
-
./spec/carddb/configuration_spec.rb[1:
|
|
39
|
-
./spec/carddb/configuration_spec.rb[1:
|
|
40
|
-
./spec/carddb/configuration_spec.rb[1:
|
|
41
|
-
./spec/carddb/configuration_spec.rb[1:
|
|
42
|
-
./spec/carddb/configuration_spec.rb[1:
|
|
43
|
-
./spec/carddb/configuration_spec.rb[1:
|
|
44
|
-
./spec/carddb/configuration_spec.rb[1:
|
|
45
|
-
./spec/carddb/configuration_spec.rb[1:
|
|
46
|
-
./spec/carddb/configuration_spec.rb[1:
|
|
47
|
-
./spec/carddb/configuration_spec.rb[1:
|
|
48
|
-
./spec/carddb/
|
|
49
|
-
./spec/carddb/
|
|
50
|
-
./spec/carddb/
|
|
51
|
-
./spec/carddb/
|
|
52
|
-
./spec/carddb/filter_builder_spec.rb[1:1:
|
|
53
|
-
./spec/carddb/filter_builder_spec.rb[1:1:
|
|
54
|
-
./spec/carddb/filter_builder_spec.rb[1:1:
|
|
55
|
-
./spec/carddb/filter_builder_spec.rb[1:1:
|
|
56
|
-
./spec/carddb/filter_builder_spec.rb[1:
|
|
57
|
-
./spec/carddb/filter_builder_spec.rb[1:
|
|
58
|
-
./spec/carddb/filter_builder_spec.rb[1:
|
|
59
|
-
./spec/carddb/filter_builder_spec.rb[1:
|
|
60
|
-
./spec/carddb/filter_builder_spec.rb[1:2:
|
|
61
|
-
./spec/carddb/filter_builder_spec.rb[1:2:
|
|
62
|
-
./spec/carddb/filter_builder_spec.rb[1:2:
|
|
63
|
-
./spec/carddb/filter_builder_spec.rb[1:2:
|
|
64
|
-
./spec/carddb/filter_builder_spec.rb[1:2:
|
|
65
|
-
./spec/carddb/filter_builder_spec.rb[1:2:
|
|
66
|
-
./spec/carddb/filter_builder_spec.rb[1:2:
|
|
67
|
-
./spec/carddb/filter_builder_spec.rb[1:2:
|
|
68
|
-
./spec/carddb/filter_builder_spec.rb[1:2:
|
|
69
|
-
./spec/carddb/
|
|
70
|
-
./spec/carddb/
|
|
71
|
-
./spec/carddb/
|
|
72
|
-
./spec/carddb/
|
|
73
|
-
./spec/carddb/query_builder_spec.rb[1:
|
|
74
|
-
./spec/carddb/query_builder_spec.rb[1:
|
|
75
|
-
./spec/carddb/query_builder_spec.rb[1:3
|
|
76
|
-
./spec/carddb/query_builder_spec.rb[1:
|
|
77
|
-
./spec/carddb/query_builder_spec.rb[1:
|
|
78
|
-
./spec/carddb/query_builder_spec.rb[1:
|
|
79
|
-
./spec/carddb/query_builder_spec.rb[1:
|
|
80
|
-
./spec/carddb/query_builder_spec.rb[1:
|
|
81
|
-
./spec/carddb/query_builder_spec.rb[1:
|
|
82
|
-
./spec/carddb/query_builder_spec.rb[1:5:
|
|
83
|
-
./spec/carddb/query_builder_spec.rb[1:5:
|
|
84
|
-
./spec/carddb/query_builder_spec.rb[1:5:
|
|
85
|
-
./spec/carddb/
|
|
86
|
-
./spec/carddb/
|
|
87
|
-
./spec/carddb/
|
|
88
|
-
./spec/carddb/
|
|
89
|
-
./spec/carddb/
|
|
90
|
-
./spec/carddb/
|
|
91
|
-
./spec/carddb/
|
|
92
|
-
./spec/carddb/resources/
|
|
93
|
-
./spec/carddb/resources/
|
|
94
|
-
./spec/carddb/resources/
|
|
95
|
-
./spec/carddb/resources/decks_spec.rb[1:
|
|
96
|
-
./spec/carddb/resources/decks_spec.rb[1:
|
|
97
|
-
./spec/carddb/resources/decks_spec.rb[1:
|
|
98
|
-
./spec/carddb/resources/decks_spec.rb[1:
|
|
99
|
-
./spec/carddb/resources/decks_spec.rb[1:
|
|
100
|
-
./spec/carddb/resources/decks_spec.rb[1:
|
|
101
|
-
./spec/carddb/resources/decks_spec.rb[1:
|
|
102
|
-
./spec/carddb/resources/decks_spec.rb[1:
|
|
103
|
-
./spec/carddb/resources/decks_spec.rb[1:
|
|
104
|
-
./spec/carddb/resources/decks_spec.rb[1:
|
|
105
|
-
./spec/carddb/resources/decks_spec.rb[1:
|
|
106
|
-
./spec/carddb/resources/decks_spec.rb[1:
|
|
107
|
-
./spec/carddb/resources/decks_spec.rb[1:
|
|
108
|
-
./spec/carddb/resources/decks_spec.rb[1:
|
|
109
|
-
./spec/carddb/resources/decks_spec.rb[1:
|
|
110
|
-
./spec/carddb/resources/decks_spec.rb[1:
|
|
111
|
-
./spec/carddb/resources/decks_spec.rb[1:
|
|
112
|
-
./spec/carddb/resources/decks_spec.rb[1:
|
|
113
|
-
./spec/carddb/resources/decks_spec.rb[1:
|
|
114
|
-
./spec/carddb/resources/decks_spec.rb[1:
|
|
115
|
-
./spec/carddb/resources/decks_spec.rb[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:
|
|
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:
|
|
125
|
-
./spec/carddb/resources/
|
|
126
|
-
./spec/carddb/resources/
|
|
127
|
-
./spec/carddb/resources/
|
|
128
|
-
./spec/carddb/resources/
|
|
129
|
-
./spec/carddb/resources/
|
|
130
|
-
./spec/carddb/resources/
|
|
131
|
-
./spec/carddb/resources/
|
|
132
|
-
./spec/carddb/resources/
|
|
133
|
-
./spec/carddb/resources/
|
|
134
|
-
./spec/carddb/resources/
|
|
135
|
-
./spec/carddb/resources/
|
|
136
|
-
./spec/carddb/resources/
|
|
137
|
-
./spec/carddb/resources/
|
|
138
|
-
./spec/carddb/resources/
|
|
139
|
-
./spec/carddb/resources/
|
|
140
|
-
./spec/carddb/resources/
|
|
141
|
-
./spec/carddb/resources/
|
|
142
|
-
./spec/carddb/resources/
|
|
143
|
-
./spec/carddb/resources/
|
|
144
|
-
./spec/carddb/resources/
|
|
145
|
-
./spec/
|
|
146
|
-
./spec/
|
|
147
|
-
./spec/
|
|
148
|
-
./spec/
|
|
149
|
-
./spec/
|
|
150
|
-
./spec/
|
|
151
|
-
./spec/
|
|
1
|
+
example_id | status | run_time |
|
|
2
|
+
---------------------------------------------------------- | ------ | --------------- |
|
|
3
|
+
./spec/carddb/client_spec.rb[1:1:1] | passed | 0.00052 seconds |
|
|
4
|
+
./spec/carddb/client_spec.rb[1:1:2] | passed | 0.00004 seconds |
|
|
5
|
+
./spec/carddb/client_spec.rb[1:1:3] | passed | 0.00003 seconds |
|
|
6
|
+
./spec/carddb/client_spec.rb[1:1:4] | passed | 0.00003 seconds |
|
|
7
|
+
./spec/carddb/client_spec.rb[1:2:1] | passed | 0.00033 seconds |
|
|
8
|
+
./spec/carddb/client_spec.rb[1:2:2] | passed | 0.00037 seconds |
|
|
9
|
+
./spec/carddb/client_spec.rb[1:3:1] | passed | 0.00005 seconds |
|
|
10
|
+
./spec/carddb/client_spec.rb[1:4:1] | passed | 0.00004 seconds |
|
|
11
|
+
./spec/carddb/client_spec.rb[1:5:1] | passed | 0.00004 seconds |
|
|
12
|
+
./spec/carddb/client_spec.rb[1:6:1] | passed | 0.00003 seconds |
|
|
13
|
+
./spec/carddb/client_spec.rb[1:7:1] | passed | 0.0001 seconds |
|
|
14
|
+
./spec/carddb/client_spec.rb[1:8:1] | passed | 0.00005 seconds |
|
|
15
|
+
./spec/carddb/client_spec.rb[1:9:1] | passed | 0.00004 seconds |
|
|
16
|
+
./spec/carddb/client_spec.rb[1:10:1] | passed | 0.00003 seconds |
|
|
17
|
+
./spec/carddb/client_spec.rb[1:11:1] | passed | 0.00045 seconds |
|
|
18
|
+
./spec/carddb/client_spec.rb[1:11:2] | passed | 0.00967 seconds |
|
|
19
|
+
./spec/carddb/collection_spec.rb[1:1:1] | passed | 0.00007 seconds |
|
|
20
|
+
./spec/carddb/collection_spec.rb[2:1:1] | passed | 0.00003 seconds |
|
|
21
|
+
./spec/carddb/collection_spec.rb[3:1:1] | passed | 0.00705 seconds |
|
|
22
|
+
./spec/carddb/collection_spec.rb[3:1:2] | passed | 0.00016 seconds |
|
|
23
|
+
./spec/carddb/collection_spec.rb[3:1:3] | passed | 0.00085 seconds |
|
|
24
|
+
./spec/carddb/collection_spec.rb[3:1:4] | passed | 0.00058 seconds |
|
|
25
|
+
./spec/carddb/collection_spec.rb[3:1:5] | passed | 0.00005 seconds |
|
|
26
|
+
./spec/carddb/collection_spec.rb[4:1:1] | passed | 0.00016 seconds |
|
|
27
|
+
./spec/carddb/collection_spec.rb[4:1:2] | passed | 0.00014 seconds |
|
|
28
|
+
./spec/carddb/collection_spec.rb[4:1:3] | passed | 0.00014 seconds |
|
|
29
|
+
./spec/carddb/collection_spec.rb[4:1:4] | passed | 0.00015 seconds |
|
|
30
|
+
./spec/carddb/configuration_spec.rb[1:1:1] | passed | 0.00003 seconds |
|
|
31
|
+
./spec/carddb/configuration_spec.rb[1:1:2] | passed | 0.00003 seconds |
|
|
32
|
+
./spec/carddb/configuration_spec.rb[1:1:3] | passed | 0.00003 seconds |
|
|
33
|
+
./spec/carddb/configuration_spec.rb[1:1:4] | passed | 0.00003 seconds |
|
|
34
|
+
./spec/carddb/configuration_spec.rb[1:1:5] | passed | 0.00003 seconds |
|
|
35
|
+
./spec/carddb/configuration_spec.rb[1:1:6] | passed | 0.00003 seconds |
|
|
36
|
+
./spec/carddb/configuration_spec.rb[1:2:1:1] | passed | 0.00004 seconds |
|
|
37
|
+
./spec/carddb/configuration_spec.rb[1:2:2:1] | passed | 0.00003 seconds |
|
|
38
|
+
./spec/carddb/configuration_spec.rb[1:2:2:2] | passed | 0.00004 seconds |
|
|
39
|
+
./spec/carddb/configuration_spec.rb[1:3:1:1] | passed | 0.00003 seconds |
|
|
40
|
+
./spec/carddb/configuration_spec.rb[1:3:2:1] | passed | 0.00004 seconds |
|
|
41
|
+
./spec/carddb/configuration_spec.rb[1:3:2:2] | passed | 0.00003 seconds |
|
|
42
|
+
./spec/carddb/configuration_spec.rb[1:3:2:3] | passed | 0.00003 seconds |
|
|
43
|
+
./spec/carddb/configuration_spec.rb[1:4:1] | passed | 0.00003 seconds |
|
|
44
|
+
./spec/carddb/configuration_spec.rb[1:4:2] | passed | 0.00003 seconds |
|
|
45
|
+
./spec/carddb/configuration_spec.rb[1:5:1] | passed | 0.00003 seconds |
|
|
46
|
+
./spec/carddb/configuration_spec.rb[1:6:1] | passed | 0.00003 seconds |
|
|
47
|
+
./spec/carddb/configuration_spec.rb[1:6:2] | passed | 0.00003 seconds |
|
|
48
|
+
./spec/carddb/configuration_spec.rb[1:6:3] | passed | 0.00002 seconds |
|
|
49
|
+
./spec/carddb/configuration_spec.rb[1:7:1] | passed | 0.00003 seconds |
|
|
50
|
+
./spec/carddb/configuration_spec.rb[1:7:2] | passed | 0.00003 seconds |
|
|
51
|
+
./spec/carddb/configuration_spec.rb[1:7:3] | passed | 0.00004 seconds |
|
|
52
|
+
./spec/carddb/filter_builder_spec.rb[1:1:1] | passed | 0.00003 seconds |
|
|
53
|
+
./spec/carddb/filter_builder_spec.rb[1:1:2] | passed | 0.00003 seconds |
|
|
54
|
+
./spec/carddb/filter_builder_spec.rb[1:1:3] | passed | 0.00003 seconds |
|
|
55
|
+
./spec/carddb/filter_builder_spec.rb[1:1:4] | passed | 0.00008 seconds |
|
|
56
|
+
./spec/carddb/filter_builder_spec.rb[1:1:5] | passed | 0.00003 seconds |
|
|
57
|
+
./spec/carddb/filter_builder_spec.rb[1:1:6] | passed | 0.00003 seconds |
|
|
58
|
+
./spec/carddb/filter_builder_spec.rb[1:1:7] | passed | 0.00003 seconds |
|
|
59
|
+
./spec/carddb/filter_builder_spec.rb[1:1:8] | passed | 0.00003 seconds |
|
|
60
|
+
./spec/carddb/filter_builder_spec.rb[1:2:1] | passed | 0.00003 seconds |
|
|
61
|
+
./spec/carddb/filter_builder_spec.rb[1:2:2] | passed | 0.00003 seconds |
|
|
62
|
+
./spec/carddb/filter_builder_spec.rb[1:2:3] | passed | 0.00003 seconds |
|
|
63
|
+
./spec/carddb/filter_builder_spec.rb[1:2:4] | passed | 0.00003 seconds |
|
|
64
|
+
./spec/carddb/filter_builder_spec.rb[1:2:5] | passed | 0.00003 seconds |
|
|
65
|
+
./spec/carddb/filter_builder_spec.rb[1:2:6] | passed | 0.00002 seconds |
|
|
66
|
+
./spec/carddb/filter_builder_spec.rb[1:2:7] | passed | 0.00003 seconds |
|
|
67
|
+
./spec/carddb/filter_builder_spec.rb[1:2:8] | passed | 0.00002 seconds |
|
|
68
|
+
./spec/carddb/filter_builder_spec.rb[1:2:9] | passed | 0.00002 seconds |
|
|
69
|
+
./spec/carddb/filter_builder_spec.rb[1:2:10] | passed | 0.00002 seconds |
|
|
70
|
+
./spec/carddb/filter_builder_spec.rb[1:2:11] | passed | 0.00002 seconds |
|
|
71
|
+
./spec/carddb/filter_builder_spec.rb[1:2:12] | passed | 0.00002 seconds |
|
|
72
|
+
./spec/carddb/filter_builder_spec.rb[1:2:13] | passed | 0.00008 seconds |
|
|
73
|
+
./spec/carddb/query_builder_spec.rb[1:1:1] | passed | 0.00004 seconds |
|
|
74
|
+
./spec/carddb/query_builder_spec.rb[1:1:2] | passed | 0.00004 seconds |
|
|
75
|
+
./spec/carddb/query_builder_spec.rb[1:1:3] | passed | 0.00087 seconds |
|
|
76
|
+
./spec/carddb/query_builder_spec.rb[1:2:1:1] | passed | 0.00005 seconds |
|
|
77
|
+
./spec/carddb/query_builder_spec.rb[1:2:2:1] | passed | 0.00004 seconds |
|
|
78
|
+
./spec/carddb/query_builder_spec.rb[1:3:1] | passed | 0.00004 seconds |
|
|
79
|
+
./spec/carddb/query_builder_spec.rb[1:3:2] | passed | 0.00004 seconds |
|
|
80
|
+
./spec/carddb/query_builder_spec.rb[1:4:1] | passed | 0.00004 seconds |
|
|
81
|
+
./spec/carddb/query_builder_spec.rb[1:4:2] | passed | 0.00004 seconds |
|
|
82
|
+
./spec/carddb/query_builder_spec.rb[1:5:1] | passed | 0.00004 seconds |
|
|
83
|
+
./spec/carddb/query_builder_spec.rb[1:5:2] | passed | 0.00004 seconds |
|
|
84
|
+
./spec/carddb/query_builder_spec.rb[1:5:3] | passed | 0.00004 seconds |
|
|
85
|
+
./spec/carddb/query_builder_spec.rb[1:5:4] | passed | 0.00003 seconds |
|
|
86
|
+
./spec/carddb/query_builder_spec.rb[1:5:5] | passed | 0.00009 seconds |
|
|
87
|
+
./spec/carddb/query_builder_spec.rb[1:5:6] | passed | 0.00006 seconds |
|
|
88
|
+
./spec/carddb/query_builder_spec.rb[1:5:7] | passed | 0.00004 seconds |
|
|
89
|
+
./spec/carddb/query_builder_spec.rb[1:6:1] | passed | 0.00006 seconds |
|
|
90
|
+
./spec/carddb/query_builder_spec.rb[1:6:2] | passed | 0.00006 seconds |
|
|
91
|
+
./spec/carddb/query_builder_spec.rb[1:6:3] | passed | 0.00005 seconds |
|
|
92
|
+
./spec/carddb/resources/datasets_spec.rb[1:1:1] | passed | 0.00418 seconds |
|
|
93
|
+
./spec/carddb/resources/datasets_spec.rb[1:1:2] | passed | 0.00411 seconds |
|
|
94
|
+
./spec/carddb/resources/datasets_spec.rb[1:2:1] | passed | 0.00396 seconds |
|
|
95
|
+
./spec/carddb/resources/decks_spec.rb[1:1:1] | passed | 0.00389 seconds |
|
|
96
|
+
./spec/carddb/resources/decks_spec.rb[1:1:2] | passed | 0.00448 seconds |
|
|
97
|
+
./spec/carddb/resources/decks_spec.rb[1:1:3] | passed | 0.00407 seconds |
|
|
98
|
+
./spec/carddb/resources/decks_spec.rb[1:1:4] | passed | 0.0038 seconds |
|
|
99
|
+
./spec/carddb/resources/decks_spec.rb[1:2:1] | passed | 0.00414 seconds |
|
|
100
|
+
./spec/carddb/resources/decks_spec.rb[1:2:2] | passed | 0.00772 seconds |
|
|
101
|
+
./spec/carddb/resources/decks_spec.rb[1:2:3] | passed | 0.00007 seconds |
|
|
102
|
+
./spec/carddb/resources/decks_spec.rb[1:3:1] | passed | 0.00415 seconds |
|
|
103
|
+
./spec/carddb/resources/decks_spec.rb[1:4:1] | passed | 0.00387 seconds |
|
|
104
|
+
./spec/carddb/resources/decks_spec.rb[1:5:1] | passed | 0.00389 seconds |
|
|
105
|
+
./spec/carddb/resources/decks_spec.rb[1:6:1] | passed | 0.00375 seconds |
|
|
106
|
+
./spec/carddb/resources/decks_spec.rb[1:7:1] | passed | 0.0037 seconds |
|
|
107
|
+
./spec/carddb/resources/decks_spec.rb[1:8:1] | passed | 0.00413 seconds |
|
|
108
|
+
./spec/carddb/resources/decks_spec.rb[1:9:1] | passed | 0.00412 seconds |
|
|
109
|
+
./spec/carddb/resources/decks_spec.rb[1:10:1] | passed | 0.00398 seconds |
|
|
110
|
+
./spec/carddb/resources/decks_spec.rb[1:11:1] | passed | 0.00387 seconds |
|
|
111
|
+
./spec/carddb/resources/decks_spec.rb[1:11:2] | passed | 0.00762 seconds |
|
|
112
|
+
./spec/carddb/resources/decks_spec.rb[1:11:3] | passed | 0.00502 seconds |
|
|
113
|
+
./spec/carddb/resources/decks_spec.rb[1:11:4] | passed | 0.00422 seconds |
|
|
114
|
+
./spec/carddb/resources/decks_spec.rb[1:12:1] | passed | 0.00354 seconds |
|
|
115
|
+
./spec/carddb/resources/decks_spec.rb[1:13:1] | passed | 0.00386 seconds |
|
|
116
|
+
./spec/carddb/resources/decks_spec.rb[1:14:1] | passed | 0.00363 seconds |
|
|
117
|
+
./spec/carddb/resources/decks_spec.rb[1:14:2] | passed | 0.00495 seconds |
|
|
118
|
+
./spec/carddb/resources/decks_spec.rb[1:14:3] | passed | 0.00394 seconds |
|
|
119
|
+
./spec/carddb/resources/decks_spec.rb[1:15:1] | passed | 0.00407 seconds |
|
|
120
|
+
./spec/carddb/resources/decks_spec.rb[1:16:1] | passed | 0.00354 seconds |
|
|
121
|
+
./spec/carddb/resources/decks_spec.rb[1:17:1] | passed | 0.00443 seconds |
|
|
122
|
+
./spec/carddb/resources/decks_spec.rb[1:17:2] | passed | 0.00552 seconds |
|
|
123
|
+
./spec/carddb/resources/decks_spec.rb[1:17:3] | passed | 0.0038 seconds |
|
|
124
|
+
./spec/carddb/resources/decks_spec.rb[1:18:1] | passed | 0.00526 seconds |
|
|
125
|
+
./spec/carddb/resources/decks_spec.rb[1:19:1] | passed | 0.00373 seconds |
|
|
126
|
+
./spec/carddb/resources/decks_spec.rb[1:20:1] | passed | 0.00356 seconds |
|
|
127
|
+
./spec/carddb/resources/decks_spec.rb[1:21:1] | passed | 0.00354 seconds |
|
|
128
|
+
./spec/carddb/resources/decks_spec.rb[1:22:1] | passed | 0.00362 seconds |
|
|
129
|
+
./spec/carddb/resources/decks_spec.rb[1:23:1] | passed | 0.00352 seconds |
|
|
130
|
+
./spec/carddb/resources/decks_spec.rb[1:24:1] | passed | 0.00352 seconds |
|
|
131
|
+
./spec/carddb/resources/decks_spec.rb[1:25:1] | passed | 0.00353 seconds |
|
|
132
|
+
./spec/carddb/resources/games_spec.rb[1:1:1] | passed | 0.00357 seconds |
|
|
133
|
+
./spec/carddb/resources/games_spec.rb[1:1:2] | passed | 0.00007 seconds |
|
|
134
|
+
./spec/carddb/resources/games_spec.rb[1:2:1] | passed | 0.00368 seconds |
|
|
135
|
+
./spec/carddb/resources/games_spec.rb[1:2:2] | passed | 0.00367 seconds |
|
|
136
|
+
./spec/carddb/resources/publisher_workflows_spec.rb[1:1:1] | passed | 0.00369 seconds |
|
|
137
|
+
./spec/carddb/resources/publisher_workflows_spec.rb[1:1:2] | passed | 0.00371 seconds |
|
|
138
|
+
./spec/carddb/resources/publisher_workflows_spec.rb[1:1:3] | passed | 0.00441 seconds |
|
|
139
|
+
./spec/carddb/resources/publisher_workflows_spec.rb[1:2:1] | passed | 0.00422 seconds |
|
|
140
|
+
./spec/carddb/resources/publisher_workflows_spec.rb[1:2:2] | passed | 0.00007 seconds |
|
|
141
|
+
./spec/carddb/resources/publisher_workflows_spec.rb[1:3:1] | passed | 0.00384 seconds |
|
|
142
|
+
./spec/carddb/resources/publisher_workflows_spec.rb[1:3:2] | passed | 0.00365 seconds |
|
|
143
|
+
./spec/carddb/resources/publisher_workflows_spec.rb[1:3:3] | passed | 0.00347 seconds |
|
|
144
|
+
./spec/carddb/resources/publisher_workflows_spec.rb[1:4:1] | passed | 0.00391 seconds |
|
|
145
|
+
./spec/carddb/resources/publisher_workflows_spec.rb[1:4:2] | passed | 0.00468 seconds |
|
|
146
|
+
./spec/carddb/resources/publisher_workflows_spec.rb[1:4:3] | passed | 0.00398 seconds |
|
|
147
|
+
./spec/carddb/resources/publisher_workflows_spec.rb[1:5:1] | passed | 0.00697 seconds |
|
|
148
|
+
./spec/carddb/resources/publisher_workflows_spec.rb[1:5:2] | passed | 0.00372 seconds |
|
|
149
|
+
./spec/carddb/resources/publishers_spec.rb[1:1:1] | passed | 0.00448 seconds |
|
|
150
|
+
./spec/carddb/resources/publishers_spec.rb[1:2:1] | passed | 0.0038 seconds |
|
|
151
|
+
./spec/carddb/resources/records_spec.rb[1:1:1] | passed | 0.00458 seconds |
|
|
152
|
+
./spec/carddb/resources/records_spec.rb[1:1:2] | passed | 0.00364 seconds |
|
|
153
|
+
./spec/carddb/resources/records_spec.rb[1:1:3] | passed | 0.0001 seconds |
|
|
154
|
+
./spec/carddb/resources/records_spec.rb[1:1:4] | passed | 0.00004 seconds |
|
|
155
|
+
./spec/carddb/resources/records_spec.rb[1:2:1] | passed | 0.00451 seconds |
|
|
156
|
+
./spec/carddb/resources/records_spec.rb[1:2:2] | passed | 0.00353 seconds |
|
|
157
|
+
./spec/carddb/resources/records_spec.rb[1:2:3] | passed | 0.00354 seconds |
|
|
158
|
+
./spec/carddb/resources/records_spec.rb[1:3:1] | passed | 0.00506 seconds |
|
|
159
|
+
./spec/carddb/resources/records_spec.rb[1:3:2] | passed | 0.00011 seconds |
|
|
160
|
+
./spec/carddb/resources/records_spec.rb[1:4:1] | passed | 0.00361 seconds |
|
|
161
|
+
./spec/carddb/resources/records_spec.rb[1:4:2] | passed | 0.00116 seconds |
|
|
162
|
+
./spec/carddb/resources/records_spec.rb[1:4:3] | passed | 0.00011 seconds |
|
|
163
|
+
./spec/carddb/resources/rules_spec.rb[1:1:1] | passed | 0.00373 seconds |
|
|
164
|
+
./spec/carddb/resources/rules_spec.rb[1:2:1] | passed | 0.00413 seconds |
|
|
165
|
+
./spec/carddb_spec.rb[1:1] | passed | 0.00004 seconds |
|
|
166
|
+
./spec/carddb_spec.rb[1:2:1] | passed | 0.00003 seconds |
|
|
167
|
+
./spec/carddb_spec.rb[1:3:1] | passed | 0.00003 seconds |
|
|
168
|
+
./spec/carddb_spec.rb[1:4:1] | passed | 0.00004 seconds |
|
|
169
|
+
./spec/carddb_spec.rb[1:5:1] | passed | 0.00003 seconds |
|
|
170
|
+
./spec/carddb_spec.rb[1:6:1] | passed | 0.00003 seconds |
|
|
171
|
+
./spec/carddb_spec.rb[1:7:1] | passed | 0.00003 seconds |
|
data/CHANGELOG.md
CHANGED
|
@@ -9,10 +9,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
9
9
|
|
|
10
10
|
### Added
|
|
11
11
|
|
|
12
|
+
- Publisher workflow resources for game management, import-format management, import jobs, files, dataset exports, schema introspection, batch upsert, and bulk delete/reconciliation.
|
|
13
|
+
- Structured wrapper objects for import validation errors, import jobs/logs, delete job results, export jobs, files, and presigned uploads.
|
|
14
|
+
- Publisher content pipeline example and release-prep documentation.
|
|
12
15
|
- Deck import payloads now expose configured import format metadata and auto-detection details.
|
|
13
16
|
- Documentation now covers configured deck imports and `BAN` / `RESTRICTION` deck validation issue metadata.
|
|
14
17
|
- Deck clients now expose ownership-aware queries, claim/transfer/copy helpers, selected-deck app access management, configured import-format management, direct deck access token issuer fields, and `publishable_key` configuration.
|
|
15
18
|
|
|
19
|
+
### Security
|
|
20
|
+
|
|
21
|
+
- Publisher-management writes are guarded by secret-key-only checks and reject publishable-key or OAuth bearer-token configurations before making requests.
|
|
22
|
+
|
|
16
23
|
## [0.2.1] - 2026-05-01
|
|
17
24
|
|
|
18
25
|
### Fixed
|
data/README.md
CHANGED
|
@@ -102,7 +102,7 @@ Credential guidance:
|
|
|
102
102
|
|
|
103
103
|
- Use `publishable_key` for public reads and OAuth setup flows.
|
|
104
104
|
- Use `access_token` for user-authorized deck workflows.
|
|
105
|
-
- Use `secret_key` only in trusted server runtimes for app-owned deck sync and token exchange.
|
|
105
|
+
- Use `secret_key` only in trusted server runtimes for publisher management, app-owned deck sync, and token exchange.
|
|
106
106
|
- Secret-only helpers fail before making a request if `access_token` or `publishable_key` would be sent instead of a secret credential.
|
|
107
107
|
|
|
108
108
|
## Usage
|
|
@@ -192,6 +192,184 @@ dataset.searchable?(:name) # Check if field is searchable
|
|
|
192
192
|
dataset.field(:hp) # Get field info by key
|
|
193
193
|
```
|
|
194
194
|
|
|
195
|
+
### Publisher Workflows
|
|
196
|
+
|
|
197
|
+
Publisher-management writes require a trusted server-side `secret_key` or legacy `api_key`.
|
|
198
|
+
They fail before making a request if a `publishable_key` or OAuth `access_token` would be used.
|
|
199
|
+
|
|
200
|
+
```ruby
|
|
201
|
+
client = CardDB::Client.new(secret_key: ENV.fetch('CARDDB_SECRET_KEY'))
|
|
202
|
+
|
|
203
|
+
# Games and datasets
|
|
204
|
+
games = client.games.list(publisher_id: 'publisher_uuid')
|
|
205
|
+
game = client.games.get_by_key(publisher_id: 'publisher_uuid', game_key: 'pokemon-tcg')
|
|
206
|
+
game ||= client.games.create(
|
|
207
|
+
input: {
|
|
208
|
+
publisherId: 'publisher_uuid',
|
|
209
|
+
key: 'pokemon-tcg',
|
|
210
|
+
name: 'Pokemon TCG',
|
|
211
|
+
visibility: 'PRIVATE'
|
|
212
|
+
}
|
|
213
|
+
)
|
|
214
|
+
game = client.games.update(id: game.id, input: { description: 'Publisher-managed game' })
|
|
215
|
+
dataset = client.datasets.get_by_key(game_id: game.id, dataset_key: 'cards')
|
|
216
|
+
schema = client.datasets.get_schema(id: dataset.id)
|
|
217
|
+
|
|
218
|
+
# Import formats
|
|
219
|
+
formats = client.import_formats.list(game_id: game.id)
|
|
220
|
+
client.import_formats.create(
|
|
221
|
+
input: {
|
|
222
|
+
gameId: game.id,
|
|
223
|
+
key: 'pokemon-live',
|
|
224
|
+
name: 'Pokemon Live',
|
|
225
|
+
config: { schemaVersion: 1 }
|
|
226
|
+
}
|
|
227
|
+
)
|
|
228
|
+
|
|
229
|
+
# Files and imports
|
|
230
|
+
upload = client.files.request_upload(
|
|
231
|
+
input: {
|
|
232
|
+
filename: 'cards.json',
|
|
233
|
+
contentType: 'application/json',
|
|
234
|
+
size: 12_345,
|
|
235
|
+
isPublic: false,
|
|
236
|
+
publisherId: 'publisher_uuid'
|
|
237
|
+
}
|
|
238
|
+
)
|
|
239
|
+
|
|
240
|
+
job = client.imports.run(
|
|
241
|
+
input: {
|
|
242
|
+
datasetId: dataset.id,
|
|
243
|
+
fileId: upload.file.id,
|
|
244
|
+
format: 'JSON',
|
|
245
|
+
options: { mode: 'STRICT', onConflict: 'UPDATE' }
|
|
246
|
+
}
|
|
247
|
+
)
|
|
248
|
+
client.imports.wait_for_job(job.id)
|
|
249
|
+
|
|
250
|
+
# Batch upserts and explicit deletes
|
|
251
|
+
dry_run = client.records.upsert_batch(
|
|
252
|
+
input: {
|
|
253
|
+
datasetId: dataset.id,
|
|
254
|
+
records: [{ identifier: 'CARD-001', name: 'Pikachu' }],
|
|
255
|
+
options: { dryRun: true }
|
|
256
|
+
}
|
|
257
|
+
)
|
|
258
|
+
puts dry_run.dry_run_result.errors.map(&:index)
|
|
259
|
+
|
|
260
|
+
delete_job = client.records.delete_batch(
|
|
261
|
+
input: { datasetId: dataset.id, identifiers: ['CARD-001'], dryRun: true }
|
|
262
|
+
)
|
|
263
|
+
puts delete_job.results.map(&:status)
|
|
264
|
+
|
|
265
|
+
# Exports
|
|
266
|
+
export = client.exports.run(input: { datasetId: dataset.id, format: 'JSON' })
|
|
267
|
+
export = client.exports.wait_for_job(export.id)
|
|
268
|
+
puts export.download_url
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
Publisher import source modes:
|
|
272
|
+
|
|
273
|
+
- Direct payload: use `records`, `data`, or `imports.run(input: { data: ... })` for small CI payloads and tests.
|
|
274
|
+
- Uploaded file: use `files.request_upload`, PUT bytes to `upload_url`, `files.confirm_upload`, then pass `fileId` for larger JSON/CSV imports.
|
|
275
|
+
- Source URL: pass `sourceUrl` when CardDB should fetch and snapshot an HTTPS source before processing.
|
|
276
|
+
|
|
277
|
+
Existing-schema imports validate against the current dataset schema and reject unexpected fields:
|
|
278
|
+
|
|
279
|
+
```ruby
|
|
280
|
+
validation = client.imports.validate(
|
|
281
|
+
input: {
|
|
282
|
+
datasetId: dataset.id,
|
|
283
|
+
records: [{ identifier: 'CARD-001', name: 'Example Card' }],
|
|
284
|
+
options: { mode: 'STRICT', onConflict: 'UPDATE', dryRun: true }
|
|
285
|
+
}
|
|
286
|
+
)
|
|
287
|
+
|
|
288
|
+
validation.errors.each do |error|
|
|
289
|
+
puts "#{error.dataset_key}[#{error.index}]: #{error.errors.map(&:message).join(', ')}"
|
|
290
|
+
end
|
|
291
|
+
|
|
292
|
+
job = client.imports.run(
|
|
293
|
+
input: {
|
|
294
|
+
datasetId: dataset.id,
|
|
295
|
+
sourceUrl: 'https://publisher.example/cards.json',
|
|
296
|
+
format: 'JSON',
|
|
297
|
+
options: { mode: 'STRICT', onConflict: 'UPDATE' }
|
|
298
|
+
}
|
|
299
|
+
)
|
|
300
|
+
client.imports.wait_for_job(job.id)
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
Advanced game imports can create or update datasets and schemas in dependency order:
|
|
304
|
+
|
|
305
|
+
```ruby
|
|
306
|
+
advanced_data = {
|
|
307
|
+
datasets: [
|
|
308
|
+
{
|
|
309
|
+
name: 'sets',
|
|
310
|
+
schema: {
|
|
311
|
+
code: { type: 'STRING', isIdentifier: true },
|
|
312
|
+
name: { type: 'STRING', required: true }
|
|
313
|
+
},
|
|
314
|
+
records: [{ code: 'BASE', name: 'Base Set' }]
|
|
315
|
+
},
|
|
316
|
+
{
|
|
317
|
+
name: 'cards',
|
|
318
|
+
schema: {
|
|
319
|
+
identifier: { type: 'STRING', isIdentifier: true },
|
|
320
|
+
set_id: { type: 'LINK', linkDataset: '$sets', linkFieldKey: 'code' }
|
|
321
|
+
},
|
|
322
|
+
records: [{ identifier: 'BASE-001', set_id: 'BASE' }]
|
|
323
|
+
}
|
|
324
|
+
]
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
preview = client.imports.preview_game(input: { gameId: game.id, data: advanced_data })
|
|
328
|
+
raise preview.warnings.map(&:message).join(', ') unless preview.can_proceed?
|
|
329
|
+
|
|
330
|
+
game_import = client.imports.run_game(
|
|
331
|
+
input: {
|
|
332
|
+
gameId: game.id,
|
|
333
|
+
data: advanced_data,
|
|
334
|
+
options: { mode: 'CREATE', onConflict: 'UPDATE' }
|
|
335
|
+
}
|
|
336
|
+
)
|
|
337
|
+
client.imports.wait_for_game_job(game_import.id)
|
|
338
|
+
```
|
|
339
|
+
|
|
340
|
+
Schema introspection is useful before building import mappings or generated forms:
|
|
341
|
+
|
|
342
|
+
```ruby
|
|
343
|
+
schema = client.datasets.get_schema(game_id: game.id, dataset_key: 'cards')
|
|
344
|
+
identifier = schema.fields.find(&:identifier?)&.key
|
|
345
|
+
puts "Identifier field: #{identifier}"
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
Bulk delete is explicit. Preview first with `dryRun: true`, then execute by sending the same target set with `dryRun: false`.
|
|
349
|
+
|
|
350
|
+
```ruby
|
|
351
|
+
preview = client.records.delete_batch(
|
|
352
|
+
input: { datasetId: dataset.id, identifiers: ['CARD-001'], dryRun: true }
|
|
353
|
+
)
|
|
354
|
+
puts preview.results.map { |result| [result.target, result.status] }
|
|
355
|
+
|
|
356
|
+
delete_job = client.records.delete_batch(
|
|
357
|
+
input: { datasetId: dataset.id, identifiers: ['CARD-001'], dryRun: false }
|
|
358
|
+
)
|
|
359
|
+
client.records.wait_for_delete_job(delete_job.id)
|
|
360
|
+
```
|
|
361
|
+
|
|
362
|
+
Exports produce signed download URLs. Refresh a completed job when the URL is stale but the export file still exists.
|
|
363
|
+
|
|
364
|
+
```ruby
|
|
365
|
+
export_job = client.exports.run(input: { datasetId: dataset.id, format: 'CSV' })
|
|
366
|
+
completed = client.exports.wait_for_job(export_job.id)
|
|
367
|
+
fresh = client.exports.refresh_url(id: completed.id)
|
|
368
|
+
puts fresh.download_url
|
|
369
|
+
```
|
|
370
|
+
|
|
371
|
+
See [`examples/publisher_content_pipeline.rb`](examples/publisher_content_pipeline.rb) for a CI/CD-style content pipeline example.
|
|
372
|
+
|
|
195
373
|
### Rules and Formats
|
|
196
374
|
|
|
197
375
|
```ruby
|
|
@@ -939,8 +1117,18 @@ bundle exec rspec
|
|
|
939
1117
|
|
|
940
1118
|
# Run linter
|
|
941
1119
|
bundle exec rubocop
|
|
1120
|
+
|
|
1121
|
+
# Run full verification
|
|
1122
|
+
bundle exec rake
|
|
942
1123
|
```
|
|
943
1124
|
|
|
1125
|
+
Release prep checklist:
|
|
1126
|
+
|
|
1127
|
+
- Run `bundle exec rspec`, `bundle exec rubocop`, and `bundle exec rake`.
|
|
1128
|
+
- Review `CHANGELOG.md` and the gem version.
|
|
1129
|
+
- Build/publish only when explicitly approved; do not publish to RubyGems from docs-only prep.
|
|
1130
|
+
- Keep `secret_key` examples server-side only.
|
|
1131
|
+
|
|
944
1132
|
## License
|
|
945
1133
|
|
|
946
1134
|
MIT License. See [LICENSE.txt](LICENSE.txt).
|