tests/testthat/helper.R

library(checkmate)
lapply(list.files(system.file("testthat", package = "mlr3"), pattern = "^helper.*\\.[rR]", full.names = TRUE), source)

as_tbl = function(data, primary_key = "row_id") {
  data[[primary_key]] = seq_len(nrow(data))
  tibble::as_tibble(data)
}

as_sqlite_tbl = function(data, primary_key = "row_id") {
  data[[primary_key]] = seq_len(nrow(data))

  con = DBI::dbConnect(RSQLite::SQLite(), ":memory:")
  dplyr::copy_to(con, data)
  dplyr::tbl(con, "data")
}

disconnect = function(x) {
  UseMethod("disconnect")
}

disconnect.tbl_dbi = function(x) {
  disconnect(x$src$con)
}
registerS3method("disconnect", "tbl_dbi", disconnect.tbl_dbi)

disconnect.SQLiteConnection = function(x) {
  DBI::dbDisconnect(x)
}
registerS3method("disconnect", "SQLiteConnection", disconnect.SQLiteConnection)

disconnect.DataBackend = function(x) {
  mlr3misc::get_private(x)$finalize()
}
registerS3method("disconnect", "DataBackend", disconnect.DataBackend)

extract_db_dir = function(b) {
  if (inherits(b, "DataBackendDplyr")) {
    mlr3misc::get_private(b)$.data$src$con@dbname
  } else if (inherits(b, "DataBackendDuckDB")) {
    mlr3misc::get_private(b)$.data@driver@dbdir
  } else {
    stop("Unknown Backend")
  }
}

Try the mlr3db package in your browser

Any scripts or data that you put into this service are public.

mlr3db documentation built on Nov. 4, 2023, 5:06 p.m.