-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathglobal.R
107 lines (86 loc) · 3.83 KB
/
global.R
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
loadShinySettings <- function(configPath) {
stopifnot(file.exists(configPath))
shinySettings <- yaml::read_yaml(configPath)
defaultValues <- list(
resultsDatabaseSchema = c("main"),
vocabularyDatabaseSchemas = c("main"),
tablePrefix = "",
cohortTable = "cohort",
databaseTable = "database",
connectionEnvironmentVariables = NULL
)
for (key in names(defaultValues)) {
if (is.null(shinySettings[[key]])) {
shinySettings[[key]] <- defaultValues[[key]]
}
}
if (shinySettings$cohortTableName == "cohort") {
shinySettings$cohortTableName <- paste0(shinySettings$tablePrefix, shinySettings$cohortTableName)
}
if (shinySettings$databaseTableName == "database") {
shinySettings$databaseTableName <- paste0(shinySettings$tablePrefix, shinySettings$databaseTableName)
}
if (!is.null(shinySettings$connectionDetailsSecureKey)) {
shinySettings$connectionDetails <- jsonlite::fromJSON(keyring::key_get(shinySettings$connectionDetailsSecureKey))
} else if(!is.null(shinySettings$connectionEnvironmentVariables$server)) {
defaultValues <- list(
dbms = "",
user = "",
password = "",
port = "",
extraSettings = ""
)
for (key in names(defaultValues)) {
if (is.null(shinySettings$connectionEnvironmentVariables[[key]])) {
shinySettings$connectionEnvironmentVariables[[key]] <- defaultValues[[key]]
}
}
serverStr <- Sys.getenv(shinySettings$connectionEnvironmentVariables$server)
if (!is.null(shinySettings$connectionEnvironmentVariables$database)) {
serverStr <- paste0(serverStr, "/", Sys.getenv(shinySettings$connectionEnvironmentVariables$database))
}
shinySettings$connectionDetails <- list(
dbms = Sys.getenv(shinySettings$connectionEnvironmentVariables$dbms, unset = shinySettings$connectionDetails$dbms),
server = serverStr,
user = Sys.getenv(shinySettings$connectionEnvironmentVariables$user),
password = Sys.getenv(shinySettings$connectionEnvironmentVariables$password),
port = Sys.getenv(shinySettings$connectionEnvironmentVariables$port, unset = shinySettings$connectionDetails$port),
extraSettings = Sys.getenv(shinySettings$connectionEnvironmentVariables$extraSettings)
)
}
shinySettings$connectionDetails <- do.call(DatabaseConnector::createConnectionDetails,
shinySettings$connectionDetails)
return(shinySettings)
}
if (!exists("shinySettings")) {
writeLines("Using settings provided by user")
shinyConfigPath <- getOption("CD-shiny-config", default = "config.yml")
shinySettings <- loadShinySettings(shinyConfigPath)
}
# Added to support publishing to posit connect and shinyapps.io (looks for a library or reauire)
if (FALSE) {
require(RSQLite)
}
connectionHandler <- ResultModelManager::PooledConnectionHandler$new(shinySettings$connectionDetails)
if (packageVersion("OhdsiShinyModules") >= as.numeric_version("1.2.0")) {
resultDatabaseSettings <- list(
schema = shinySettings$resultsDatabaseSchema,
vocabularyDatabaseSchema = shinySettings$vocabularyDatabaseSchema,
cdTablePrefix = shinySettings$tablePrefix,
cgTable = shinySettings$cohortTableName,
databaseTable = shinySettings$databaseTableName
)
dataSource <-
OhdsiShinyModules::createCdDatabaseDataSource(connectionHandler = connectionHandler,
resultDatabaseSettings = resultDatabaseSettings)
} else {
dataSource <-
OhdsiShinyModules::createCdDatabaseDataSource(
connectionHandler = connectionHandler,
schema = shinySettings$resultsDatabaseSchema,
vocabularyDatabaseSchema = shinySettings$vocabularyDatabaseSchema,
tablePrefix = shinySettings$tablePrefix,
cohortTableName = shinySettings$cohortTableName,
databaseTableName = shinySettings$databaseTableName
)
}