sct 1.11.2 → 1.11.3

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: 6b36a1f94b8137de2bb9e3cd9ba63b7aeb599fae43f4fd91b4ef63eef22193d2
4
- data.tar.gz: 5c6f063462eee495f5c3fa0df2f590f2ef7e856a7cd503a66a5dd0409e907cad
3
+ metadata.gz: 83b5089b7b2e78f5a4b94b62278fa9159e60f1e70654eb65921e59f3b2c69d8e
4
+ data.tar.gz: 8967410c1dbbfc370d64b6744f93cc76ac01be25db05967d4830cc515292a0db
5
5
  SHA512:
6
- metadata.gz: '093a837fb916d22b04de77310060f7b8c228b3c844799aa2337dff74fe81f6a57665aa1d0ebb8dc15053c8fadf542ba6793682ca7ba089d86f283119118f64dd'
7
- data.tar.gz: 387ce680535f3728d25dfec116e1f1a998c8e7cb84287c6185e40f3a933e7a1b724ef934c8de5b8567ccebd3192439db48587d1be7d0c10ff05d5cb4a9a80b9e
6
+ metadata.gz: 077e1d0700e0a844cc430bda5ec36016056325a3ec5afa272321ce85da4aaa7dc0a5575011b73fd0973a8a94d80efbde84fc88c193549826c5d0b4e8bd5dbad2
7
+ data.tar.gz: 8599299496eafc2f35e5ca362d10a2caf37883d174a68b8dddaf898cf54164e8830d033607ba7197f0ef8954ee66288f757dc4bc4122817b1e1c646f1450169e
@@ -92,7 +92,7 @@ module Henk
92
92
  c.validate options
93
93
  options.dev = $dev
94
94
  options.verbose = $verbose
95
- Henk::Runner.new.henk 'remove', options
95
+ Henk::Runner.new.remove_customer options.domain
96
96
  end
97
97
  end
98
98
 
@@ -4,6 +4,24 @@ module Henk
4
4
  class Runner
5
5
  attr_accessor :options_mapping
6
6
 
7
+ # Tables in spend-cloud-config database that have a client_id column
8
+ # These will be cleaned up when removing a customer
9
+ # This list matches the production Go service deleteClient function
10
+ CONFIG_TABLES_WITH_CLIENT_ID = [
11
+ '00_settings',
12
+ '01_settings',
13
+ '02_settings',
14
+ '03_settings',
15
+ '04_settings',
16
+ '05_settings',
17
+ '06_settings',
18
+ '07_settings',
19
+ '08_settings',
20
+ '06_settings_external_supplier',
21
+ 'translation_settings',
22
+ 'client_module'
23
+ ].freeze
24
+
7
25
  def initialize
8
26
  @options_mapping = {
9
27
  "organization_name" => {
@@ -180,7 +198,9 @@ module Henk
180
198
  begin
181
199
  zip = download_and_unzip dump_url, dir
182
200
 
183
- customer = zip.slice 0, zip.rindex("_")
201
+ # Extract customer name from zip filename (format: customer_timestamp or just customer)
202
+ underscore_index = zip.rindex("_")
203
+ customer = underscore_index ? zip.slice(0, underscore_index) : zip
184
204
 
185
205
  customer_database = customer.gsub "-", "_"
186
206
 
@@ -207,7 +227,7 @@ module Henk
207
227
 
208
228
  run "unzip #{zip_path} -d #{dir}"
209
229
 
210
- zip = File.basename zip_path
230
+ File.basename zip_path, ".zip"
211
231
  end
212
232
 
213
233
  def remove_customer customer
@@ -216,14 +236,60 @@ module Henk
216
236
  if local_customers.include? customer
217
237
  puts "Customer already exists. Removing customer before importing...".yellow
218
238
 
219
- run "sct henk remove --domain #{customer}"
239
+ customer_database = customer.gsub "-", "_"
240
+
241
+ remove_customer_from_config_database customer
242
+
243
+ puts "Dropping database #{customer_database}...".blue
244
+ run_query "DROP DATABASE IF EXISTS `#{customer_database}`"
245
+
246
+ puts "Removing customer from proactive_accounts.ini...".blue
247
+ run "docker exec proactive-config sed -i '/^\\[#{customer}\\]/,/^$/d' /data/proactive_accounts.ini"
248
+
249
+ puts "Removing customer data directory...".blue
250
+ run "docker exec proactive-config rm -rf /data/#{customer}"
220
251
 
221
252
  puts "Removed existing customer".green
222
253
  end
223
254
  end
224
255
 
256
+ def remove_customer_from_config_database customer
257
+ puts "Finding client_id for #{customer}...".blue
258
+ client_id_result = `docker exec mysql-service mysql -u root -sN -e 'SELECT client_id FROM \`spend-cloud-config\`.\`00_settings\` WHERE \`043\` = "#{customer}"'`.strip
259
+
260
+ if !client_id_result.empty?
261
+ client_id = client_id_result.to_i
262
+ puts "Found client_id: #{client_id}".blue
263
+
264
+ puts "Removing customer from #{CONFIG_TABLES_WITH_CLIENT_ID.length} config tables...".blue
265
+ delete_client_data_from_tables client_id
266
+
267
+ puts "Removing customer from client table...".blue
268
+ run_query "DELETE FROM `client` WHERE `id` = #{client_id}", database: "spend-cloud-config"
269
+
270
+ puts "Removed all config database entries".green
271
+ else
272
+ puts "Warning: ".yellow + "Could not find client_id in config database, attempting cleanup with domain name only"
273
+ run_query "DELETE FROM `00_settings` WHERE `043` = \"#{customer}\"", database: "spend-cloud-config"
274
+ end
275
+ end
276
+
277
+ def delete_client_data_from_tables client_id
278
+ CONFIG_TABLES_WITH_CLIENT_ID.each do |table|
279
+ next if table == 'client'
280
+
281
+ puts " Deleting from #{table}...".blue
282
+ run_query "DELETE FROM `#{table}` WHERE `client_id` = #{client_id}", database: "spend-cloud-config"
283
+ end
284
+
285
+ puts " Cleaning up orphaned records...".blue
286
+ run_query "DELETE FROM `01_settings_extra_velden` WHERE `settings_id` NOT IN (SELECT `id` FROM `01_settings`)", database: "spend-cloud-config"
287
+ run_query "DELETE FROM `04_settings_contractgegevens` WHERE `settings_id` NOT IN (SELECT `id` FROM `04_settings`)", database: "spend-cloud-config"
288
+ end
289
+
225
290
  def copy_db_encryption_key customer, dir
226
- run "docker exec --user www-data proactive-config mkdir /data/#{customer}"
291
+ run "docker exec proactive-config mkdir -p /data/#{customer}"
292
+ run "docker exec proactive-config chown www-data:www-data /data/#{customer}"
227
293
  run "docker cp #{dir}/db_encryption.key proactive-config:/data/#{customer}/"
228
294
 
229
295
  puts "Copied db_encryption.key to proactive-config:/data/#{customer}/".green
@@ -1,3 +1,3 @@
1
1
  module Sct
2
- VERSION = "1.11.2"
2
+ VERSION = "1.11.3"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sct
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.11.2
4
+ version: 1.11.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Reshad Farid
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-07-31 00:00:00.000000000 Z
11
+ date: 2025-10-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: colored