Don't forget to lycansubscribe

continue previously started import if there was any

+35 -1
+9
app/importer.rb
··· 1 require 'didkit' 2 require 'minisky' 3 4 require_relative 'models/like' 5 require_relative 'models/post' 6 require_relative 'models/user' ··· 22 end 23 24 def import_likes(time_limit = nil) 25 params = { repo: @did, collection: 'app.bsky.feed.like', limit: 100 } 26 count = 0 27 28 loop do ··· 37 process_likes(records) 38 params[:cursor] = cursor 39 40 break if !cursor 41 break if time_limit && records.any? { |x| Time.parse(x['value']['createdAt']) < time_limit } 42 end 43 end 44 45 def process_likes(likes)
··· 1 require 'didkit' 2 require 'minisky' 3 4 + require_relative 'models/import' 5 require_relative 'models/like' 6 require_relative 'models/post' 7 require_relative 'models/user' ··· 23 end 24 25 def import_likes(time_limit = nil) 26 + import = @user.import || @user.create_import! 27 + 28 params = { repo: @did, collection: 'app.bsky.feed.like', limit: 100 } 29 + params[:cursor] = import.cursor if import.cursor 30 + 31 count = 0 32 33 loop do ··· 42 process_likes(records) 43 params[:cursor] = cursor 44 45 + import.update!(cursor: cursor) 46 + 47 break if !cursor 48 break if time_limit && records.any? { |x| Time.parse(x['value']['createdAt']) < time_limit } 49 end 50 + 51 + import.update!(cursor: nil) 52 end 53 54 def process_likes(likes)
+7
app/models/import.rb
···
··· 1 + require 'active_record' 2 + 3 + require_relative 'user' 4 + 5 + class Import < ActiveRecord::Base 6 + belongs_to :user 7 + end
+2
app/models/user.rb
··· 1 require 'active_record' 2 3 require_relative 'like' 4 require_relative 'post' 5 ··· 9 10 has_many :posts 11 has_many :likes, foreign_key: 'actor_id' 12 end
··· 1 require 'active_record' 2 3 + require_relative 'import' 4 require_relative 'like' 5 require_relative 'post' 6 ··· 10 11 has_many :posts 12 has_many :likes, foreign_key: 'actor_id' 13 + has_one :import 14 end
+10
db/migrate/20250831202829_create_imports.rb
···
··· 1 + class CreateImports < ActiveRecord::Migration[7.2] 2 + def change 3 + create_table :imports do |t| 4 + t.integer "user_id", null: false 5 + t.string "cursor" 6 + end 7 + 8 + add_index :imports, :user_id, unique: true 9 + end 10 + end
+7 -1
db/schema.rb
··· 10 # 11 # It's strongly recommended that you check this file into your version control system. 12 13 - ActiveRecord::Schema[7.2].define(version: 2025_08_30_210139) do 14 # These are extensions that must be enabled in order to support this database 15 enable_extension "plpgsql" 16 17 create_table "likes", force: :cascade do |t| 18 t.integer "actor_id", null: false
··· 10 # 11 # It's strongly recommended that you check this file into your version control system. 12 13 + ActiveRecord::Schema[7.2].define(version: 2025_08_31_202829) do 14 # These are extensions that must be enabled in order to support this database 15 enable_extension "plpgsql" 16 + 17 + create_table "imports", force: :cascade do |t| 18 + t.integer "user_id", null: false 19 + t.string "cursor" 20 + t.index ["user_id"], name: "index_imports_on_user_id", unique: true 21 + end 22 23 create_table "likes", force: :cascade do |t| 24 t.integer "actor_id", null: false