From 2f2ba467be25839dceb847db7d9745725df9532d Mon Sep 17 00:00:00 2001 From: Mischa ter Smitten Date: Thu, 23 Jan 2025 12:45:27 +0100 Subject: [PATCH 1/7] Fix typos & CS errors --- .lintr | 6 +++++- DESCRIPTION | 2 +- man/oefenwebDatabase.Rd | 18 ++++++++++++++++++ 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/.lintr b/.lintr index 16cc8f8..610c74b 100644 --- a/.lintr +++ b/.lintr @@ -1 +1,5 @@ -linters: with_defaults(line_length_linter(120), camel_case_linter = NULL) +linters: linters_with_defaults( + line_length_linter(120), + cyclocomp_linter = NULL, + seq_linter = NULL, + object_name_linter = NULL) diff --git a/DESCRIPTION b/DESCRIPTION index 73a848b..545f419 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -16,5 +16,5 @@ Remotes: Imports: DBI (>= 0.5), RMySQL (>= 0.10) -RoxygenNote: 7.0.2 +RoxygenNote: 7.3.2 Suggests: testthat diff --git a/man/oefenwebDatabase.Rd b/man/oefenwebDatabase.Rd index b64dce3..6bd8577 100644 --- a/man/oefenwebDatabase.Rd +++ b/man/oefenwebDatabase.Rd @@ -2,6 +2,7 @@ % Please edit documentation in R/oefenwebDatabase.R \docType{package} \name{oefenwebDatabase} +\alias{oefenwebDatabase-package} \alias{oefenwebDatabase} \title{oefenwebDatabase: A package for managing Oefenweb database connections} \description{ @@ -28,3 +29,20 @@ connection and \preformatted{close_connections()} to terminate all currently act connections. } +\seealso{ +Useful links: +\itemize{ + \item \url{https://github.com/Oefenweb/r-database} + \item Report bugs at \url{https://github.com/Oefenweb/r-database/issues} +} + +} +\author{ +\strong{Maintainer}: Jonathan Klaiber \email{jklaiber@oefenweb.nl} + +Authors: +\itemize{ + \item Mischa ter Smitten \email{mtersmitten@oefenweb.nl} +} + +} From 59485eecc86b8ac63c7ab915f5bd7f492f354f0a Mon Sep 17 00:00:00 2001 From: Mischa ter Smitten Date: Thu, 23 Jan 2025 13:15:49 +0100 Subject: [PATCH 2/7] Fix warning --- R/oefenwebDatabase.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/R/oefenwebDatabase.R b/R/oefenwebDatabase.R index 397d5eb..80d2e21 100644 --- a/R/oefenwebDatabase.R +++ b/R/oefenwebDatabase.R @@ -23,4 +23,4 @@ #' #' @docType package #' @name oefenwebDatabase -NULL +"_PACKAGE" From c0d48913736a4a7769562ee59565a286909bebc8 Mon Sep 17 00:00:00 2001 From: Mischa ter Smitten Date: Thu, 23 Jan 2025 16:49:16 +0100 Subject: [PATCH 3/7] Add get_query method --- .bumpversion.cfg | 1 - DESCRIPTION | 3 ++- NAMESPACE | 1 + R/close_connection.R | 2 +- R/connect.R | 2 +- R/query.R | 24 ++++++++++++++++++++++++ man/close_connection.Rd | 2 +- man/connect.Rd | 2 +- man/get_query.Rd | 30 ++++++++++++++++++++++++++++++ 9 files changed, 61 insertions(+), 6 deletions(-) create mode 100644 R/query.R create mode 100644 man/get_query.Rd diff --git a/.bumpversion.cfg b/.bumpversion.cfg index a3384f4..aab2a73 100644 --- a/.bumpversion.cfg +++ b/.bumpversion.cfg @@ -6,4 +6,3 @@ tag = True [bumpversion:file:DESCRIPTION] search = Version: {current_version} replace = Version: {new_version} - diff --git a/DESCRIPTION b/DESCRIPTION index 545f419..1722ca3 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -15,6 +15,7 @@ Remotes: github::Oefenweb/r-dummy Imports: DBI (>= 0.5), - RMySQL (>= 0.10) + RMySQL (>= 0.10), + glue RoxygenNote: 7.3.2 Suggests: testthat diff --git a/NAMESPACE b/NAMESPACE index 153297f..c40b1f3 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -3,3 +3,4 @@ export(close_connection) export(close_connections) export(connect) +export(get_query) diff --git a/R/close_connection.R b/R/close_connection.R index 2f0051c..7d06e77 100644 --- a/R/close_connection.R +++ b/R/close_connection.R @@ -1,6 +1,6 @@ #' Disconnects a given database connection. #' -#' @param con A database connection (an object of class MySQLConnection). +#' @param con A DBIConnection object, as returned by dbConnect(). #' @return A logical vector of length 1, indicating success or failure. #' @export close_connection <- function(con) { diff --git a/R/connect.R b/R/connect.R index 7eeda75..c04c9eb 100644 --- a/R/connect.R +++ b/R/connect.R @@ -2,7 +2,7 @@ #' #' @param dbname A database name, for example "oefenweb_nl_app" or "mathsgarden_com_app". #' @param default.file A MySQL configuration file, containing login credentials. -#' @return A database connection (an object of class MySQLConnection). +#' @return A DBIConnection object, as returned by dbConnect(). #' @export connect <- function(dbname = "oefenweb_nl_app", default.file = path.expand(file.path("~", ".my.cnf"))) { return(DBI::dbConnect(RMySQL::MySQL(), dbname = dbname, default.file = default.file)) diff --git a/R/query.R b/R/query.R new file mode 100644 index 0000000..3a4719a --- /dev/null +++ b/R/query.R @@ -0,0 +1,24 @@ +#' Retrieve results from a query. +#' +#' Suppresses warnings and uses glue_sql for safety. +#' +#' @param ... [expressions] Unnamed arguments are taken to be expression string(s) to format. +#' Multiple inputs are concatenated together before formatting. +#' @param con A DBIConnection object, as returned by dbConnect(). +#' @param params [list] Containing parameters called in SQL statement with \{params[[i]]\} or \{params[[j]]*\} +#' @return [data.frame] With as many rows as records were fetched and as many columns as fields in the result set. +#' @examples +#' \dontrun{ +#' domain_ids <- 1:4 +#' game_name <- "multiplication" +#' get_query("SELECT `name` FROM `domains` WHERE `id` IN ({params[[1]]*}) AND `name` != {params[[2]]}", +#' params = list(domain_ids, game_name)) +#' } +#' @export +get_query <- function(..., con, params = NULL) { + return( + suppressWarnings( + DBI::dbGetQuery(con, glue::glue_sql(..., .con = con)) + ) + ) +} diff --git a/man/close_connection.Rd b/man/close_connection.Rd index 4e0abd6..aef3231 100644 --- a/man/close_connection.Rd +++ b/man/close_connection.Rd @@ -7,7 +7,7 @@ close_connection(con) } \arguments{ -\item{con}{A database connection (an object of class MySQLConnection).} +\item{con}{A DBIConnection object, as returned by dbConnect().} } \value{ A logical vector of length 1, indicating success or failure. diff --git a/man/connect.Rd b/man/connect.Rd index d2972af..0c82b99 100644 --- a/man/connect.Rd +++ b/man/connect.Rd @@ -15,7 +15,7 @@ connect( \item{default.file}{A MySQL configuration file, containing login credentials.} } \value{ -A database connection (an object of class MySQLConnection). +A DBIConnection object, as returned by dbConnect(). } \description{ Connects to a given database. diff --git a/man/get_query.Rd b/man/get_query.Rd new file mode 100644 index 0000000..1fa43f6 --- /dev/null +++ b/man/get_query.Rd @@ -0,0 +1,30 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/query.R +\name{get_query} +\alias{get_query} +\title{Retrieve results from a query.} +\usage{ +get_query(..., con, params = NULL) +} +\arguments{ +\item{...}{[expressions] Unnamed arguments are taken to be expression string(s) to format. +Multiple inputs are concatenated together before formatting.} + +\item{con}{A DBIConnection object, as returned by dbConnect().} + +\item{params}{[list] Containing parameters called in SQL statement with \{params[[i]]\} or \{params[[j]]*\}} +} +\value{ +[data.frame] With as many rows as records were fetched and as many columns as fields in the result set. +} +\description{ +Suppresses warnings and uses glue_sql for safety. +} +\examples{ +\dontrun{ +domain_ids <- 1:4 +game_name <- "multiplication" +get_query("SELECT `name` FROM `domains` WHERE `id` IN ({params[[1]]*}) AND `name` != {params[[2]]}", + params = list(domain_ids, game_name)) +} +} From ea1eafa1ff74a7fecbd72146ac1ae78ec3cfc6b2 Mon Sep 17 00:00:00 2001 From: Mischa ter Smitten Date: Thu, 23 Jan 2025 17:23:47 +0100 Subject: [PATCH 4/7] Fix example --- R/query.R | 9 +++++---- man/get_query.Rd | 9 +++++---- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/R/query.R b/R/query.R index 3a4719a..72d7d17 100644 --- a/R/query.R +++ b/R/query.R @@ -10,12 +10,13 @@ #' @examples #' \dontrun{ #' domain_ids <- 1:4 -#' game_name <- "multiplication" -#' get_query("SELECT `name` FROM `domains` WHERE `id` IN ({params[[1]]*}) AND `name` != {params[[2]]}", -#' params = list(domain_ids, game_name)) +#' domain_name <- "Vermenigvuldigen" +#' query <- "SELECT `name` FROM `domains` WHERE `id` IN ({params[[1]]*}) AND `name` != {params[[2]]}" +#' params <- list(domain_ids, domain_name) +#' get_query(query, con = con, params = params) #' } #' @export -get_query <- function(..., con, params = NULL) { +get_query <- function(..., con = con, params = NULL) { return( suppressWarnings( DBI::dbGetQuery(con, glue::glue_sql(..., .con = con)) diff --git a/man/get_query.Rd b/man/get_query.Rd index 1fa43f6..00d2a7b 100644 --- a/man/get_query.Rd +++ b/man/get_query.Rd @@ -4,7 +4,7 @@ \alias{get_query} \title{Retrieve results from a query.} \usage{ -get_query(..., con, params = NULL) +get_query(..., con = con, params = NULL) } \arguments{ \item{...}{[expressions] Unnamed arguments are taken to be expression string(s) to format. @@ -23,8 +23,9 @@ Suppresses warnings and uses glue_sql for safety. \examples{ \dontrun{ domain_ids <- 1:4 -game_name <- "multiplication" -get_query("SELECT `name` FROM `domains` WHERE `id` IN ({params[[1]]*}) AND `name` != {params[[2]]}", - params = list(domain_ids, game_name)) +domain_name <- "Vermenigvuldigen" +query <- "SELECT `name` FROM `domains` WHERE `id` IN ({params[[1]]*}) AND `name` != {params[[2]]}" +params <- list(domain_ids, domain_name)) +get_query(query, con = con, params = params) } } From beed1c76769da03c06e734114b86ccd9b2f3b594 Mon Sep 17 00:00:00 2001 From: Mischa ter Smitten Date: Thu, 23 Jan 2025 17:26:45 +0100 Subject: [PATCH 5/7] Readd missing newline --- .bumpversion.cfg | 1 + 1 file changed, 1 insertion(+) diff --git a/.bumpversion.cfg b/.bumpversion.cfg index aab2a73..a3384f4 100644 --- a/.bumpversion.cfg +++ b/.bumpversion.cfg @@ -6,3 +6,4 @@ tag = True [bumpversion:file:DESCRIPTION] search = Version: {current_version} replace = Version: {new_version} + From 074d60f4303b280b7366047609ee62ebc2a4ff4f Mon Sep 17 00:00:00 2001 From: Mischa ter Smitten Date: Thu, 23 Jan 2025 17:43:50 +0100 Subject: [PATCH 6/7] Cleanup --- R/query.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/R/query.R b/R/query.R index 72d7d17..c998208 100644 --- a/R/query.R +++ b/R/query.R @@ -16,7 +16,7 @@ #' get_query(query, con = con, params = params) #' } #' @export -get_query <- function(..., con = con, params = NULL) { +get_query <- function(..., con = con, params = NULL) { return( suppressWarnings( DBI::dbGetQuery(con, glue::glue_sql(..., .con = con)) From ef0e8627c652ef3261109023b69b410a52ace473 Mon Sep 17 00:00:00 2001 From: Mischa ter Smitten Date: Thu, 23 Jan 2025 18:08:36 +0100 Subject: [PATCH 7/7] Fix typo --- man/get_query.Rd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/man/get_query.Rd b/man/get_query.Rd index 00d2a7b..0c6cae3 100644 --- a/man/get_query.Rd +++ b/man/get_query.Rd @@ -25,7 +25,7 @@ Suppresses warnings and uses glue_sql for safety. domain_ids <- 1:4 domain_name <- "Vermenigvuldigen" query <- "SELECT `name` FROM `domains` WHERE `id` IN ({params[[1]]*}) AND `name` != {params[[2]]}" -params <- list(domain_ids, domain_name)) +params <- list(domain_ids, domain_name) get_query(query, con = con, params = params) } }