require 'pg' require 'common/agendav_plugin' require 'mv/mv_plugin' class AgendavMv include AgendavPlugin include MvPlugin def mv_user(src, dst) # It's obviously an error if the source user does not exist. It # would also be an error if the destination domain didn't exist; # however, Agendav doesn't know about domains, so we let that slide. raise NonexistentUserError.new(src.to_s()) if not user_exists(src) # And it's an error if the destination user exists already. raise UserAlreadyExistsError.new(dst.to_s()) if user_exists(dst) sql_queries = ['UPDATE prefs SET username = $1 WHERE username = $2;'] sql_queries << 'UPDATE shared SET user_from = $1 WHERE user_from = $2;' sql_queries << 'UPDATE shared SET user_which = $1 WHERE user_which = $2;' connection = PGconn.connect(@db_host, @db_port, @db_opts, @db_tty, @db_name, @db_user, @db_pass) sql_queries.each do |sql_query| connection.query(sql_query, [dst.to_s(), src.to_s()]) end connection.close() end end