Retry inserts, lazy patch to solve sqlite3 concurrency

This commit is contained in:
Hugo Peixoto 2023-08-01 14:21:01 +01:00
parent 53fc8b74bb
commit d1a4ea3d16

27
main.rb
View File

@ -20,6 +20,19 @@ def h(bytes)
end
end
def attempt(attempts, &block)
begin
block.call
rescue
if attempts > 1
attempts -= 1
retry
else
raise
end
end
end
set :public_folder, __dir__ + '/public'
get '/' do
downloads = ActiveRecord::Base.connection.execute("
@ -73,12 +86,14 @@ post '/video' do
data = JSON.parse(request.body.read)
Download.create!(
video: Video.find_by!(randname: data["video_id"]),
size: data["size"],
sha256: data["sha256"],
email: data["email"],
)
attempt(10) do
Download.create!(
video: Video.find_by!(randname: data["video_id"]),
size: data["size"],
sha256: data["sha256"],
email: data["email"],
)
end
{ status: 'ok' }.to_json
end