]> gitweb.mndrdr.org Git - arelpe.git/commitdiff
Fixed the import function so it imports exported data; removed legacy import from...
authorAidan Cornelius-Bell <[email protected]>
Sat, 2 Nov 2024 03:27:47 +0000 (13:57 +1030)
committerAidan Cornelius-Bell <[email protected]>
Sat, 2 Nov 2024 03:27:47 +0000 (13:57 +1030)
app/controllers/posts_controller.rb

index 1b8b56926016356d3e740c569ff8801974114628..1c6685c1cdcb6312e782fc70904472ff6d4b88bb 100644 (file)
@@ -71,17 +71,42 @@ class PostsController < ApplicationController
           import_results = { success: 0, failed: 0, errors: [] }
 
           ActiveRecord::Base.transaction do
-            import_posts(data['posts'], import_results) if data['posts'].is_a?(Array)
-            import_bookmarks(data['bookmarks'], import_results) if data['bookmarks'].is_a?(Array)
+            data.each do |post_data|
+              next unless post_data.is_a?(Hash)
+
+              # Convert string IDs to integers
+              post_data['id'] = post_data['id'].to_i if post_data['id'].present?
+
+              post = Post.new(
+                id: post_data['id'],
+                title: post_data['title'],
+                slug: post_data['slug'],
+                content: post_data['content'],
+                excerpt: post_data['excerpt'],
+                tags: post_data['tags'],
+                url: post_data['url'],
+                post_type: post_data['post_type'],
+                published_at: post_data['published_at']
+              )
+
+              if post.save
+                import_results[:success] += 1
+              else
+                import_results[:failed] += 1
+                import_results[:errors] << "Error saving post #{post_data['id']}: #{post.errors.full_messages.join(', ')}"
+              end
+            end
           end
 
           if import_results[:failed] > 0
             flash[:warning] = "Import partially succeeded. Successful: #{import_results[:success]}, Failed: #{import_results[:failed]}. Check the logs for detailed errors."
+            logger.error "Import Errors: #{import_results[:errors].join("\n")}"
           else
             flash[:notice] = "Data imported successfully. Total items: #{import_results[:success]}"
           end
         rescue JSON::ParserError
           flash[:alert] = "Invalid JSON file."
+          logger.error "JSON Parse Error"
         rescue => e
           flash[:alert] = "Error importing data: #{e.message}"
           logger.error "Import Error: #{e.message}\n#{e.backtrace.join("\n")}"