Can someone instruct me step-by-step on how to integrate a project on neon platform with an app deployed on shinyapps.io platform? FYI: I have an app written in R and deployed on shinyapps.io. To connect to my neon project, I have in my app's code the following connection script:
library(shiny)
library(shinydashboard)
library(rhandsontable)
library(data.table)
library(dplyr)
library(lubridate)
library(shinyalert)
library(openxlsx)
library(DBI)
library(RPostgres)
library(pool)
library(httr)
#For environment variables check "File1.Renviron" and "File2.Renviron" in folder "Trials"
Configuration setup
app_config <- list(
project_id = Sys.getenv("PROJECT_ID"),
database_url = Sys.getenv("DATABASE_URL"),
api_key = Sys.getenv("API_KEY"),
secret_token = Sys.getenv("SECRET_TOKEN"),
neon_db_name = Sys.getenv("NEON_DB_NAME"),
neon_host = Sys.getenv("NEON_HOST"),
neon_user = Sys.getenv("NEON_USER"),
neon_password = Sys.getenv("NEON_PASSWORD"),
neon_port = Sys.getenv("NEON_PORT", "5432") # with default
)
Verify that the crucial environment variables are loaded (optional but recommended)
if (app_config$neon_db_name == "" | app_config$neon_host == "") {
stop("Critical database environment variables (NEON_DB_NAME, NEON_HOST) are not set. Please check your .Renviron file.")
}
Database connection pool
db_pool <- NULL
get_db_pool <- function() {
if (is.null(db_pool)) {
db_pool <<- dbPool(
drv = RPostgres::Postgres(),
dbname = app_config$neon_db_name,
host = app_config$neon_host,
user = app_config$neon_user,
password = app_config$neon_password,
port = app_config$neon_port,
sslmode = "require",
sslrootcert = system.file("certs/ca-certificates.crt", package = "RPostgres"),
channel_binding = "require",
minSize = 1,
maxSize = 5,
idleTimeout = 300000
)
}
return(db_pool)
}
Cleanup on exit
onStop(function() {
if (!is.null(db_pool)) {
poolClose(db_pool)
}
})