From 311f8acbe99375fb8c093f6aeddd3cb0e7cf2127 Mon Sep 17 00:00:00 2001 From: rulingcom Date: Thu, 7 Aug 2025 17:59:08 +0800 Subject: [PATCH] migrate script --- lib/tasks/universal_table_tasks.rake | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/lib/tasks/universal_table_tasks.rake b/lib/tasks/universal_table_tasks.rake index fa42eae..0b6bb1f 100755 --- a/lib/tasks/universal_table_tasks.rake +++ b/lib/tasks/universal_table_tasks.rake @@ -174,4 +174,31 @@ namespace :universal_table_tasks do File.delete(file_path) if File.exist?(file_path) puts "Import finished. Total entries in table: #{table.table_entries.count}" end + + desc "Migrate old tags to new tags" + task :migrate_tags => :environment do + module_app = ModuleApp.find_by_key("universal_table") + dataset = {} + TableTag.all.each do |tt| + next if tt.title.blank? # Skip if tag name is blank + puts "Processing tag: #{tt.title}" + module_app.reload + hashtag = module_app.hashtags.where(name: tt.title).first_or_initialize + hashtag.module_app_ids << module_app.id.to_s unless hashtag.module_app_ids.include?(module_app.id.to_s) + puts "New record #{hashtag.new_record?}" + hashtag.save if hashtag.new_record? + puts "Hashtag ID: #{hashtag.id} - #{hashtag.name}" + tt.table_entries.each do |te| + unless te.hashtags.include?(hashtag) + dataset[te] ||= [] + dataset[te] << hashtag.id + end + end + end + dataset.each do |te, tag_ids| + puts "Updating TableEntry #{te.id} with tags: #{tag_ids.join(', ')}" + te.hashtags= tag_ids + te.save + end + end end