## ----eval=FALSE---------------------------------------------------------------
#  library(ResultModelManager)
#  
#  tableSpecification <- dplyr::tibble(
#    tableName = c(
#      "my_table", "my_table", "my_table", "my_table", "my_table", "my_table", "my_table",
#      "my_andromeda_table", "my_andromeda_table", "my_andromeda_table"
#    ),
#    columnName = c(
#      "database_id", "target_cohort_id", "comparator_cohort_id", "target_count", "comparator_count", "rr", "p_value",
#      "database_id", "covariate_id", "value"
#    ),
#    primaryKey = c(
#      "yes", "yes", "no", "no", "no", "no", "no",
#      "yes", "yes", "no"
#    ),
#    minCellCount = c(
#      "no", "no", "no", "yes", "yes", "no", "no",
#      "no", "no", "no"
#    ),
#    dataType = c(
#      "varchar(255)", "int", "int", "int", "int", "float", "float",
#      "varchar(255)", "bigint", "float"
#    )
#  )
#  
#  # Per database export folder is a good principle to follow
#  exportDir <- "output_folder/example_cdm"
#  exportManager <- createResultExportManager(
#    tableSpecification = tableSpecification,
#    exportDir = exportDir,
#    databaseId = "example_cdm"
#  )

## ----eval=FALSE---------------------------------------------------------------
#  connection <- DatabaseConnector::connect(server = ":memory:", dbms = "sqlite")
#  schema <- "main"
#  
#  # Some made up counts
#  data <- data.frame(
#    target_cohort_id = 1:100,
#    comparator_cohort_id = 101:200,
#    target_count = stats::rpois(100, lambda = 10),
#    target_time = stats::rpois(100, 100000),
#    comparator_count = stats::rpois(100, lambda = 5),
#    comparator_time = stats::rpois(100, 100000)
#  )
#  
#  DatabaseConnector::insertTable(connection, data = data, tableName = "result_table", databaseSchema = schema)

## ----eval=FALSE---------------------------------------------------------------
#  sql <- "SELECT * FROM @schema.result_table"
#  exportManager$exportQuery(connection = connection, sql = sql, exportTableName = "my_table", schema = schema)

## ----eval=FALSE---------------------------------------------------------------
#  library(rateratio.test)
#  
#  transformation <- function(rows, pos) {
#    rrResult <- rateratio.test(
#      x = c(row$target_count, row$comparator_count),
#      n = c(row$target_time, row$comparator_time),
#      RR = 1,
#      conf.level = 0.95
#    )
#  
#    row$rr <- rrResult$estimate
#    row$p_value <- rrResult$p.value
#  
#    return(row)
#  }
#  
#  exportManager$exportQuery(connection,
#    sql,
#    "my_table",
#    transformFunction = transformation,
#    transformFunctionArgs = list(),
#    append = FALSE,
#    schema = schema
#  )

## ----eval=FALSE---------------------------------------------------------------
#  andr <- Andromeda::andromeda()
#  andr$my_andromeda_table <- data.frame(covariate_id = 1:1e4, value = stats::runif(1e4))
#  
#  first <- TRUE
#  writeBatch <- function(batch) {
#    exportManager$exportDataFrame(batch, "my_andromeda_table", append = first)
#    first <<- FALSE
#    # we don't want to return anything, just write the result to disk
#    return(invisible(NULL))
#  }
#  
#  Andromeda::batchApply(andr$my_andromeda_table, writeBatch)

## ----eval=FALSE---------------------------------------------------------------
#  exportManger$writeManifest(packageName = "analytics_package", packageVersion = packageVersion("analytics_package"))