Skip to content

Commit 40d9557

Browse files
Spreadborough Stephen - Senior Data ScientistSpreadborough Stephen - Senior Data Scientist
authored andcommitted
added option to remove encryption in initiation of sql_server class object
1 parent 010e760 commit 40d9557

5 files changed

Lines changed: 93 additions & 5 deletions

File tree

DESCRIPTION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
Package: SQLRtools
22
Type: Package
33
Title: SQL R Tools
4-
Version: 0.0.1
4+
Version: 0.0.2
55
Author: c(person("Stephen", "Spreadborough",
66
, "stephen.spreadborough@nottshc.nhs.uk ",
77
role = c("aut", "cre")))

NEWS.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
11

2+
# SQLRtools 0.0.2
3+
4+
Minor update adding in option to remove encryption in the initiation of the
5+
`sql_server` class object.
6+
27
# SQLRtools 0.0.1
38

49
Initial complete package containing:

R/sql_server.R

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,14 +55,17 @@ sql_server <- R6Class("sql_server", public = list(
5555
#' prem SQL server as will use windows credentials. Do NOT save credentials
5656
#' in code. Quoted string, default NULL.
5757
pwd = NULL,
58+
59+
#' @field encrypt set whether to include "Encrypt=true;" in connection string.
60+
#' TRUE, default, will include & FALSE will exclude. Logical, default TRUE
61+
encrypt = NULL,
5862

5963
#' @field server_type type of connection, set when initialised.
6064
server_type = NULL,
6165

6266
#' @field conn connection object, set when initialised.
6367
conn = NULL,
6468

65-
6669
#' @description
6770
#' Create new SQL server connection object.
6871
#'
@@ -72,14 +75,17 @@ sql_server <- R6Class("sql_server", public = list(
7275
#' @param port port of the database.
7376
#' @param uid user name for database login.
7477
#' @param pwd user password for database login.
78+
#' @param encrypt set whether to include "Encrypt=true;" in connection string.
79+
#' TRUE, defautl, will include & FALSE will exclude. Logical, default TRUE
7580
#' @return A new 'SQL server connection' object.
7681

7782
initialize = function(driver,
7883
server,
7984
database,
8085
port = NULL,
8186
uid = NULL,
82-
pwd = NULL) {
87+
pwd = NULL,
88+
encrypt = TRUE) {
8389

8490
# set up params
8591
self$driver <- driver
@@ -88,6 +94,7 @@ sql_server <- R6Class("sql_server", public = list(
8894
self$port <- port
8995
self$uid <- uid
9096
self$pwd <- pwd
97+
self$encrypt <- encrypt
9198
self$conn
9299
self$server_type <- case_when(tolower(self$driver) == "sql server" ~ "mssql",
93100
grepl("mysql", tolower(self$driver)) ~ "mysql",
@@ -130,11 +137,18 @@ sql_server <- R6Class("sql_server", public = list(
130137
# set connection by server type
131138
if (self$server_type == "mssql") {
132139

140+
if (isTRUE(self$encrypt)) {
141+
encrypt <- "Encrypt=true;"
142+
} else {
143+
encrypt <- ""
144+
}
145+
146+
133147
# set connection string
134148
conn_string <- paste("driver={", self$driver, "};",
135149
"server=", self$server, ";",
136150
"database=", database, ";",
137-
"Encrypt=true;",
151+
encrypt,
138152
"trusted_connection=true", sep = "")
139153

140154
# set connection

man/sql_server.Rd

Lines changed: 15 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/testthat/test-mssql_server.R

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,11 @@ test_data <- data.frame(Int_field = 1:200,
3131
# 1. uploading data ------------------------------------------------------------
3232

3333
testthat::test_that("mssql_server - upload method", {
34+
35+
# check encrypt is TRUE
36+
expect_true(mssql_serv$encrypt)
37+
38+
# check encrypt in
3439

3540
# upload table in one go
3641
upload_outcome <- mssql_serv$upload(data = test_data,
@@ -242,8 +247,58 @@ testthat::test_that("mssql_server - close connection", {
242247
})
243248

244249

250+
# 6. Connection setting encrypt to FALSE ---------------------------------------
245251

252+
# create mysql server object
253+
mssql_serv2 <- sql_server$new(
254+
driver = "SQL Server",
255+
server = get_env_var("MSSQL_SERVER"),
256+
database = get_env_var("MSSQL_DATABASE"),
257+
encrypt = FALSE
258+
)
259+
260+
testthat::test_that("mssql_server - without encryption", {
261+
262+
# check encrypt is TRUE
263+
expect_false(mssql_serv2$encrypt)
264+
265+
# upload table in one go
266+
upload_outcome <- mssql_serv2$upload(
267+
data = test_data,
268+
table_name = test_table_name,
269+
close_conn = FALSE
270+
)
246271

272+
# table exists
273+
table_exists <- mssql_serv2$table_exists(test_table_name,
274+
close_conn = FALSE)
275+
276+
# n rows
277+
table_rows <- mssql_serv2$get(glue("SELECT count(*) as n
278+
from {test_table_name}"),
279+
close_conn = FALSE) %>%
280+
pull(n) %>%
281+
as.integer()
282+
283+
# field names
284+
table_fields <- mssql_serv2$get(glue("SELECT TOP 0 *
285+
from {test_table_name}"),
286+
close_conn = FALSE)
287+
288+
289+
# tests
290+
testthat::expect_equal(upload_outcome, "success")
291+
testthat::expect_equal(table_exists, "yes")
292+
testthat::expect_equal(table_rows, 200L)
293+
testthat::expect_equal(colnames(table_fields), colnames(test_data))
294+
295+
# drop table
296+
mssql_serv2$drop_table(test_table_name, close_conn = FALSE)
297+
298+
# check if it exists
299+
testthat::expect_equal("no", mssql_serv2$table_exists(test_table_name))
300+
301+
})
247302

248303

249304

0 commit comments

Comments
 (0)