travis-backup-for-v3 0.1.1 → 0.1.2

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.
Files changed (65) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +215 -152
  3. data/README.md +1 -1
  4. data/lib/backup/remove_specified/remove_heavy_data.rb +17 -103
  5. data/lib/backup/remove_specified/remove_with_all_dependencies.rb +6 -0
  6. data/lib/backup/save_id_hash_to_file.rb +1 -0
  7. data/lib/config.rb +11 -3
  8. data/lib/db_helper.rb +1 -5
  9. data/lib/models/abuse.rb +0 -2
  10. data/lib/models/beta_migration_request.rb +0 -2
  11. data/lib/models/branch.rb +0 -2
  12. data/lib/models/broadcast.rb +0 -2
  13. data/lib/models/build.rb +0 -2
  14. data/lib/models/build_config.rb +0 -2
  15. data/lib/models/cancellation.rb +0 -2
  16. data/lib/models/commit.rb +0 -2
  17. data/lib/models/cron.rb +0 -2
  18. data/lib/models/deleted_build.rb +0 -2
  19. data/lib/models/deleted_build_config.rb +0 -2
  20. data/lib/models/deleted_commit.rb +0 -2
  21. data/lib/models/deleted_job.rb +0 -2
  22. data/lib/models/deleted_job_config.rb +0 -2
  23. data/lib/models/deleted_pull_request.rb +0 -2
  24. data/lib/models/deleted_request.rb +0 -2
  25. data/lib/models/deleted_request_config.rb +0 -2
  26. data/lib/models/deleted_request_payload.rb +0 -2
  27. data/lib/models/deleted_request_raw_config.rb +0 -2
  28. data/lib/models/deleted_request_raw_configuration.rb +0 -2
  29. data/lib/models/deleted_request_yaml_config.rb +0 -2
  30. data/lib/models/deleted_ssl_key.rb +0 -2
  31. data/lib/models/deleted_stage.rb +0 -2
  32. data/lib/models/deleted_tag.rb +0 -2
  33. data/lib/models/email.rb +0 -2
  34. data/lib/models/email_unsubscribe.rb +0 -2
  35. data/lib/models/installation.rb +0 -2
  36. data/lib/models/invoice.rb +0 -2
  37. data/lib/models/job_config.rb +0 -2
  38. data/lib/models/job_version.rb +0 -2
  39. data/lib/models/membership.rb +0 -2
  40. data/lib/models/organization.rb +0 -2
  41. data/lib/models/owner_group.rb +0 -2
  42. data/lib/models/permission.rb +0 -2
  43. data/lib/models/pull_request.rb +0 -2
  44. data/lib/models/queueable_job.rb +0 -2
  45. data/lib/models/repo_count.rb +0 -2
  46. data/lib/models/repository.rb +0 -2
  47. data/lib/models/request.rb +0 -2
  48. data/lib/models/request_config.rb +0 -2
  49. data/lib/models/request_payload.rb +0 -2
  50. data/lib/models/request_raw_config.rb +0 -2
  51. data/lib/models/request_raw_configuration.rb +0 -2
  52. data/lib/models/request_yaml_config.rb +0 -2
  53. data/lib/models/ssl_key.rb +0 -2
  54. data/lib/models/stage.rb +0 -2
  55. data/lib/models/star.rb +0 -2
  56. data/lib/models/subscription.rb +0 -2
  57. data/lib/models/tag.rb +0 -2
  58. data/lib/models/token.rb +0 -2
  59. data/lib/models/trial.rb +0 -2
  60. data/lib/models/trial_allowance.rb +0 -2
  61. data/lib/models/user.rb +1 -2
  62. data/lib/models/user_beta_feature.rb +0 -2
  63. data/lib/models/user_utm_param.rb +0 -2
  64. data/travis-backup-for-v3.gemspec +12 -12
  65. metadata +27 -34
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 416a6dc6ebe2ab1b8cfae65a8a672b73170aef4506de1da5abd40f0960319d07
4
- data.tar.gz: 011cfada8099c49c95c45fa8b80e1aa110959fea4e5d92db787f0d5e26c801d6
3
+ metadata.gz: 6b266edee254a754a11d020786c9d1cfaef23cbf774987c26912fc7324432ea4
4
+ data.tar.gz: 1118b310ab819b50da380cecf960f835409cb839eb35ab525875fd074448f297
5
5
  SHA512:
6
- metadata.gz: d8fff5c1c4f8e03fdbf594fb89330cd8f4b1129b69cbede0c843ea8dfe294907f85eab346254b36468aa4e3f7dbbd687ae17d1de0a47e2024f99a1ed42f1244c
7
- data.tar.gz: e75938ae7fd17a8779fa73d976d6712135ae5e1f39b08e056c791c302f0bd0ba555a70c690c96af0580caaacabf8f4f9f1f22b33a518492f396b93a54162c9a9
6
+ metadata.gz: c161f1f224135e12809cc944bc6c8e7e6bc1b5b9323413149cc9f25e71e8e28cdfbd49965313101db3086f6fb6500047319487d9523974979aab589540ee5155
7
+ data.tar.gz: edcf43f2691e0bb218e0b08d5592f91e34b339e1946d3cefe1146a7ab68ac785ad13b37bd1eb056a53f04c27e52dc18cc2725c03e6f125a2caa5d4ab5b448880
data/Gemfile.lock CHANGED
@@ -1,203 +1,266 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- travis-backup-for-v3 (0.1.1)
5
- activerecord
4
+ travis-backup-for-v3 (0.1.0)
5
+ activerecord (~> 7)
6
6
  bootsnap
7
7
  pg
8
8
  pry
9
- rails
9
+ rails (~> 7)
10
10
  tzinfo-data
11
11
 
12
12
  GEM
13
13
  remote: https://rubygems.org/
14
14
  specs:
15
- actioncable (6.1.4.1)
16
- actionpack (= 6.1.4.1)
17
- activesupport (= 6.1.4.1)
15
+ actioncable (7.2.2.1)
16
+ actionpack (= 7.2.2.1)
17
+ activesupport (= 7.2.2.1)
18
18
  nio4r (~> 2.0)
19
19
  websocket-driver (>= 0.6.1)
20
- actionmailbox (6.1.4.1)
21
- actionpack (= 6.1.4.1)
22
- activejob (= 6.1.4.1)
23
- activerecord (= 6.1.4.1)
24
- activestorage (= 6.1.4.1)
25
- activesupport (= 6.1.4.1)
26
- mail (>= 2.7.1)
27
- actionmailer (6.1.4.1)
28
- actionpack (= 6.1.4.1)
29
- actionview (= 6.1.4.1)
30
- activejob (= 6.1.4.1)
31
- activesupport (= 6.1.4.1)
32
- mail (~> 2.5, >= 2.5.4)
33
- rails-dom-testing (~> 2.0)
34
- actionpack (6.1.4.1)
35
- actionview (= 6.1.4.1)
36
- activesupport (= 6.1.4.1)
37
- rack (~> 2.0, >= 2.0.9)
20
+ zeitwerk (~> 2.6)
21
+ actionmailbox (7.2.2.1)
22
+ actionpack (= 7.2.2.1)
23
+ activejob (= 7.2.2.1)
24
+ activerecord (= 7.2.2.1)
25
+ activestorage (= 7.2.2.1)
26
+ activesupport (= 7.2.2.1)
27
+ mail (>= 2.8.0)
28
+ actionmailer (7.2.2.1)
29
+ actionpack (= 7.2.2.1)
30
+ actionview (= 7.2.2.1)
31
+ activejob (= 7.2.2.1)
32
+ activesupport (= 7.2.2.1)
33
+ mail (>= 2.8.0)
34
+ rails-dom-testing (~> 2.2)
35
+ actionpack (7.2.2.1)
36
+ actionview (= 7.2.2.1)
37
+ activesupport (= 7.2.2.1)
38
+ nokogiri (>= 1.8.5)
39
+ racc
40
+ rack (>= 2.2.4, < 3.2)
41
+ rack-session (>= 1.0.1)
38
42
  rack-test (>= 0.6.3)
39
- rails-dom-testing (~> 2.0)
40
- rails-html-sanitizer (~> 1.0, >= 1.2.0)
41
- actiontext (6.1.4.1)
42
- actionpack (= 6.1.4.1)
43
- activerecord (= 6.1.4.1)
44
- activestorage (= 6.1.4.1)
45
- activesupport (= 6.1.4.1)
43
+ rails-dom-testing (~> 2.2)
44
+ rails-html-sanitizer (~> 1.6)
45
+ useragent (~> 0.16)
46
+ actiontext (7.2.2.1)
47
+ actionpack (= 7.2.2.1)
48
+ activerecord (= 7.2.2.1)
49
+ activestorage (= 7.2.2.1)
50
+ activesupport (= 7.2.2.1)
51
+ globalid (>= 0.6.0)
46
52
  nokogiri (>= 1.8.5)
47
- actionview (6.1.4.1)
48
- activesupport (= 6.1.4.1)
53
+ actionview (7.2.2.1)
54
+ activesupport (= 7.2.2.1)
49
55
  builder (~> 3.1)
50
- erubi (~> 1.4)
51
- rails-dom-testing (~> 2.0)
52
- rails-html-sanitizer (~> 1.1, >= 1.2.0)
53
- activejob (6.1.4.1)
54
- activesupport (= 6.1.4.1)
56
+ erubi (~> 1.11)
57
+ rails-dom-testing (~> 2.2)
58
+ rails-html-sanitizer (~> 1.6)
59
+ activejob (7.2.2.1)
60
+ activesupport (= 7.2.2.1)
55
61
  globalid (>= 0.3.6)
56
- activemodel (6.1.4.1)
57
- activesupport (= 6.1.4.1)
58
- activerecord (6.1.4.1)
59
- activemodel (= 6.1.4.1)
60
- activesupport (= 6.1.4.1)
61
- activestorage (6.1.4.1)
62
- actionpack (= 6.1.4.1)
63
- activejob (= 6.1.4.1)
64
- activerecord (= 6.1.4.1)
65
- activesupport (= 6.1.4.1)
66
- marcel (~> 1.0.0)
67
- mini_mime (>= 1.1.0)
68
- activesupport (6.1.4.1)
69
- concurrent-ruby (~> 1.0, >= 1.0.2)
62
+ activemodel (7.2.2.1)
63
+ activesupport (= 7.2.2.1)
64
+ activerecord (7.2.2.1)
65
+ activemodel (= 7.2.2.1)
66
+ activesupport (= 7.2.2.1)
67
+ timeout (>= 0.4.0)
68
+ activestorage (7.2.2.1)
69
+ actionpack (= 7.2.2.1)
70
+ activejob (= 7.2.2.1)
71
+ activerecord (= 7.2.2.1)
72
+ activesupport (= 7.2.2.1)
73
+ marcel (~> 1.0)
74
+ activesupport (7.2.2.1)
75
+ base64
76
+ benchmark (>= 0.3)
77
+ bigdecimal
78
+ concurrent-ruby (~> 1.0, >= 1.3.1)
79
+ connection_pool (>= 2.2.5)
80
+ drb
70
81
  i18n (>= 1.6, < 2)
82
+ logger (>= 1.4.2)
71
83
  minitest (>= 5.1)
72
- tzinfo (~> 2.0)
73
- zeitwerk (~> 2.3)
84
+ securerandom (>= 0.3)
85
+ tzinfo (~> 2.0, >= 2.0.5)
74
86
  ast (2.4.2)
75
- bootsnap (1.9.1)
76
- msgpack (~> 1.0)
77
- brakeman (5.1.2)
78
- builder (3.2.4)
87
+ base64 (0.2.0)
88
+ benchmark (0.4.0)
89
+ bigdecimal (3.1.9)
90
+ bootsnap (1.18.4)
91
+ msgpack (~> 1.2)
92
+ brakeman (7.0.0)
93
+ racc
94
+ builder (3.3.0)
79
95
  byebug (11.1.3)
80
96
  coderay (1.1.3)
81
- concurrent-ruby (1.1.9)
97
+ concurrent-ruby (1.3.4)
98
+ connection_pool (2.5.0)
82
99
  crass (1.0.6)
83
- database_cleaner-active_record (2.0.1)
100
+ database_cleaner-active_record (2.2.0)
84
101
  activerecord (>= 5.a)
85
102
  database_cleaner-core (~> 2.0.0)
86
103
  database_cleaner-core (2.0.1)
87
- diff-lcs (1.4.4)
88
- erubi (1.10.0)
89
- factory_bot (6.2.0)
104
+ date (3.4.1)
105
+ diff-lcs (1.5.1)
106
+ drb (2.2.1)
107
+ erubi (1.13.1)
108
+ factory_bot (6.5.0)
90
109
  activesupport (>= 5.0.0)
91
- ffi (1.15.4)
92
- globalid (0.5.2)
93
- activesupport (>= 5.0)
94
- i18n (1.8.11)
110
+ ffi (1.17.1-arm64-darwin)
111
+ ffi (1.17.1-x86_64-linux-gnu)
112
+ globalid (1.2.1)
113
+ activesupport (>= 6.1)
114
+ i18n (1.14.6)
95
115
  concurrent-ruby (~> 1.0)
96
- jaro_winkler (1.5.4)
97
- listen (3.7.0)
116
+ io-console (0.8.0)
117
+ irb (1.14.3)
118
+ rdoc (>= 4.0.0)
119
+ reline (>= 0.4.2)
120
+ json (2.9.1)
121
+ language_server-protocol (3.17.0.3)
122
+ listen (3.9.0)
98
123
  rb-fsevent (~> 0.10, >= 0.10.3)
99
124
  rb-inotify (~> 0.9, >= 0.9.10)
100
- loofah (2.12.0)
125
+ logger (1.6.5)
126
+ loofah (2.24.0)
101
127
  crass (~> 1.0.2)
102
- nokogiri (>= 1.5.9)
103
- mail (2.7.1)
128
+ nokogiri (>= 1.12.0)
129
+ mail (2.8.1)
104
130
  mini_mime (>= 0.1.1)
105
- marcel (1.0.2)
106
- method_source (1.0.0)
107
- mini_mime (1.1.2)
108
- minitest (5.14.4)
109
- msgpack (1.4.2)
110
- nio4r (2.5.8)
111
- nokogiri (1.12.5-x86_64-linux)
131
+ net-imap
132
+ net-pop
133
+ net-smtp
134
+ marcel (1.0.4)
135
+ method_source (1.1.0)
136
+ mini_mime (1.1.5)
137
+ minitest (5.25.4)
138
+ msgpack (1.7.5)
139
+ net-imap (0.5.5)
140
+ date
141
+ net-protocol
142
+ net-pop (0.1.2)
143
+ net-protocol
144
+ net-protocol (0.2.2)
145
+ timeout
146
+ net-smtp (0.5.0)
147
+ net-protocol
148
+ nio4r (2.7.4)
149
+ nokogiri (1.18.1-arm64-darwin)
150
+ racc (~> 1.4)
151
+ nokogiri (1.18.1-x86_64-linux-gnu)
112
152
  racc (~> 1.4)
113
- parallel (1.21.0)
114
- parser (3.0.2.0)
153
+ parallel (1.26.3)
154
+ parser (3.3.6.0)
115
155
  ast (~> 2.4.1)
116
- pg (1.2.3)
117
- pry (0.14.1)
156
+ racc
157
+ pg (1.5.9)
158
+ pry (0.15.2)
118
159
  coderay (~> 1.1)
119
160
  method_source (~> 1.0)
120
- racc (1.6.0)
121
- rack (2.2.3)
122
- rack-test (1.1.0)
123
- rack (>= 1.0, < 3)
124
- rails (6.1.4.1)
125
- actioncable (= 6.1.4.1)
126
- actionmailbox (= 6.1.4.1)
127
- actionmailer (= 6.1.4.1)
128
- actionpack (= 6.1.4.1)
129
- actiontext (= 6.1.4.1)
130
- actionview (= 6.1.4.1)
131
- activejob (= 6.1.4.1)
132
- activemodel (= 6.1.4.1)
133
- activerecord (= 6.1.4.1)
134
- activestorage (= 6.1.4.1)
135
- activesupport (= 6.1.4.1)
161
+ psych (5.2.2)
162
+ date
163
+ stringio
164
+ racc (1.8.1)
165
+ rack (3.1.8)
166
+ rack-session (2.1.0)
167
+ base64 (>= 0.1.0)
168
+ rack (>= 3.0.0)
169
+ rack-test (2.2.0)
170
+ rack (>= 1.3)
171
+ rackup (2.2.1)
172
+ rack (>= 3)
173
+ rails (7.2.2.1)
174
+ actioncable (= 7.2.2.1)
175
+ actionmailbox (= 7.2.2.1)
176
+ actionmailer (= 7.2.2.1)
177
+ actionpack (= 7.2.2.1)
178
+ actiontext (= 7.2.2.1)
179
+ actionview (= 7.2.2.1)
180
+ activejob (= 7.2.2.1)
181
+ activemodel (= 7.2.2.1)
182
+ activerecord (= 7.2.2.1)
183
+ activestorage (= 7.2.2.1)
184
+ activesupport (= 7.2.2.1)
136
185
  bundler (>= 1.15.0)
137
- railties (= 6.1.4.1)
138
- sprockets-rails (>= 2.0.0)
139
- rails-dom-testing (2.0.3)
140
- activesupport (>= 4.2.0)
186
+ railties (= 7.2.2.1)
187
+ rails-dom-testing (2.2.0)
188
+ activesupport (>= 5.0.0)
189
+ minitest
141
190
  nokogiri (>= 1.6)
142
- rails-html-sanitizer (1.4.2)
143
- loofah (~> 2.3)
144
- railties (6.1.4.1)
145
- actionpack (= 6.1.4.1)
146
- activesupport (= 6.1.4.1)
147
- method_source
148
- rake (>= 0.13)
149
- thor (~> 1.0)
150
- rainbow (3.0.0)
151
- rake (13.0.6)
152
- rb-fsevent (0.11.0)
153
- rb-inotify (0.10.1)
191
+ rails-html-sanitizer (1.6.2)
192
+ loofah (~> 2.21)
193
+ nokogiri (>= 1.15.7, != 1.16.7, != 1.16.6, != 1.16.5, != 1.16.4, != 1.16.3, != 1.16.2, != 1.16.1, != 1.16.0.rc1, != 1.16.0)
194
+ railties (7.2.2.1)
195
+ actionpack (= 7.2.2.1)
196
+ activesupport (= 7.2.2.1)
197
+ irb (~> 1.13)
198
+ rackup (>= 1.0.0)
199
+ rake (>= 12.2)
200
+ thor (~> 1.0, >= 1.2.2)
201
+ zeitwerk (~> 2.6)
202
+ rainbow (3.1.1)
203
+ rake (13.2.1)
204
+ rb-fsevent (0.11.2)
205
+ rb-inotify (0.11.1)
154
206
  ffi (~> 1.0)
155
- rspec-core (3.10.1)
156
- rspec-support (~> 3.10.0)
157
- rspec-expectations (3.10.1)
207
+ rdoc (6.10.0)
208
+ psych (>= 4.0.0)
209
+ regexp_parser (2.10.0)
210
+ reline (0.6.0)
211
+ io-console (~> 0.5)
212
+ rspec-core (3.13.2)
213
+ rspec-support (~> 3.13.0)
214
+ rspec-expectations (3.13.3)
158
215
  diff-lcs (>= 1.2.0, < 2.0)
159
- rspec-support (~> 3.10.0)
160
- rspec-mocks (3.10.2)
216
+ rspec-support (~> 3.13.0)
217
+ rspec-mocks (3.13.2)
161
218
  diff-lcs (>= 1.2.0, < 2.0)
162
- rspec-support (~> 3.10.0)
163
- rspec-rails (5.0.2)
164
- actionpack (>= 5.2)
165
- activesupport (>= 5.2)
166
- railties (>= 5.2)
167
- rspec-core (~> 3.10)
168
- rspec-expectations (~> 3.10)
169
- rspec-mocks (~> 3.10)
170
- rspec-support (~> 3.10)
171
- rspec-support (3.10.3)
172
- rubocop (0.75.1)
173
- jaro_winkler (~> 1.5.1)
219
+ rspec-support (~> 3.13.0)
220
+ rspec-rails (7.1.0)
221
+ actionpack (>= 7.0)
222
+ activesupport (>= 7.0)
223
+ railties (>= 7.0)
224
+ rspec-core (~> 3.13)
225
+ rspec-expectations (~> 3.13)
226
+ rspec-mocks (~> 3.13)
227
+ rspec-support (~> 3.13)
228
+ rspec-support (3.13.2)
229
+ rubocop (1.70.0)
230
+ json (~> 2.3)
231
+ language_server-protocol (>= 3.17.0)
174
232
  parallel (~> 1.10)
175
- parser (>= 2.6)
233
+ parser (>= 3.3.0.2)
176
234
  rainbow (>= 2.2.2, < 4.0)
235
+ regexp_parser (>= 2.9.3, < 3.0)
236
+ rubocop-ast (>= 1.36.2, < 2.0)
177
237
  ruby-progressbar (~> 1.7)
178
- unicode-display_width (>= 1.4.0, < 1.7)
179
- rubocop-rspec (1.41.0)
180
- rubocop (>= 0.68.1)
181
- ruby-progressbar (1.11.0)
182
- sprockets (4.0.2)
183
- concurrent-ruby (~> 1.0)
184
- rack (> 1, < 3)
185
- sprockets-rails (3.2.2)
186
- actionpack (>= 4.0)
187
- activesupport (>= 4.0)
188
- sprockets (>= 3.0.0)
189
- thor (1.1.0)
190
- tzinfo (2.0.4)
238
+ unicode-display_width (>= 2.4.0, < 4.0)
239
+ rubocop-ast (1.37.0)
240
+ parser (>= 3.3.1.0)
241
+ rubocop-rspec (3.3.0)
242
+ rubocop (~> 1.61)
243
+ ruby-progressbar (1.13.0)
244
+ securerandom (0.4.1)
245
+ stringio (3.1.2)
246
+ thor (1.3.2)
247
+ timeout (0.4.3)
248
+ tzinfo (2.0.6)
191
249
  concurrent-ruby (~> 1.0)
192
- tzinfo-data (1.2021.5)
250
+ tzinfo-data (1.2024.2)
193
251
  tzinfo (>= 1.0.0)
194
- unicode-display_width (1.6.1)
195
- websocket-driver (0.7.5)
252
+ unicode-display_width (3.1.4)
253
+ unicode-emoji (~> 4.0, >= 4.0.4)
254
+ unicode-emoji (4.0.4)
255
+ useragent (0.16.11)
256
+ websocket-driver (0.7.7)
257
+ base64
196
258
  websocket-extensions (>= 0.1.0)
197
259
  websocket-extensions (0.1.5)
198
- zeitwerk (2.5.1)
260
+ zeitwerk (2.7.1)
199
261
 
200
262
  PLATFORMS
263
+ arm64-darwin-22
201
264
  x86_64-linux
202
265
 
203
266
  DEPENDENCIES
@@ -207,9 +270,9 @@ DEPENDENCIES
207
270
  factory_bot
208
271
  listen
209
272
  rspec-rails
210
- rubocop (~> 0.75.1)
273
+ rubocop
211
274
  rubocop-rspec
212
275
  travis-backup-for-v3!
213
276
 
214
277
  BUNDLED WITH
215
- 2.3.10
278
+ 2.4.19
data/README.md CHANGED
@@ -99,4 +99,4 @@ To make tests working properly you should also ensure database connection string
99
99
 
100
100
  ### Ruby version
101
101
 
102
- 2.7.2
102
+ 3.2.0
@@ -17,30 +17,30 @@ class Backup
17
17
  end
18
18
 
19
19
  def remove_heavy_data_for_repo(repository)
20
- # remove_repo_builds(repository)
20
+ remove_repo_builds(repository)
21
21
  remove_repo_requests(repository)
22
22
  end
23
23
 
24
- # def remove_repo_builds(repository) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
25
- # threshold = @config.threshold.to_i.months.ago.to_datetime
26
- # builds_to_remove = repository.builds.where('created_at < ?', threshold)
24
+ def remove_repo_builds(repository) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
25
+ threshold = @config.threshold.to_i.months.ago.to_datetime
26
+ builds_to_remove = repository.builds.where('created_at < ?', threshold)
27
27
 
28
- # builds_dependencies = builds_to_remove.map do |build|
29
- # result = build.ids_of_all_dependencies(dependencies_to_filter, :without_parents)
30
- # result.add(:build, build.id)
31
- # result
32
- # end.compact
28
+ builds_dependencies = builds_to_remove.map do |build|
29
+ result = build.ids_of_all_dependencies(dependencies_to_filter, :without_parents)
30
+ result.add(:build, build.id)
31
+ result
32
+ end.compact
33
33
 
34
- # ids_to_remove = IdHash.join(*builds_dependencies)
35
- # @subfolder = "repository_#{repository.id}_old_builds_#{current_time_for_subfolder}"
34
+ ids_to_remove = IdHash.join(*builds_dependencies)
35
+ @subfolder = "repository_#{repository.id}_old_builds_#{current_time_for_subfolder}"
36
36
 
37
- # unless @config.dry_run
38
- # nullified_rels = builds_to_remove&.map(&:nullify_default_dependencies)&.flatten
39
- # save_nullified_rels_to_file(build: nullified_rels) if @config.if_backup
40
- # end
37
+ unless @config.dry_run
38
+ nullified_rels = builds_to_remove&.map(&:nullify_default_dependencies)&.flatten
39
+ save_nullified_rels_to_file(build: nullified_rels) if @config.if_backup
40
+ end
41
41
 
42
- # process_ids_to_remove(ids_to_remove)
43
- # end
42
+ process_ids_to_remove(ids_to_remove)
43
+ end
44
44
 
45
45
  def remove_repo_requests(repository)
46
46
  threshold = @config.threshold.to_i.months.ago.to_datetime
@@ -61,97 +61,11 @@ class Backup
61
61
  end
62
62
 
63
63
  ids_to_remove = IdHash.join(*(requests_dependencies))
64
- orphaned_ids = orphaned_configs_to_remove(repository, ids_to_remove)
65
- ids_to_remove.join(orphaned_ids)
66
64
  process_ids_to_remove(ids_to_remove)
67
65
  end
68
66
 
69
67
  private
70
68
 
71
- def find_config_ids_orphaned_now(model1:, model2:, repository:, foreign_key:, ids_to_remove:)
72
- ids_to_exclude = ids_to_remove[model2.table_name.singularize.to_sym].join(', ')
73
-
74
- orphaned_earlier = model1.find_by_sql(%{
75
- select a.id
76
- from #{model1.table_name} as a
77
- left join #{model2.table_name} as b on
78
- a.id = b.#{foreign_key}
79
- where a.repository_id = #{repository.id}
80
- group by a.id
81
- having count(b.id) = 0;
82
- }).map { |x| x.id }
83
-
84
-
85
- all_orphaned = model1.find_by_sql(%{
86
- select a.id
87
- from #{model1.table_name} as a
88
- left join #{model2.table_name} as b on
89
- a.id = b.#{foreign_key} and b.id not in (#{ids_to_exclude})
90
- where a.repository_id = #{repository.id}
91
- group by a.id
92
- having count(b.id) = 0;
93
- }).map { |x| x.id }
94
-
95
- all_orphaned - orphaned_earlier
96
- end
97
-
98
- def orphaned_configs_to_remove(repository, ids_to_remove)
99
- if ids_to_remove[:request]
100
- request_config_ids = find_config_ids_orphaned_now(
101
- model1: RequestConfig,
102
- model2: Request,
103
- repository: repository,
104
- foreign_key: 'config_id',
105
- ids_to_remove: ids_to_remove
106
- )
107
- request_yaml_config_ids = find_config_ids_orphaned_now(
108
- model1: RequestYamlConfig,
109
- model2: Request,
110
- repository: repository,
111
- foreign_key: 'yaml_config_id',
112
- ids_to_remove: ids_to_remove
113
- )
114
- end
115
-
116
- if ids_to_remove[:request_raw_configuration]
117
- request_raw_config_ids = find_config_ids_orphaned_now(
118
- model1: RequestRawConfig,
119
- model2: RequestRawConfiguration,
120
- repository: repository,
121
- foreign_key: 'request_raw_config_id',
122
- ids_to_remove: ids_to_remove
123
- )
124
- end
125
-
126
- if ids_to_remove[:build]
127
- build_config_ids = find_config_ids_orphaned_now(
128
- model1: BuildConfig,
129
- model2: Build,
130
- repository: repository,
131
- foreign_key: 'config_id',
132
- ids_to_remove: ids_to_remove
133
- )
134
- end
135
-
136
- if ids_to_remove[:job]
137
- job_config_ids = find_config_ids_orphaned_now(
138
- model1: JobConfig,
139
- model2: Job,
140
- repository: repository,
141
- foreign_key: 'config_id',
142
- ids_to_remove: ids_to_remove
143
- )
144
- end
145
-
146
- orphaned_ids = IdHash.new
147
- orphaned_ids.add(:request_config, *request_config_ids)
148
- orphaned_ids.add(:request_yaml_config, *request_yaml_config_ids)
149
- orphaned_ids.add(:request_raw_config, *request_raw_config_ids)
150
- orphaned_ids.add(:build_config, *build_config_ids)
151
- orphaned_ids.add(:job_config, *job_config_ids)
152
- orphaned_ids
153
- end
154
-
155
69
  def process_ids_to_remove(ids_to_remove)
156
70
  if @config.dry_run
157
71
  @dry_run_reporter.add_to_report(ids_to_remove.with_table_symbols)
@@ -14,6 +14,7 @@ class Backup
14
14
  include Shared
15
15
 
16
16
  def remove_user_with_dependencies(user_id)
17
+ fix_installations(user_id)
17
18
  remove_entry_with_dependencies(:user, user_id)
18
19
  end
19
20
 
@@ -27,6 +28,11 @@ class Backup
27
28
 
28
29
  private
29
30
 
31
+ def fix_installations(user_id)
32
+ Installation.where(added_by_id: user_id).update!(added_by_id: 0)
33
+ Installation.where(removed_by_id: user_id).update!(removed_by_id: 0)
34
+ end
35
+
30
36
  def remove_entry_with_dependencies(model_name, id)
31
37
  @subfolder = "#{model_name}_#{id}_#{current_time_for_subfolder}"
32
38
  entry = Model.get_model(model_name).find(id)
@@ -13,6 +13,7 @@ module SaveIdHashToFile
13
13
 
14
14
  def save_ids_batch_to_file(name, ids_batch)
15
15
  model = Model.get_model(name)
16
+
16
17
  export = {}
17
18
  export[:table_name] = model.table_name
18
19
  export[:data] = ids_batch.map do |id|
data/lib/config.rb CHANGED
@@ -129,7 +129,7 @@ class Config
129
129
  end
130
130
 
131
131
  def check_values
132
- if !@threshold && !@user_id && !@org_id && !@repo_id && !@load_from_files
132
+ if !@move_logs && !@remove_orphans && !@threshold && !@user_id && !@org_id && !@repo_id && !@load_from_files
133
133
  message = abort_message("Please provide the threshold argument. Data younger than it will be omitted. " +
134
134
  "Threshold defines number of months from now. Alternatively you can define user_id, org_id or repo_id " +
135
135
  "to remove whole user, organization or repository with all dependencies.")
@@ -140,12 +140,20 @@ class Config
140
140
  message = abort_message("Please provide proper database URL.")
141
141
  abort message
142
142
  end
143
+
144
+ if (@move_logs && !@destination_db_url)
145
+ abort "\nFor moving logs you need to specify your destination database. Example usage:\n" +
146
+ "\n $ bin/travis_backup 'postgres://source_url' --move_logs --destination_db_url 'postgres://destination_url'\n" +
147
+ "\nor using in code:\n" +
148
+ "\n Backup.new(database_url: 'postgres://source_url', destination_db_url: 'postgres://destination_url', move_logs: true)\n" +
149
+ "\nYou can also set it using environment variables or configuration files.\n"
150
+ end
143
151
  end
144
152
 
145
153
  def abort_message(intro)
146
154
  "\n#{intro}\n\nExample usage:\n"+
147
- "\n $ travis_backup_for_v3 'postgres://my_database_url' --threshold 6" +
148
- "\n $ travis_backup_for_v3 'postgres://my_database_url' --user_id 1\n" +
155
+ "\n $ bin/travis_backup 'postgres://my_database_url' --threshold 6" +
156
+ "\n $ bin/travis_backup 'postgres://my_database_url' --user_id 1\n" +
149
157
  "\nor using in code:\n" +
150
158
  "\n Backup.new(database_url: 'postgres://my_database_url', threshold: 6)" +
151
159
  "\n Backup.new(database_url: 'postgres://my_database_url', user_id: 1)\n" +