class DavicalRm

Handle the removal of DAViCal users from its database. DAViCal has no concept of domains.

Public Instance Methods

remove_user(user) click to toggle source

Remove user from the DAViCal database. This should remove him from every table in which he is referenced. Fortunately, DAViCal uses foreign keys properly (and only supports postgres, where they work!), so we can let the ON DELETE CASCADE trigger handle most of the work.

@param user [User] the user to remove.

# File lib/rm/plugins/davical.rb, line 23
def remove_user(user)
  raise NonexistentUserError.new(user.to_s()) if not user_exists(user)

  sql_query = 'DELETE FROM usr WHERE username = $1;'

  connection = PG::Connection.new(@db_hash)
  begin
    connection.sync_exec_params(sql_query, [user.to_s()])
  ensure
    # Make sure the connection gets closed even if the query explodes.
    connection.close()
  end
end