72 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Ruby
		
	
	
	
		
		
			
		
	
	
			72 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Ruby
		
	
	
	
| 
								 | 
							
								# encoding: utf-8
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# =================================================================
							 | 
						||
| 
								 | 
							
								# move archives from main site to other sites depending on category
							 | 
						||
| 
								 | 
							
								# =================================================================
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								require 'mongo'
							 | 
						||
| 
								 | 
							
								include Mongo
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								DB_BASE_NAME = "production"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								CATEGORIES = { 'TNR' => 3, 'DOC' => 1, 'PROPERTY' => 5, 'CASHIER' => 2, 'CON' => 10 }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								main_db = MongoClient.new("localhost", 27017).db("#{DB_BASE_NAME}_#{0}")
							 | 
						||
| 
								 | 
							
								main_categories = main_db["archive_file_categories"]
							 | 
						||
| 
								 | 
							
								main_archive_files = main_db["archive_files"]
							 | 
						||
| 
								 | 
							
								main_archive_file_multiples = main_db["archive_file_multiples"]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								CATEGORIES.each do |key, number|
							 | 
						||
| 
								 | 
							
								  # set the target DB
							 | 
						||
| 
								 | 
							
								  target_db = MongoClient.new("localhost", 27017).db("#{DB_BASE_NAME}_#{number}")
							 | 
						||
| 
								 | 
							
								  target_categories = target_db["archive_file_categories"]
							 | 
						||
| 
								 | 
							
								  target_archive_files = target_db["archive_files"]
							 | 
						||
| 
								 | 
							
								  target_archive_file_multiples = target_db["archive_file_multiples"]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if main_cat = main_categories.find_one(key: key)
							 | 
						||
| 
								 | 
							
								    # get or create category
							 | 
						||
| 
								 | 
							
								    category_id = \
							 | 
						||
| 
								 | 
							
								    if cat = target_categories.find_one(key: main_cat['key'])
							 | 
						||
| 
								 | 
							
								      cat['_id']
							 | 
						||
| 
								 | 
							
								    else
							 | 
						||
| 
								 | 
							
								      copy_category = main_cat.clone
							 | 
						||
| 
								 | 
							
								      copy_category['_id'] = BSON::ObjectId.new
							 | 
						||
| 
								 | 
							
								      copy_category['create_user_id'] = nil
							 | 
						||
| 
								 | 
							
								      copy_category['update_user_id'] = nil
							 | 
						||
| 
								 | 
							
								      target_categories.save copy_category
							 | 
						||
| 
								 | 
							
								    end
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    main_archive_files.find(archive_file_category_id: main_cat['_id']).each do |archive_file|
							 | 
						||
| 
								 | 
							
								      # copy archive_file
							 | 
						||
| 
								 | 
							
								      copy_archive_file = archive_file.clone
							 | 
						||
| 
								 | 
							
								      copy_archive_file['_id'] = BSON::ObjectId.new
							 | 
						||
| 
								 | 
							
								      copy_archive_file['create_user_id'] = nil
							 | 
						||
| 
								 | 
							
								      copy_archive_file['update_user_id'] = nil
							 | 
						||
| 
								 | 
							
								      copy_archive_file['tagged_ids'] = []
							 | 
						||
| 
								 | 
							
								      copy_archive_file['user_ids'] = nil
							 | 
						||
| 
								 | 
							
								      copy_archive_file['archive_file_category_id'] = category_id
							 | 
						||
| 
								 | 
							
								      target_archive_files.save copy_archive_file
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      main_archive_file_multiples.find(archive_file_id: archive_file['_id']).each do |archive_file_multiple|
							 | 
						||
| 
								 | 
							
								        # copy archive_file_multiples
							 | 
						||
| 
								 | 
							
								        copy_archive_file_multiple = archive_file_multiple.clone
							 | 
						||
| 
								 | 
							
								        copy_archive_file_multiple['_id'] = BSON::ObjectId.new
							 | 
						||
| 
								 | 
							
								        copy_archive_file_multiple['create_user_id'] = nil
							 | 
						||
| 
								 | 
							
								        copy_archive_file_multiple['update_user_id'] = nil
							 | 
						||
| 
								 | 
							
								        copy_archive_file_multiple['archive_file_id'] = copy_archive_file['_id']
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        # copy gridfs file
							 | 
						||
| 
								 | 
							
								        main_grid = Mongo::GridFileSystem.new(main_db)
							 | 
						||
| 
								 | 
							
								        file = main_grid.open("assets/archive_file_multiple/file/#{archive_file_multiple['_id']}/#{archive_file_multiple['file']}", 'r')
							 | 
						||
| 
								 | 
							
								        target_grid = Mongo::GridFileSystem.new(target_db)
							 | 
						||
| 
								 | 
							
								        target_grid.open("assets/archive_file_multiple/file/#{copy_archive_file_multiple['_id']}/#{copy_archive_file_multiple['file']}", 'w') do |f|
							 | 
						||
| 
								 | 
							
								          f.write file
							 | 
						||
| 
								 | 
							
								        end
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        target_archive_file_multiples.save copy_archive_file_multiple
							 | 
						||
| 
								 | 
							
								      end
							 | 
						||
| 
								 | 
							
								    end
							 | 
						||
| 
								 | 
							
								  end
							 | 
						||
| 
								 | 
							
								end
							 |