R/connection.R

Defines functions dbi_connection get_connection.default get_connection.DBIConnection get_connection.dbi.table get_connection.dbi.schema get_connection.dbi.catalog get_connection init_connection

init_connection <- function(conn) {
  if (is.function(conn)) {
    recon_fun <- conn
    conn <- conn()
    attr(conn, "recon") <- recon_fun
  }

  conn
}



get_connection <- function(x) {
  UseMethod("get_connection")
}



#' @export
get_connection.dbi.catalog <- function(x) {
  x
}



#' @export
get_connection.dbi.schema <- function(x) {
  x[["../catalog"]]
}



#' @export
get_connection.dbi.table <- function(x) {
  attr(x, "conn", exact = TRUE)
}



#' @export
get_connection.DBIConnection <- function(x) {
  x
}



#' @export
get_connection.default <- function(x) {
  stop("invalid connection argument - 'conn' is not a 'DBI' connection",
       call. = FALSE)

  invisible()
}



dbi_connection <- function(x) {
  if (is_dbi_catalog(conn <- get_connection(x))) {
    conn <- get("./dbi_connection", pos = conn, inherits = FALSE)
  }
  conn
}

Try the dbi.table package in your browser

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

dbi.table documentation built on April 3, 2025, 7:40 p.m.