···113114 collection = case params[:collection]
115 when 'likes' then user.likes
00116 when 'reposts' then user.reposts
117 else return json_error('InvalidParameter', 'Invalid search collection')
118 end
···125 .after_cursor(params[:cursor])
126 .limit(PAGE_LIMIT)
127128- post_uris = items.map(&:post).map(&:at_uri)
00000129130 json_response(posts: post_uris, cursor: items.last&.cursor)
131 end
···113114 collection = case params[:collection]
115 when 'likes' then user.likes
116+ when 'pins' then user.pins
117+ when 'quotes' then user.quotes
118 when 'reposts' then user.reposts
119 else return json_error('InvalidParameter', 'Invalid search collection')
120 end
···127 .after_cursor(params[:cursor])
128 .limit(PAGE_LIMIT)
129130+ post_uris = case params[:collection]
131+ when 'quotes'
132+ items.map { |x| "at://#{user.did}/app.bsky.feed.post/#{x.rkey}" }
133+ else
134+ items.map(&:post).map(&:at_uri)
135+ end
136137 json_response(posts: post_uris, cursor: items.last&.cursor)
138 end
···10#
11# It's strongly recommended that you check this file into your version control system.
1213-ActiveRecord::Schema[7.2].define(version: 2025_09_06_005748) do
14 # These are extensions that must be enabled in order to support this database
15 enable_extension "plpgsql"
16···33 t.index ["actor_id", "time", "id"], name: "index_likes_on_actor_id_and_time_and_id", order: { time: :desc, id: :desc }
34 end
350000000000036 create_table "posts", force: :cascade do |t|
37 t.integer "user_id", null: false
38 t.string "rkey", limit: 13, null: false
···41 t.text "data", null: false
42 t.index ["user_id", "rkey"], name: "index_posts_on_user_id_and_rkey", unique: true
43 t.index ["user_id", "time", "id"], name: "index_posts_on_user_id_and_time_and_id", order: { time: :desc, id: :desc }
0000000000044 end
4546 create_table "reposts", force: :cascade do |t|
···10#
11# It's strongly recommended that you check this file into your version control system.
1213+ActiveRecord::Schema[7.2].define(version: 2025_09_06_233017) do
14 # These are extensions that must be enabled in order to support this database
15 enable_extension "plpgsql"
16···33 t.index ["actor_id", "time", "id"], name: "index_likes_on_actor_id_and_time_and_id", order: { time: :desc, id: :desc }
34 end
3536+ create_table "pins", force: :cascade do |t|
37+ t.integer "actor_id", null: false
38+ t.string "rkey", limit: 13, null: false
39+ t.datetime "time", null: false
40+ t.text "pin_text", null: false
41+ t.bigint "post_id"
42+ t.string "post_uri"
43+ t.index ["actor_id", "rkey"], name: "index_pins_on_actor_id_and_rkey", unique: true
44+ t.index ["actor_id", "time", "id"], name: "index_pins_on_actor_id_and_time_and_id", order: { time: :desc, id: :desc }
45+ end
46+47 create_table "posts", force: :cascade do |t|
48 t.integer "user_id", null: false
49 t.string "rkey", limit: 13, null: false
···52 t.text "data", null: false
53 t.index ["user_id", "rkey"], name: "index_posts_on_user_id_and_rkey", unique: true
54 t.index ["user_id", "time", "id"], name: "index_posts_on_user_id_and_time_and_id", order: { time: :desc, id: :desc }
55+ end
56+57+ create_table "quotes", force: :cascade do |t|
58+ t.integer "actor_id", null: false
59+ t.string "rkey", limit: 13, null: false
60+ t.datetime "time", null: false
61+ t.text "quote_text", null: false
62+ t.bigint "post_id"
63+ t.string "post_uri"
64+ t.index ["actor_id", "rkey"], name: "index_quotes_on_actor_id_and_rkey", unique: true
65+ t.index ["actor_id", "time", "id"], name: "index_quotes_on_actor_id_and_time_and_id", order: { time: :desc, id: :desc }
66 end
6768 create_table "reposts", force: :cascade do |t|