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