Nothing
# Only use devtools::load_all() when running tests directly with devtools
# R CMD check loads the package automatically, so we don't need this
# Check if we're in an R CMD check environment by looking at the current directory
isRcmdCheck <- grepl("\\.Rcheck", getwd())
# Only run devtools setup in local development, not in CI/covr
isLocalDev <- !isRcmdCheck &&
!identical(Sys.getenv("CI"), "true") &&
!identical(Sys.getenv("COVR"), "true") &&
requireNamespace("devtools", quietly = TRUE)
if (isLocalDev) {
devtools::load_all()
# Create symbolic link for sql directory if it doesn't exist
# This allows testing with devtools::test
packageRoot <- normalizePath(system.file("..", package = "DataQualityDashboard"))
sqlLinkPath <- file.path(packageRoot, "sql")
sqlPackagePath <- system.file("sql", package = "DataQualityDashboard")
if (!file.exists(sqlLinkPath) && sqlPackagePath != "") {
print("setting sql folder symbolic link")
# Create symbolic link so code can be used in devtools::test()
tryCatch(
{
if (requireNamespace("R.utils", quietly = TRUE)) {
R.utils::createLink(link = sqlLinkPath, sqlPackagePath)
options("use.devtools.sql_shim" = TRUE)
} else {
# Fallback: create a simple file.copy if R.utils is not available
if (!dir.exists(sqlLinkPath)) {
dir.create(sqlLinkPath, recursive = TRUE)
}
file.copy(from = sqlPackagePath, to = dirname(sqlLinkPath), recursive = TRUE, overwrite = TRUE)
options("use.devtools.sql_shim" = TRUE)
}
},
error = function(e) {
warning("Failed to create symbolic link for SQL directory: ", e$message)
# Continue without the symbolic link - the package should still work
}
)
}
}
# Ensure the package is properly loaded and SQL files are accessible
if (!requireNamespace("DataQualityDashboard", quietly = TRUE)) {
# Try to load the package if it's not already loaded
library(DataQualityDashboard)
}
# Verify SQL files are accessible
sqlFile <- system.file("sql", "sql_server", "field_plausible_after_birth.sql", package = "DataQualityDashboard")
if (sqlFile == "") {
stop("Cannot find SQL files. Make sure the package is properly loaded.")
}
if (Sys.getenv("DONT_DOWNLOAD_JDBC_DRIVERS", "") == "TRUE") {
jdbcDriverFolder <- Sys.getenv("DATABASECONNECTOR_JAR_FOLDER")
} else {
jdbcDriverFolder <- tempfile("jdbcDrivers")
dir.create(jdbcDriverFolder)
DatabaseConnector::downloadJdbcDrivers("postgresql", jdbcDriverFolder)
DatabaseConnector::downloadJdbcDrivers("sql server", jdbcDriverFolder)
DatabaseConnector::downloadJdbcDrivers("oracle", jdbcDriverFolder)
DatabaseConnector::downloadJdbcDrivers("redshift", jdbcDriverFolder)
}
connectionDetailsEunomia <- Eunomia::getEunomiaConnectionDetails()
cdmDatabaseSchemaEunomia <- "main"
resultsDatabaseSchemaEunomia <- "main"
# Separate connection details for NA tests, as this requires removing records
connectionDetailsEunomiaNaChecks <- Eunomia::getEunomiaConnectionDetails()
# Separate connection details for plausibleAfterBirth test
connectionDetailsPlausibleAfterBirth <- Eunomia::getEunomiaConnectionDetails()
# Separate connection details for observation period overlap test
connectionDetailsEunomiaOverlap <- Eunomia::getEunomiaConnectionDetails()
# Helper function to verify database connection
verifyConnection <- function(connectionDetails) {
tryCatch(
{
connection <- DatabaseConnector::connect(connectionDetails = connectionDetails)
on.exit(DatabaseConnector::disconnect(connection), add = TRUE)
# Test the connection with a simple query that works across all databases
# For Oracle, we need FROM DUAL, which SqlRender handles when we use a proper template
if (tolower(connectionDetails$dbms) == "oracle") {
testSql <- "SELECT 1 FROM DUAL"
} else {
testSql <- "SELECT 1"
}
testSql <- SqlRender::translate(sql = testSql, targetDialect = connectionDetails$dbms)
DatabaseConnector::querySql(connection = connection, sql = testSql)
return(TRUE)
},
error = function(e) {
stop(e$message)
}
)
}
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.