DatabaseConnector icon indicating copy to clipboard operation
DatabaseConnector copied to clipboard

question on interactive behavior for redshift drivers

Open fdefalco opened this issue 2 years ago • 2 comments

Why is there an interactive behavior setup for Redshift? Perhaps there could be a parameter for the downloadJdbcDrivers function to automatically overwrite or skip if files are found?

for (db in dbms) {
    if (db == "redshift") {
      oldFiles <- list.files(pathToDriver, "Redshift")
      if (length(oldFiles) > 0) {
        message(sprintf("Prior JAR files have already been detected: '%s'. Do you want to delete them?", paste(oldFiles, collapse = "', '")))
        if (interactive() && utils::menu(c("Yes", "No")) == 1) {
          unlink(file.path(pathToDriver, oldFiles))
        }
      }
    }

Code Here

fdefalco avatar Sep 07 '23 15:09 fdefalco

If the user is calling downloadJdbcDrivers() from the prompt, isn't it polite to ask before deleting something?

I agree that probably the non-interactive behavior (e.g. when downloadJdbcDrivers() is called for unit testing) should probably change to deleting the existing files.

schuemie avatar Sep 07 '23 15:09 schuemie

It is indeed very polite, but only if you are using Redshift? Everyone else gets rude behavior? 😄

I was thinking perhaps an overwrite parameter for the function that can default to false. It can check for file.exists(file.path(pathToDriver, driverSource$fileName)) and skip if it exists or download if it doesn't.

fdefalco avatar Sep 07 '23 17:09 fdefalco