Template of a custom feed generator service for the Bluesky network in Ruby

force sqlite to use rkey index to look up by rkey

Changed files
+7 -2
app
+1 -1
app/firehose_stream.rb
··· 138 138 139 139 def process_post(msg, op) 140 140 if op.action == :delete 141 - if post = Post.find_by(repo: op.repo, rkey: op.rkey) 141 + if post = Post.find_by_repo_rkey(op.repo, op.rkey) 142 142 post.destroy 143 143 end 144 144 end
+6 -1
app/models/post.rb
··· 9 9 10 10 attr_writer :record 11 11 12 + def self.find_by_repo_rkey(repo, rkey) 13 + # the '+' is to make sure that SQLite uses the rkey index and not a different one 14 + Post.where("+repo = ?", repo).where(rkey: rkey).first 15 + end 16 + 12 17 def self.find_by_at_uri(uri) 13 18 parts = uri.gsub(%r(^at://), '').split('/') 14 19 return nil unless parts.length == 3 && parts[1] == 'app.bsky.feed.post' 15 20 16 - Post.find_by(repo: parts[0], rkey: parts[2]) 21 + find_by_repo_rkey(parts[0], parts[2]) 17 22 end 18 23 19 24 def record