Don't forget to lycansubscribe
1require 'didkit' 2require 'minisky' 3 4require_relative '../at_uri' 5require_relative '../models/post' 6require_relative '../models/user' 7 8class BaseImporter 9 attr_accessor :item_queue, :report 10 11 def initialize(user) 12 @did = DID.new(user.did) 13 @user = user 14 @imported_count = 0 15 end 16 17 def importer_name 18 self.class.name 19 end 20 21 def collection 22 importer_name.gsub(/Importer$/, '').downcase 23 end 24 25 def run_import(requested_time_limit = nil) 26 @minisky = Minisky.new(@did.document.pds_host, nil) 27 @import = @user.imports.find_by(collection: collection) || @user.imports.create!(collection: collection) 28 29 if @import.cursor.nil? 30 @import.update!(started_from: Time.now) unless requested_time_limit 31 end 32 33 @time_limit = requested_time_limit || @import.last_completed 34 puts "Fetching until: #{@time_limit}" if @time_limit 35 36 import_items 37 38 @import.update!(last_completed: @import.started_from) unless requested_time_limit 39 @import.update!(cursor: nil, started_from: nil) 40 @report&.update(importers: { importer_name => { :finished => true }}) 41 end 42 43 def import_items 44 raise NotImplementedError 45 end 46end