def save
num_retries = @@num_retries
begin
if (@id == nil)
SQLite3::Database.open(@@db_file).transaction do |db|
db.prepare(SQL_INSERT_FEED) do |ins_stmt|
ins_stmt.execute!(
@href, @title, @link, @feed_data,
@feed_data_type, @http_headers,
@last_retrieved.strftime('%Y-%m-%d %H:%M:%S'))
@id = db.last_insert_row_id
@new_record = false
end
end
else
SQLite3::Database.open(@@db_file).transaction do |db|
db.prepare(SQL_UPDATE_FEED) do |upd_stmt|
upd_stmt.execute!(@href, @title, @link, @feed_data,
@feed_data_type, @http_headers,
@last_retrieved.strftime('%Y-%m-%d %H:%M:%S'),
@id)
end
end
end
rescue SQLite3::BusyException
if ((num_retries -= 1) > 0)
sleep(@@retry_delay)
retry
end
raise $!
end
end