223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
|
# File 'lib/webhookdb/service_integration.rb', line 223
def rename_table(to:)
Webhookdb::Organization::DatabaseMigration.guard_ongoing!(self.organization)
unless Webhookdb::DBAdapter::VALID_IDENTIFIER.match?(to)
msg = "Sorry, this is not a valid table name. " + Webhookdb::DBAdapter::INVALID_IDENTIFIER_MESSAGE
msg += " And we see you what you did there ;)" if to.include?(";") && to.downcase.include?("drop")
raise TableRenameError, msg
end
self.db.transaction do
begin
self.organization.admin_connection { |db| db << "ALTER TABLE #{self.table_name} RENAME TO #{to}" }
rescue Sequel::DatabaseError => e
case e.wrapped_exception
when PG::DuplicateTable
raise TableRenameError,
"There is already a table named \"#{to}\". Run `webhookdb db tables` to see available tables."
when PG::SyntaxError
raise TableRenameError,
"Please try again with double quotes around '#{to}' since it contains invalid identifier characters."
else
raise e
end
end
self.update(table_name: to)
end
end
|