carddb 0.3.0 → 0.3.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 28e13db01ff91cbed41632eccb331c91785ad6698d39c0395950c61fd5781401
4
- data.tar.gz: 2b3404e6970671ab7cb39c366d0de5431b12ea6ba1f3fa589f749ade0bd5271d
3
+ metadata.gz: 6c863ea4e71294af6d0772881b2e62014ac0d0557849909024e059abcec923cf
4
+ data.tar.gz: 74fb0042d233b5956b61089d0a6a04d423ec500e389aa2b1fd9b536e18360ced
5
5
  SHA512:
6
- metadata.gz: ed41cf28d05c2332eb3c97746a0261814d0cf06b32fa459775d7bc0f5afb6f2ff0d4c95aacf36ff3ecd049ec883bf1d3088c5cbefca7b23179e5a2bb80f8bfa5
7
- data.tar.gz: e230a4465dd0f04ee06ebc8837dedb34aaaddbb61fd7bd49a5400ce018978a7662ba65c96a8afb2ac05f2a2cae63c002c87ec0147f477b3965570fb940056ea8
6
+ metadata.gz: c7728fddf519b8890e3dec092720d31c8bda2bf4bcdf8ee44fff54f215f6256e53d56a7f7b73291767de563f2a42187d9dbf604514275d3a58a7a3d0172671a3
7
+ data.tar.gz: 6f59cf062792c4286cbc4c86f670f68706b7508876765b1c5b2a0e0c0e4aded17b7f99ed9d1988f63ff41845b6f1642a7dbde8b83bde79a9c988e9618a30e9f6
data/.rspec_status CHANGED
@@ -1,151 +1,171 @@
1
- example_id | status | run_time |
2
- ------------------------------------------------- | ------ | --------------- |
3
- ./spec/carddb/client_spec.rb[1:1:1] | passed | 0.00024 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.00004 seconds |
6
- ./spec/carddb/client_spec.rb[1:1:4] | passed | 0.00004 seconds |
7
- ./spec/carddb/client_spec.rb[1:2:1] | passed | 0.00016 seconds |
8
- ./spec/carddb/client_spec.rb[1:2:2] | passed | 0.00017 seconds |
9
- ./spec/carddb/client_spec.rb[1:3:1] | passed | 0.00003 seconds |
10
- ./spec/carddb/client_spec.rb[1:4:1] | passed | 0.00003 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.00025 seconds |
14
- ./spec/carddb/client_spec.rb[1:7:2] | passed | 0.00901 seconds |
15
- ./spec/carddb/collection_spec.rb[1:1:1] | passed | 0.00007 seconds |
16
- ./spec/carddb/collection_spec.rb[2:1:1] | passed | 0.00004 seconds |
17
- ./spec/carddb/collection_spec.rb[3:1:1] | passed | 0.00222 seconds |
18
- ./spec/carddb/collection_spec.rb[3:1:2] | passed | 0.00016 seconds |
19
- ./spec/carddb/collection_spec.rb[3:1:3] | passed | 0.00042 seconds |
20
- ./spec/carddb/collection_spec.rb[3:1:4] | passed | 0.0004 seconds |
21
- ./spec/carddb/collection_spec.rb[3:1:5] | passed | 0.00005 seconds |
22
- ./spec/carddb/collection_spec.rb[4:1:1] | passed | 0.00016 seconds |
23
- ./spec/carddb/collection_spec.rb[4:1:2] | passed | 0.00015 seconds |
24
- ./spec/carddb/collection_spec.rb[4:1:3] | passed | 0.00016 seconds |
25
- ./spec/carddb/collection_spec.rb[4:1:4] | passed | 0.00004 seconds |
26
- ./spec/carddb/configuration_spec.rb[1:1:1] | passed | 0.00004 seconds |
27
- ./spec/carddb/configuration_spec.rb[1:1:2] | passed | 0.00003 seconds |
28
- ./spec/carddb/configuration_spec.rb[1:1:3] | passed | 0.00004 seconds |
29
- ./spec/carddb/configuration_spec.rb[1:1:4] | passed | 0.00004 seconds |
30
- ./spec/carddb/configuration_spec.rb[1:1:5] | passed | 0.00003 seconds |
31
- ./spec/carddb/configuration_spec.rb[1:1:6] | passed | 0.00003 seconds |
32
- ./spec/carddb/configuration_spec.rb[1:2:1:1] | passed | 0.00005 seconds |
33
- ./spec/carddb/configuration_spec.rb[1:2:2:1] | passed | 0.00004 seconds |
34
- ./spec/carddb/configuration_spec.rb[1:2:2:2] | passed | 0.00004 seconds |
35
- ./spec/carddb/configuration_spec.rb[1:3:1:1] | passed | 0.00004 seconds |
36
- ./spec/carddb/configuration_spec.rb[1:3:2:1] | passed | 0.00003 seconds |
37
- ./spec/carddb/configuration_spec.rb[1:3:2:2] | passed | 0.00004 seconds |
38
- ./spec/carddb/configuration_spec.rb[1:3:2:3] | passed | 0.00003 seconds |
39
- ./spec/carddb/configuration_spec.rb[1:4:1] | passed | 0.00003 seconds |
40
- ./spec/carddb/configuration_spec.rb[1:4:2] | passed | 0.00005 seconds |
41
- ./spec/carddb/configuration_spec.rb[1:5:1] | passed | 0.00003 seconds |
42
- ./spec/carddb/configuration_spec.rb[1:6:1] | passed | 0.00003 seconds |
43
- ./spec/carddb/configuration_spec.rb[1:6:2] | passed | 0.00003 seconds |
44
- ./spec/carddb/configuration_spec.rb[1:6:3] | passed | 0.00003 seconds |
45
- ./spec/carddb/configuration_spec.rb[1:7:1] | passed | 0.00004 seconds |
46
- ./spec/carddb/configuration_spec.rb[1:7:2] | passed | 0.00004 seconds |
47
- ./spec/carddb/configuration_spec.rb[1:7:3] | passed | 0.00004 seconds |
48
- ./spec/carddb/filter_builder_spec.rb[1:1:1] | passed | 0.00004 seconds |
49
- ./spec/carddb/filter_builder_spec.rb[1:1:2] | passed | 0.00003 seconds |
50
- ./spec/carddb/filter_builder_spec.rb[1:1:3] | passed | 0.00003 seconds |
51
- ./spec/carddb/filter_builder_spec.rb[1:1:4] | passed | 0.00003 seconds |
52
- ./spec/carddb/filter_builder_spec.rb[1:1:5] | passed | 0.00003 seconds |
53
- ./spec/carddb/filter_builder_spec.rb[1:1:6] | passed | 0.00003 seconds |
54
- ./spec/carddb/filter_builder_spec.rb[1:1:7] | passed | 0.00004 seconds |
55
- ./spec/carddb/filter_builder_spec.rb[1:1:8] | passed | 0.00003 seconds |
56
- ./spec/carddb/filter_builder_spec.rb[1:2:1] | passed | 0.00003 seconds |
57
- ./spec/carddb/filter_builder_spec.rb[1:2:2] | passed | 0.00003 seconds |
58
- ./spec/carddb/filter_builder_spec.rb[1:2:3] | passed | 0.00003 seconds |
59
- ./spec/carddb/filter_builder_spec.rb[1:2:4] | passed | 0.00003 seconds |
60
- ./spec/carddb/filter_builder_spec.rb[1:2:5] | passed | 0.00003 seconds |
61
- ./spec/carddb/filter_builder_spec.rb[1:2:6] | passed | 0.00002 seconds |
62
- ./spec/carddb/filter_builder_spec.rb[1:2:7] | passed | 0.00003 seconds |
63
- ./spec/carddb/filter_builder_spec.rb[1:2:8] | passed | 0.00003 seconds |
64
- ./spec/carddb/filter_builder_spec.rb[1:2:9] | passed | 0.00004 seconds |
65
- ./spec/carddb/filter_builder_spec.rb[1:2:10] | passed | 0.00003 seconds |
66
- ./spec/carddb/filter_builder_spec.rb[1:2:11] | passed | 0.00003 seconds |
67
- ./spec/carddb/filter_builder_spec.rb[1:2:12] | passed | 0.00003 seconds |
68
- ./spec/carddb/filter_builder_spec.rb[1:2:13] | passed | 0.00004 seconds |
69
- ./spec/carddb/query_builder_spec.rb[1:1:1] | passed | 0.00004 seconds |
70
- ./spec/carddb/query_builder_spec.rb[1:1:2] | passed | 0.00004 seconds |
71
- ./spec/carddb/query_builder_spec.rb[1:1:3] | passed | 0.00064 seconds |
72
- ./spec/carddb/query_builder_spec.rb[1:2:1:1] | passed | 0.00006 seconds |
73
- ./spec/carddb/query_builder_spec.rb[1:2:2:1] | passed | 0.00004 seconds |
74
- ./spec/carddb/query_builder_spec.rb[1:3:1] | passed | 0.00005 seconds |
75
- ./spec/carddb/query_builder_spec.rb[1:3:2] | passed | 0.00004 seconds |
76
- ./spec/carddb/query_builder_spec.rb[1:4:1] | passed | 0.00004 seconds |
77
- ./spec/carddb/query_builder_spec.rb[1:4:2] | passed | 0.00004 seconds |
78
- ./spec/carddb/query_builder_spec.rb[1:5:1] | passed | 0.00003 seconds |
79
- ./spec/carddb/query_builder_spec.rb[1:5:2] | passed | 0.00004 seconds |
80
- ./spec/carddb/query_builder_spec.rb[1:5:3] | passed | 0.00006 seconds |
81
- ./spec/carddb/query_builder_spec.rb[1:5:4] | passed | 0.00004 seconds |
82
- ./spec/carddb/query_builder_spec.rb[1:5:5] | passed | 0.00007 seconds |
83
- ./spec/carddb/query_builder_spec.rb[1:5:6] | passed | 0.00004 seconds |
84
- ./spec/carddb/query_builder_spec.rb[1:5:7] | passed | 0.00004 seconds |
85
- ./spec/carddb/resources/datasets_spec.rb[1:1:1] | passed | 0.00434 seconds |
86
- ./spec/carddb/resources/datasets_spec.rb[1:1:2] | passed | 0.0044 seconds |
87
- ./spec/carddb/resources/datasets_spec.rb[1:2:1] | passed | 0.00411 seconds |
88
- ./spec/carddb/resources/decks_spec.rb[1:1:1] | passed | 0.00433 seconds |
89
- ./spec/carddb/resources/decks_spec.rb[1:1:2] | passed | 0.00429 seconds |
90
- ./spec/carddb/resources/decks_spec.rb[1:1:3] | passed | 0.00406 seconds |
91
- ./spec/carddb/resources/decks_spec.rb[1:1:4] | passed | 0.00423 seconds |
92
- ./spec/carddb/resources/decks_spec.rb[1:2:1] | passed | 0.0045 seconds |
93
- ./spec/carddb/resources/decks_spec.rb[1:2:2] | passed | 0.0082 seconds |
94
- ./spec/carddb/resources/decks_spec.rb[1:2:3] | passed | 0.00007 seconds |
95
- ./spec/carddb/resources/decks_spec.rb[1:3:1] | passed | 0.00416 seconds |
96
- ./spec/carddb/resources/decks_spec.rb[1:4:1] | passed | 0.00417 seconds |
97
- ./spec/carddb/resources/decks_spec.rb[1:5:1] | passed | 0.00397 seconds |
98
- ./spec/carddb/resources/decks_spec.rb[1:6:1] | passed | 0.004 seconds |
99
- ./spec/carddb/resources/decks_spec.rb[1:7:1] | passed | 0.00399 seconds |
100
- ./spec/carddb/resources/decks_spec.rb[1:8:1] | passed | 0.00412 seconds |
101
- ./spec/carddb/resources/decks_spec.rb[1:9:1] | passed | 0.00416 seconds |
102
- ./spec/carddb/resources/decks_spec.rb[1:10:1] | passed | 0.00424 seconds |
103
- ./spec/carddb/resources/decks_spec.rb[1:11:1] | passed | 0.00415 seconds |
104
- ./spec/carddb/resources/decks_spec.rb[1:11:2] | passed | 0.00402 seconds |
105
- ./spec/carddb/resources/decks_spec.rb[1:11:3] | passed | 0.0082 seconds |
106
- ./spec/carddb/resources/decks_spec.rb[1:11:4] | passed | 0.00452 seconds |
107
- ./spec/carddb/resources/decks_spec.rb[1:12:1] | passed | 0.00408 seconds |
108
- ./spec/carddb/resources/decks_spec.rb[1:13:1] | passed | 0.00396 seconds |
109
- ./spec/carddb/resources/decks_spec.rb[1:14:1] | passed | 0.00432 seconds |
110
- ./spec/carddb/resources/decks_spec.rb[1:14:2] | passed | 0.00454 seconds |
111
- ./spec/carddb/resources/decks_spec.rb[1:14:3] | passed | 0.00404 seconds |
112
- ./spec/carddb/resources/decks_spec.rb[1:15:1] | passed | 0.0042 seconds |
113
- ./spec/carddb/resources/decks_spec.rb[1:16:1] | passed | 0.00418 seconds |
114
- ./spec/carddb/resources/decks_spec.rb[1:17:1] | passed | 0.00442 seconds |
115
- ./spec/carddb/resources/decks_spec.rb[1:17:2] | passed | 0.00463 seconds |
116
- ./spec/carddb/resources/decks_spec.rb[1:17:3] | passed | 0.00502 seconds |
117
- ./spec/carddb/resources/decks_spec.rb[1:18:1] | passed | 0.00582 seconds |
118
- ./spec/carddb/resources/decks_spec.rb[1:19:1] | passed | 0.00495 seconds |
119
- ./spec/carddb/resources/decks_spec.rb[1:20:1] | passed | 0.00392 seconds |
120
- ./spec/carddb/resources/decks_spec.rb[1:21:1] | passed | 0.00396 seconds |
121
- ./spec/carddb/resources/decks_spec.rb[1:22:1] | passed | 0.00508 seconds |
122
- ./spec/carddb/resources/decks_spec.rb[1:23:1] | passed | 0.00391 seconds |
123
- ./spec/carddb/resources/decks_spec.rb[1:24:1] | passed | 0.0042 seconds |
124
- ./spec/carddb/resources/decks_spec.rb[1:25:1] | passed | 0.00405 seconds |
125
- ./spec/carddb/resources/games_spec.rb[1:1:1] | passed | 0.0041 seconds |
126
- ./spec/carddb/resources/games_spec.rb[1:1:2] | passed | 0.00007 seconds |
127
- ./spec/carddb/resources/games_spec.rb[1:2:1] | passed | 0.00376 seconds |
128
- ./spec/carddb/resources/games_spec.rb[1:2:2] | passed | 0.00465 seconds |
129
- ./spec/carddb/resources/publishers_spec.rb[1:1:1] | passed | 0.00394 seconds |
130
- ./spec/carddb/resources/publishers_spec.rb[1:2:1] | passed | 0.00392 seconds |
131
- ./spec/carddb/resources/records_spec.rb[1:1:1] | passed | 0.00399 seconds |
132
- ./spec/carddb/resources/records_spec.rb[1:1:2] | passed | 0.00394 seconds |
133
- ./spec/carddb/resources/records_spec.rb[1:1:3] | passed | 0.00011 seconds |
134
- ./spec/carddb/resources/records_spec.rb[1:1:4] | passed | 0.00004 seconds |
135
- ./spec/carddb/resources/records_spec.rb[1:2:1] | passed | 0.00391 seconds |
136
- ./spec/carddb/resources/records_spec.rb[1:2:2] | passed | 0.00395 seconds |
137
- ./spec/carddb/resources/records_spec.rb[1:2:3] | passed | 0.0039 seconds |
138
- ./spec/carddb/resources/records_spec.rb[1:3:1] | passed | 0.00387 seconds |
139
- ./spec/carddb/resources/records_spec.rb[1:3:2] | passed | 0.00011 seconds |
140
- ./spec/carddb/resources/records_spec.rb[1:4:1] | passed | 0.00412 seconds |
141
- ./spec/carddb/resources/records_spec.rb[1:4:2] | passed | 0.00005 seconds |
142
- ./spec/carddb/resources/records_spec.rb[1:4:3] | passed | 0.00009 seconds |
143
- ./spec/carddb/resources/rules_spec.rb[1:1:1] | passed | 0.004 seconds |
144
- ./spec/carddb/resources/rules_spec.rb[1:2:1] | passed | 0.00388 seconds |
145
- ./spec/carddb_spec.rb[1:1] | passed | 0.00004 seconds |
146
- ./spec/carddb_spec.rb[1:2:1] | passed | 0.00004 seconds |
147
- ./spec/carddb_spec.rb[1:3:1] | passed | 0.00003 seconds |
148
- ./spec/carddb_spec.rb[1:4:1] | passed | 0.00004 seconds |
149
- ./spec/carddb_spec.rb[1:5:1] | passed | 0.00003 seconds |
150
- ./spec/carddb_spec.rb[1:6:1] | passed | 0.00003 seconds |
151
- ./spec/carddb_spec.rb[1:7:1] | passed | 0.00004 seconds |
1
+ example_id | status | run_time |
2
+ ---------------------------------------------------------- | ------ | --------------- |
3
+ ./spec/carddb/client_spec.rb[1:1:1] | passed | 0.00036 seconds |
4
+ ./spec/carddb/client_spec.rb[1:1:2] | passed | 0.00005 seconds |
5
+ ./spec/carddb/client_spec.rb[1:1:3] | passed | 0.00004 seconds |
6
+ ./spec/carddb/client_spec.rb[1:1:4] | passed | 0.00004 seconds |
7
+ ./spec/carddb/client_spec.rb[1:2:1] | passed | 0.00015 seconds |
8
+ ./spec/carddb/client_spec.rb[1:2:2] | passed | 0.0003 seconds |
9
+ ./spec/carddb/client_spec.rb[1:3:1] | passed | 0.00003 seconds |
10
+ ./spec/carddb/client_spec.rb[1:4:1] | passed | 0.00003 seconds |
11
+ ./spec/carddb/client_spec.rb[1:5:1] | passed | 0.00003 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.00003 seconds |
14
+ ./spec/carddb/client_spec.rb[1:8:1] | passed | 0.00003 seconds |
15
+ ./spec/carddb/client_spec.rb[1:9:1] | passed | 0.00003 seconds |
16
+ ./spec/carddb/client_spec.rb[1:10:1] | passed | 0.00004 seconds |
17
+ ./spec/carddb/client_spec.rb[1:11:1] | passed | 0.00025 seconds |
18
+ ./spec/carddb/client_spec.rb[1:11:2] | passed | 0.00838 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.00004 seconds |
21
+ ./spec/carddb/collection_spec.rb[3:1:1] | passed | 0.00206 seconds |
22
+ ./spec/carddb/collection_spec.rb[3:1:2] | passed | 0.00014 seconds |
23
+ ./spec/carddb/collection_spec.rb[3:1:3] | passed | 0.00053 seconds |
24
+ ./spec/carddb/collection_spec.rb[3:1:4] | passed | 0.00034 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.00013 seconds |
27
+ ./spec/carddb/collection_spec.rb[4:1:2] | passed | 0.00027 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.00004 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.00008 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.00003 seconds |
41
+ ./spec/carddb/configuration_spec.rb[1:3:2:2] | passed | 0.00004 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.00004 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.00003 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.00008 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.00003 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.00003 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.00003 seconds |
69
+ ./spec/carddb/filter_builder_spec.rb[1:2:10] | passed | 0.00009 seconds |
70
+ ./spec/carddb/filter_builder_spec.rb[1:2:11] | passed | 0.00003 seconds |
71
+ ./spec/carddb/filter_builder_spec.rb[1:2:12] | passed | 0.00003 seconds |
72
+ ./spec/carddb/filter_builder_spec.rb[1:2:13] | passed | 0.00003 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.00058 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.00003 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.00004 seconds |
87
+ ./spec/carddb/query_builder_spec.rb[1:5:6] | passed | 0.00004 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.00005 seconds |
90
+ ./spec/carddb/query_builder_spec.rb[1:6:2] | passed | 0.00044 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.0039 seconds |
93
+ ./spec/carddb/resources/datasets_spec.rb[1:1:2] | passed | 0.004 seconds |
94
+ ./spec/carddb/resources/datasets_spec.rb[1:2:1] | passed | 0.00379 seconds |
95
+ ./spec/carddb/resources/decks_spec.rb[1:1:1] | passed | 0.00388 seconds |
96
+ ./spec/carddb/resources/decks_spec.rb[1:1:2] | passed | 0.00468 seconds |
97
+ ./spec/carddb/resources/decks_spec.rb[1:1:3] | passed | 0.00396 seconds |
98
+ ./spec/carddb/resources/decks_spec.rb[1:1:4] | passed | 0.00405 seconds |
99
+ ./spec/carddb/resources/decks_spec.rb[1:2:1] | passed | 0.00427 seconds |
100
+ ./spec/carddb/resources/decks_spec.rb[1:2:2] | passed | 0.00802 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.00407 seconds |
103
+ ./spec/carddb/resources/decks_spec.rb[1:4:1] | passed | 0.0039 seconds |
104
+ ./spec/carddb/resources/decks_spec.rb[1:5:1] | passed | 0.00395 seconds |
105
+ ./spec/carddb/resources/decks_spec.rb[1:6:1] | passed | 0.00395 seconds |
106
+ ./spec/carddb/resources/decks_spec.rb[1:7:1] | passed | 0.00386 seconds |
107
+ ./spec/carddb/resources/decks_spec.rb[1:8:1] | passed | 0.00376 seconds |
108
+ ./spec/carddb/resources/decks_spec.rb[1:9:1] | passed | 0.0041 seconds |
109
+ ./spec/carddb/resources/decks_spec.rb[1:10:1] | passed | 0.00419 seconds |
110
+ ./spec/carddb/resources/decks_spec.rb[1:11:1] | passed | 0.00401 seconds |
111
+ ./spec/carddb/resources/decks_spec.rb[1:11:2] | passed | 0.00775 seconds |
112
+ ./spec/carddb/resources/decks_spec.rb[1:11:3] | passed | 0.00436 seconds |
113
+ ./spec/carddb/resources/decks_spec.rb[1:11:4] | passed | 0.00444 seconds |
114
+ ./spec/carddb/resources/decks_spec.rb[1:12:1] | passed | 0.00373 seconds |
115
+ ./spec/carddb/resources/decks_spec.rb[1:13:1] | passed | 0.00422 seconds |
116
+ ./spec/carddb/resources/decks_spec.rb[1:14:1] | passed | 0.00396 seconds |
117
+ ./spec/carddb/resources/decks_spec.rb[1:14:2] | passed | 0.00443 seconds |
118
+ ./spec/carddb/resources/decks_spec.rb[1:14:3] | passed | 0.00416 seconds |
119
+ ./spec/carddb/resources/decks_spec.rb[1:15:1] | passed | 0.00403 seconds |
120
+ ./spec/carddb/resources/decks_spec.rb[1:16:1] | passed | 0.00382 seconds |
121
+ ./spec/carddb/resources/decks_spec.rb[1:17:1] | passed | 0.00399 seconds |
122
+ ./spec/carddb/resources/decks_spec.rb[1:17:2] | passed | 0.00541 seconds |
123
+ ./spec/carddb/resources/decks_spec.rb[1:17:3] | passed | 0.00507 seconds |
124
+ ./spec/carddb/resources/decks_spec.rb[1:18:1] | passed | 0.00453 seconds |
125
+ ./spec/carddb/resources/decks_spec.rb[1:19:1] | passed | 0.0038 seconds |
126
+ ./spec/carddb/resources/decks_spec.rb[1:20:1] | passed | 0.00385 seconds |
127
+ ./spec/carddb/resources/decks_spec.rb[1:21:1] | passed | 0.0037 seconds |
128
+ ./spec/carddb/resources/decks_spec.rb[1:22:1] | passed | 0.00364 seconds |
129
+ ./spec/carddb/resources/decks_spec.rb[1:23:1] | passed | 0.00386 seconds |
130
+ ./spec/carddb/resources/decks_spec.rb[1:24:1] | passed | 0.004 seconds |
131
+ ./spec/carddb/resources/decks_spec.rb[1:25:1] | passed | 0.0038 seconds |
132
+ ./spec/carddb/resources/games_spec.rb[1:1:1] | passed | 0.00383 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.0038 seconds |
135
+ ./spec/carddb/resources/games_spec.rb[1:2:2] | passed | 0.00375 seconds |
136
+ ./spec/carddb/resources/publisher_workflows_spec.rb[1:1:1] | passed | 0.00359 seconds |
137
+ ./spec/carddb/resources/publisher_workflows_spec.rb[1:1:2] | passed | 0.00369 seconds |
138
+ ./spec/carddb/resources/publisher_workflows_spec.rb[1:1:3] | passed | 0.00382 seconds |
139
+ ./spec/carddb/resources/publisher_workflows_spec.rb[1:2:1] | passed | 0.00401 seconds |
140
+ ./spec/carddb/resources/publisher_workflows_spec.rb[1:2:2] | passed | 0.00006 seconds |
141
+ ./spec/carddb/resources/publisher_workflows_spec.rb[1:3:1] | passed | 0.00404 seconds |
142
+ ./spec/carddb/resources/publisher_workflows_spec.rb[1:3:2] | passed | 0.0036 seconds |
143
+ ./spec/carddb/resources/publisher_workflows_spec.rb[1:3:3] | passed | 0.00361 seconds |
144
+ ./spec/carddb/resources/publisher_workflows_spec.rb[1:4:1] | passed | 0.00371 seconds |
145
+ ./spec/carddb/resources/publisher_workflows_spec.rb[1:4:2] | passed | 0.00421 seconds |
146
+ ./spec/carddb/resources/publisher_workflows_spec.rb[1:4:3] | passed | 0.00394 seconds |
147
+ ./spec/carddb/resources/publisher_workflows_spec.rb[1:5:1] | passed | 0.00725 seconds |
148
+ ./spec/carddb/resources/publisher_workflows_spec.rb[1:5:2] | passed | 0.00427 seconds |
149
+ ./spec/carddb/resources/publishers_spec.rb[1:1:1] | passed | 0.00354 seconds |
150
+ ./spec/carddb/resources/publishers_spec.rb[1:2:1] | passed | 0.00426 seconds |
151
+ ./spec/carddb/resources/records_spec.rb[1:1:1] | passed | 0.00368 seconds |
152
+ ./spec/carddb/resources/records_spec.rb[1:1:2] | passed | 0.0046 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.00005 seconds |
155
+ ./spec/carddb/resources/records_spec.rb[1:2:1] | passed | 0.0036 seconds |
156
+ ./spec/carddb/resources/records_spec.rb[1:2:2] | passed | 0.00358 seconds |
157
+ ./spec/carddb/resources/records_spec.rb[1:2:3] | passed | 0.00456 seconds |
158
+ ./spec/carddb/resources/records_spec.rb[1:3:1] | passed | 0.00377 seconds |
159
+ ./spec/carddb/resources/records_spec.rb[1:3:2] | passed | 0.0001 seconds |
160
+ ./spec/carddb/resources/records_spec.rb[1:4:1] | passed | 0.00363 seconds |
161
+ ./spec/carddb/resources/records_spec.rb[1:4:2] | passed | 0.00004 seconds |
162
+ ./spec/carddb/resources/records_spec.rb[1:4:3] | passed | 0.0001 seconds |
163
+ ./spec/carddb/resources/rules_spec.rb[1:1:1] | passed | 0.00353 seconds |
164
+ ./spec/carddb/resources/rules_spec.rb[1:2:1] | passed | 0.00358 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.00003 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
@@ -406,6 +584,15 @@ access = client.decks.exchange_access_token(
406
584
 
407
585
  deck = client.decks.access(token: access.token)
408
586
 
587
+ session = client.decks.exchange_session_token(
588
+ input: {
589
+ publisherSlug: "pokemon-company",
590
+ gameKey: "pokemon-tcg",
591
+ externalSubject: "user_123",
592
+ scopes: %w[DECKS_READ DECKS_WRITE DECKS_PUBLISH]
593
+ }
594
+ )
595
+
409
596
  # Account sessions can also create trusted issuers for a selected API app.
410
597
  client.decks.create_access_token_issuer(
411
598
  input: {
@@ -939,8 +1126,18 @@ bundle exec rspec
939
1126
 
940
1127
  # Run linter
941
1128
  bundle exec rubocop
1129
+
1130
+ # Run full verification
1131
+ bundle exec rake
942
1132
  ```
943
1133
 
1134
+ Release prep checklist:
1135
+
1136
+ - Run `bundle exec rspec`, `bundle exec rubocop`, and `bundle exec rake`.
1137
+ - Review `CHANGELOG.md` and the gem version.
1138
+ - Build/publish only when explicitly approved; do not publish to RubyGems from docs-only prep.
1139
+ - Keep `secret_key` examples server-side only.
1140
+
944
1141
  ## License
945
1142
 
946
1143
  MIT License. See [LICENSE.txt](LICENSE.txt).