From b2c6b1b7addea6cfe9cc0578e0a8201210df1e1e Mon Sep 17 00:00:00 2001 From: Juliette Engelaere-Lefebvre <juliette.engelaere@developpement-durable.gouv.fr> Date: Fri, 13 Sep 2024 16:19:06 +0200 Subject: [PATCH] =?UTF-8?q?Ajout=20d'un=20parametre=20`ecoSQL`=20=C3=A0=20?= =?UTF-8?q?la=20fonction=20connect=5Fto=5Fdb=20pour=20switcher=20vers=20un?= =?UTF-8?q?=20driver=20adapt=C3=A9=20=C3=A0=20l'offre=20SGBD=20ecoSQL?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit relates #18 --- DESCRIPTION | 6 ++-- NEWS.md | 3 ++ R/comment_db.R | 19 +++++++------ R/commenter_champs.R | 48 +++++++++++++++++++------------- R/commenter_table.R | 7 +++-- R/connect_to_db.R | 18 ++++++++---- R/get_data.R | 5 ++-- R/list_tables.R | 5 ++-- R/post_data.R | 8 ++++-- R/set_shema_rights.R | 5 ++-- man/commenter_champs.Rd | 5 +++- man/commenter_schema.Rd | 10 ++++++- man/commenter_table.Rd | 5 +++- man/connect_to_db.Rd | 10 +++++-- man/exporter_table_comments.Rd | 5 +++- man/get_cols_comment.Rd | 5 +++- man/get_db_comment.Rd | 4 ++- man/get_schema_comment.Rd | 10 ++++++- man/get_table_comment.Rd | 5 +++- man/get_table_comments.Rd | 5 +++- man/importer_data.Rd | 5 +++- man/list_tables.Rd | 4 ++- man/post_dico_attr.Rd | 5 +++- man/poster_data.Rd | 5 +++- man/set_schema_rights.Rd | 5 +++- man/transferer_table_comments.Rd | 5 +++- 26 files changed, 152 insertions(+), 65 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index 10d72c9..7e0b5f6 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: datalibaba Title: Interface De Connexion a Une Base Posgres Postgis -Version: 0.0.0.9007 +Version: 0.0.0.9008 Authors@R: c(person(given = "Maël", family = "Theulière", @@ -24,6 +24,7 @@ Imports: odbc, purrr, rpostgis, + RPostgres, RPostgreSQL, sf, tidyselect, @@ -35,8 +36,7 @@ Imports: tidyr Suggests: knitr, - rmarkdown, - RPostgres + rmarkdown Encoding: UTF-8 LazyData: true Roxygen: list(markdown = TRUE) diff --git a/NEWS.md b/NEWS.md index 2986b0b..1095e8b 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,3 +1,6 @@ +# datalibaba 0.0.0.9008 +- Ajout d'un paramètre `ecoSQL` à la fonction `connect_to_db` pour switcher de driver (passage du `DBI::dbDriver("PostgreSQL")` _par défaut si `EcoSQL = FALSE`_, à `RPostgres::Postgres()` si `ecoSQL = TRUE` adapté à l'usage de l'offre d'hébergement de base EcoSQL) + # datalibaba 0.0.0.9007 - Ajout d'un paramètre `limit` à `importer_data()` pour limiter le nombre d'enregistrement à rapatrier diff --git a/R/comment_db.R b/R/comment_db.R index 1e924dd..95396a3 100644 --- a/R/comment_db.R +++ b/R/comment_db.R @@ -3,6 +3,7 @@ #' @param db : base de données dont on recherche le descriptif. #' @param user : l'identifiant de l'utilisateur SGBD qui se connecte #' @param server : l'adresse IP du serveur, laisser à NULL pour utiliser la variable d'environnement du .Renviron +#' @param ... eventuels autres arguments de la fonction d'ouverture de connexion `connect_to_db` #' @return le commentaire de la bases de données dans un dataframe avec les champs (nom_base, commentaire) #' #' @export @@ -12,9 +13,9 @@ #' @importFrom rlang .data -get_db_comment <- function(db = "public", user = "does", server = NULL) { +get_db_comment <- function(db = "public", user = "does", server = NULL, ...) { # Connexion à la base de données - con <- datalibaba::connect_to_db(db = db, user = user, server = server) + con <- datalibaba::connect_to_db(db = db, user = user, server = server, ...) # Construction de la requête SQL pour récupérer le commentaire de la base de données query <- "SELECT datname AS nom_base, description AS commentaire FROM pg_database JOIN pg_shdescription ON pg_database.oid = pg_shdescription.objoid WHERE datname = current_database();" @@ -38,15 +39,16 @@ get_db_comment <- function(db = "public", user = "does", server = NULL) { #' @param schema : le nom du schema a commenter #' @param db : le nom de la base qui contient le schema a commenter #' @param user : l'identifiant de l'utilisateur SGBD qui se connecte +#' @param ... eventuels autres arguments de la fonction d'ouverture de connexion `connect_to_db` #' @importFrom attempt stop_if #' @importFrom DBI dbDisconnect #' @importFrom rpostgis dbComment #' @return NULL #' @export -commenter_schema <- function(comment = NULL, schema = NULL, db = "public", user = "does") { +commenter_schema <- function(comment = NULL, schema = NULL, db = "public", user = "does", ...) { - # ouverture de la connexion avec DBI::dbDriver("PostgreSQL") - con <- connect_to_db(db, user) + # ouverture de la connexion avec DBI::dbDriver("PostgreSQL") ou `DBI::dbDriver("PostgreSQL")` si `ecoSQL = TRUE` + con <- connect_to_db(db, user, ...) # verification de la validite des arguments attempt::stop_if(comment, is.null, msg = "L'argument comment n\'est pas renseign\u00e9. ") @@ -67,6 +69,7 @@ commenter_schema <- function(comment = NULL, schema = NULL, db = "public", user #' @param db : Le nom de la base qui contient le schema dont on recherche le descriptif. #' @param user : l'identifiant de l'utilisateur SGBD qui se connecte #' @param server l'adresse ip du serveur, laisser à NULL pour utiliser le variable d'environnement du .Renviron +#' @param ... eventuels autres arguments de la fonction d'ouverture de connexion `connect_to_db` #' @return le commentaire recherche dans un dataframe de 3 champs (base, nom_schema, commentaire) #' #' @export @@ -76,9 +79,9 @@ commenter_schema <- function(comment = NULL, schema = NULL, db = "public", user #' @importFrom rlang .data -get_schema_comment <- function(schema = NULL, db = "public", user = "does", server = NULL) { - # ouverture de la connexion avec DBI::dbDriver("PostgreSQL") - con <- connect_to_db(db = db, user = user, server = server) +get_schema_comment <- function(schema = NULL, db = "public", user = "does", server = NULL, ...) { + # ouverture de la connexion avec DBI::dbDriver("PostgreSQL") ou `DBI::dbDriver("PostgreSQL")` si `ecoSQL = TRUE` + con <- connect_to_db(db = db, user = user, server = server, ...) # verification de la validite des arguments attempt::stop_if(schema, is.null, msg = "L\'argument schema n\'est pas renseign\u00e9. ") diff --git a/R/commenter_champs.R b/R/commenter_champs.R index 61c6256..8ae4d8c 100644 --- a/R/commenter_champs.R +++ b/R/commenter_champs.R @@ -8,6 +8,7 @@ #' @param db : Le nom de la base qui contient la table a commenter. #' @param user : L'identifiant de l'utilisateur SGBD qui se connecte. #' @param server l'adresse ip du serveur, laisser à NULL pour utiliser le variable d'environnement du .Renviron +#' @param ... eventuels autres arguments de la fonction d'ouverture de connexion `connect_to_db` #' #' @importFrom attempt stop_if stop_if_not #' @importFrom DBI dbSendQuery dbDisconnect @@ -23,10 +24,11 @@ #' schema = "public", db = "public", user = "does") #' } -commenter_champs <- function(comment = NULL, var = NULL, table = NULL, schema = NULL, db = "public", user = "does", server = NULL) { +commenter_champs <- function(comment = NULL, var = NULL, table = NULL, schema = NULL, + db = "public", user = "does", server = NULL, ...) { - # ouverture de la connexion avec DBI::dbDriver("PostgreSQL") - con <- connect_to_db(db = db, user = user, server = server) + # ouverture de la connexion avec DBI::dbDriver("PostgreSQL") ou `DBI::dbDriver("PostgreSQL")` si `ecoSQL = TRUE` + con <- connect_to_db(db = db, user = user, server = server, ...) # verification de la validite des arguments attempt::stop_if(comment, is.null, msg = "L\'argument comment n\'est pas renseign\u00e9. ") @@ -60,6 +62,7 @@ commenter_champs <- function(comment = NULL, var = NULL, table = NULL, schema = #' @param db : Le nom de la base qui contient la table a commenter. #' @param user : L'identifiant de l'utilisateur SGBD qui se connecte. #' @param server l'adresse ip du serveur, laisser à NULL pour utiliser le variable d'environnement du .Renviron +#' @param ... eventuels autres arguments de la fonction d'ouverture de connexion `connect_to_db` #' #' @importFrom attempt stop_if_not stop_if #' @importFrom DBI dbSendQuery dbDisconnect @@ -77,10 +80,10 @@ commenter_champs <- function(comment = NULL, var = NULL, table = NULL, schema = #' } #' -post_dico_attr <- function(dico = NULL, table = NULL, schema = NULL, db = "public", user = "does", server = NULL) { +post_dico_attr <- function(dico = NULL, table = NULL, schema = NULL, db = "public", user = "does", server = NULL, ...) { - # ouverture de la connexion avec DBI::dbDriver("PostgreSQL") - con <- connect_to_db(db = db, user = user, server = server) + # ouverture de la connexion avec DBI::dbDriver("PostgreSQL") ou `DBI::dbDriver("PostgreSQL")` si `ecoSQL = TRUE` + con <- connect_to_db(db = db, user = user, server = server, ...) # verification de la validite des arguments attempt::stop_if_not(dico, is.data.frame, msg = "L\'argument dico ne correpond pas \u00e0 un dataframe. ") @@ -128,6 +131,7 @@ post_dico_attr <- function(dico = NULL, table = NULL, schema = NULL, db = "publi #' @param db : Le nom de la base qui contient la table dont on recherche le descriptif. #' @param user : L'identifiant de l'utilisateur SGBD qui se connecte. #' @param server l'adresse ip du serveur, laisser à NULL pour utiliser le variable d'environnement du .Renviron +#' @param ... eventuels autres arguments de la fonction d'ouverture de connexion `connect_to_db` #' #' @return le commentaire recherche dans un dataframe de 3 champs (nom_schema, nom_table, commentaire) et une ligne #' @export @@ -136,9 +140,9 @@ post_dico_attr <- function(dico = NULL, table = NULL, schema = NULL, db = "publi #' @importFrom dplyr transmute #' @importFrom rlang .data #' -get_table_comment <- function(table = NULL, schema = NULL, db = "public", user = "does", server = NULL) { - # ouverture de la connexion avec DBI::dbDriver("PostgreSQL") - con <- connect_to_db(db = db, user = user, server = server) +get_table_comment <- function(table = NULL, schema = NULL, db = "public", user = "does", server = NULL, ...) { + # ouverture de la connexion avec DBI::dbDriver("PostgreSQL") ou `DBI::dbDriver("PostgreSQL")` si `ecoSQL = TRUE` + con <- connect_to_db(db = db, user = user, server = server, ...) # verification de la validite des arguments attempt::stop_if(schema, is.null, msg = "L\'argument schema n\'est pas renseign\u00e9. ") @@ -167,6 +171,7 @@ get_table_comment <- function(table = NULL, schema = NULL, db = "public", user = #' @param db : Le nom de la base qui contient la table dont on recherche le descriptif. #' @param user : L'identifiant de l'utilisateur SGBD qui se connecte. #' @param server l'adresse ip du serveur, laisser à NULL pour utiliser le variable d'environnement du .Renviron. +#' @param ... eventuels autres arguments de la fonction d'ouverture de connexion `connect_to_db` #' #' @return les commentaires recherches dans un dataframe de 4 champs (nom_schema, nom_table, nom_col, commentaire) et autant de lignes que de champs de la table commentes #' @export @@ -174,10 +179,10 @@ get_table_comment <- function(table = NULL, schema = NULL, db = "public", user = #' @importFrom DBI dbGetQuery #' @importFrom dplyr filter distinct #' @importFrom rlang .data -get_cols_comment <- function(table = NULL, schema = NULL, db = "public", user = "does", server = NULL) { +get_cols_comment <- function(table = NULL, schema = NULL, db = "public", user = "does", server = NULL, ...) { - # ouverture de la connexion avec DBI::dbDriver("PostgreSQL") - con <- connect_to_db(db = db, user = user, server = server) + # ouverture de la connexion avec DBI::dbDriver("PostgreSQL") ou `DBI::dbDriver("PostgreSQL")` si `ecoSQL = TRUE` + con <- connect_to_db(db = db, user = user, server = server, ...) # verification de la validite des arguments attempt::stop_if(table, is.null, msg = "L\'argument table n\'est pas renseign\u00e9. ") @@ -204,6 +209,7 @@ get_cols_comment <- function(table = NULL, schema = NULL, db = "public", user = #' @param db : Le nom de la base qui contient la table dont on recherche le descriptif. #' @param user : L'identifiant de l'utilisateur SGBD qui se connecte. #' @param server L'adresse ip du serveur, laisser à NULL pour utiliser le variable d'environnement du .Renviron. +#' @param ... eventuels autres arguments de la fonction d'ouverture de connexion `connect_to_db` #' #' @return les commentaires recherches dans un dataframe de 4 champs (nom_schema, nom_table, commentaire) et autant de lignes que de champs de la table commentes + 1 ligne pour la table #' @importFrom DBI dbDisconnect @@ -216,10 +222,10 @@ get_cols_comment <- function(table = NULL, schema = NULL, db = "public", user = #' user = "does", server = "localhost") #'} -get_table_comments <- function(table = NULL, schema = NULL, db = "public", user = "does", server = NULL) { +get_table_comments <- function(table = NULL, schema = NULL, db = "public", user = "does", server = NULL, ...) { - # ouverture de la connexion avec DBI::dbDriver("PostgreSQL") - con <- connect_to_db(db = db, user = user, server = server) + # ouverture de la connexion avec DBI::dbDriver("PostgreSQL") ou `DBI::dbDriver("PostgreSQL")` si `ecoSQL = TRUE` + con <- connect_to_db(db = db, user = user, server = server, ...) com <- dplyr::bind_rows( get_table_comment(table = table, schema = schema, db = db, user = user, server = server), @@ -243,6 +249,7 @@ get_table_comments <- function(table = NULL, schema = NULL, db = "public", user #' @param db_dest : Le nom de la base qui contient la table que l'on souhaite decrire. #' @param user : L'identifiant de l'utilisateur SGBD qui se connecte. #' @param server L'adresse ip du serveur, laisser à NULL pour utiliser le variable d'environnement du .Renviron. +#' @param ... eventuels autres arguments de la fonction d'ouverture de connexion `connect_to_db` #' #' @return NULL #' @export @@ -255,10 +262,10 @@ get_table_comments <- function(table = NULL, schema = NULL, db = "public", user #' } transferer_table_comments <- function(table_sce = NULL, schema_sce = NULL, db_sce = "public", table_dest = table_sce, schema_dest = NULL, db_dest = "public", - user = "does", server = NULL) { + user = "does", server = NULL, ...) { - # ouverture de la connexion avec DBI::dbDriver("PostgreSQL") - con_dest <- connect_to_db(db = db_dest, user = user, server = server) + # ouverture de la connexion avec DBI::dbDriver("PostgreSQL") ou `DBI::dbDriver("PostgreSQL")` si `ecoSQL = TRUE` + con_dest <- connect_to_db(db = db_dest, user = user, server = server, ...) # recuperation des commentaire de la table source tb_comment <- get_table_comments(table = table_sce, schema = schema_sce, db = db_sce, user = user, server = server) @@ -291,6 +298,7 @@ transferer_table_comments <- function(table_sce = NULL, schema_sce = NULL, db_sc #' @param server L'adresse ip du serveur, laisser à NULL pour utiliser le variable d'environnement du .Renviron. #' @param fichier L'adresse et le nom du fichier csv a creer, contenant le dictionnaire d'attributs et le commentaire de la tables a exporter. #' @param import booleen, TRUE si on souhaite egalement charger la table dans l'environnement R (FALSE par defaut). +#' @param ... eventuels autres arguments de la fonction d'ouverture de connexion `connect_to_db` #' #' @return les commentaires recherches dans un dataframe de 4 champs (nom_schema, nom_table, commentaire) et autant de lignes que de champs de la table commentes + 1 ligne pour le commentaire de table. #' @importFrom utils write.csv2 @@ -303,8 +311,8 @@ transferer_table_comments <- function(table_sce = NULL, schema_sce = NULL, db_sc #'} exporter_table_comments <- function(table = NULL, schema = NULL, db = "public", user = "does", server = NULL, - fichier = "dico_var.csv", import = FALSE) { - a <- get_table_comments(table = table, schema = schema, db = db , user = user, server = server) + fichier = "dico_var.csv", import = FALSE, ...) { + a <- get_table_comments(table = table, schema = schema, db = db , user = user, server = server, ...) utils::write.csv2(x = a, file = fichier, na = "", row.names = FALSE, fileEncoding = "utf-8") message("Export du dictionnaire des variables csv '", fichier, "'.") if(import) {return(a)} diff --git a/R/commenter_table.R b/R/commenter_table.R index c124a5b..1512d90 100644 --- a/R/commenter_table.R +++ b/R/commenter_table.R @@ -5,6 +5,7 @@ #' @param schema : Le nom du schema qui contient la table a commenter. #' @param db : Le nom de la base qui contient la table a commenter. #' @param user : L'identifiant de l'utilisateur SGBD qui se connecte. +#' @param ... eventuels autres arguments de la fonction d'ouverture de connexion `connect_to_db` #' #' @importFrom attempt stop_if stop_if_not #' @importFrom DBI dbDisconnect @@ -19,10 +20,10 @@ #' schema = "public", db = "public", user = "does") #' } -commenter_table <- function(comment = NULL, table = NULL, schema = NULL, db = "public", user = "does") { +commenter_table <- function(comment = NULL, table = NULL, schema = NULL, db = "public", user = "does", ...) { - # ouverture de la connexion avec DBI::dbDriver("PostgreSQL") - con <- connect_to_db(db, user) + # ouverture de la connexion avec DBI::dbDriver("PostgreSQL") ou `DBI::dbDriver("PostgreSQL")` si `ecoSQL = TRUE` + con <- connect_to_db(db, user, ...) # verification de la validite des arguments attempt::stop_if(comment, is.null, msg = "L'argument comment n\'est pas renseign\u00e9. ") diff --git a/R/connect_to_db.R b/R/connect_to_db.R index 04f03fc..7398544 100644 --- a/R/connect_to_db.R +++ b/R/connect_to_db.R @@ -5,7 +5,9 @@ #' @param user_id le nom utilisateur avec lequel se connecter tel que renseigné dans votre renviron #' @param user_pwd le mot de passe avec lequel se connecter tel que renseigné dans votre renviron #' @param server l'adresse ip du serveur, laisser à NULL pour utiliser le variable d'environnement du .Renviron -#' @return La fonction cree un connecteur pour se connecter à la base posgresql du serveur via le driver DBI "PostgreSQL". +#' @param ecoSQL mettre à TRUE pour switcher vers un driver adapté à l'usage de l'offre d'hébergement de base EcoSQL (Experimental) +#' @param ... eventuels autres arguments de la fonction d'ouverture de connexion `connect_to_db` +#' @return La fonction cree un connecteur pour se connecter à la base posgresql du serveur via le driver DBI "PostgreSQL" ou `RPostgres::Postgres()` si `ecoSQL = TRUE`. #' @importFrom DBI dbDriver dbConnect #' @importFrom odbc odbc #' @importFrom glue glue @@ -19,9 +21,15 @@ connect_to_db <- function(db = "datamart", user = "does", user_id = paste0("user_", user), user_pwd = paste0("pwd_", user), - server = NULL){ + server = NULL, + ecoSQL = FALSE, + ...){ - drv <- DBI::dbDriver("PostgreSQL") + if(ecoSQL) { + drv <- RPostgres::Postgres() + } else { + drv <- DBI::dbDriver("PostgreSQL") + } if(is.null(server)) {server <- Sys.getenv("server")} @@ -30,8 +38,8 @@ connect_to_db <- function(db = "datamart", host=server, port=Sys.getenv("port"), user=Sys.getenv(user_id), - password=Sys.getenv(user_pwd) - ) + password=Sys.getenv(user_pwd), + ...) return(con) } diff --git a/R/get_data.R b/R/get_data.R index 73478b6..e3a8190 100644 --- a/R/get_data.R +++ b/R/get_data.R @@ -6,6 +6,7 @@ #' @param user L'identifiant de l'utilisateur qui se connecte. #' @param server l'adresse ip du serveur, laisser à NULL pour utiliser le variable d'environnement du .Renviron #' @param limit Le nombre d'enregistrements a rapatrier, 0 pour lire toute la table. +#' @param ... eventuels autres arguments de la fonction d'ouverture de connexion `connect_to_db` #' #' @return la table de donnees, au format dataframe ou sf dataframe si une colonne de type 'USER-DEFINED' est presente dans la table sgbd #' @importFrom attempt stop_if stop_if_not @@ -25,14 +26,14 @@ #' @source {rpostgis} http://mablab.org/rpostgis/ -importer_data <- function(table = NULL, schema = NULL, db = "public", server = NULL, user = "does", limit = 0) { +importer_data <- function(table = NULL, schema = NULL, db = "public", server = NULL, user = "does", limit = 0, ...) { attempt::stop_if(table, is.null, msg = "l'argument table n'est pas renseign\u00e9") attempt::stop_if(schema, is.null, msg = "l'argument schema n'est pas renseign\u00e9") attempt::stop_if(db, is.null, msg = "l'argument db n'est pas renseign\u00e9") attempt::stop_if(user, is.null, msg = "l'argument user n'est pas renseign\u00e9") attempt::stop_if_not(limit, is.numeric, msg = "l'argument user n'est pas num\u00e9rique") - con <- connect_to_db(db = db, user = user, server = server) + con <- connect_to_db(db = db, user = user, server = server, ...) name <- c(schema, table) query_sql_limit <- paste0("SELECT * FROM ", schema, ".", table, " LIMIT ", limit) diff --git a/R/list_tables.R b/R/list_tables.R index 17cdcab..854a2ee 100644 --- a/R/list_tables.R +++ b/R/list_tables.R @@ -4,6 +4,7 @@ #' @param db Le nom de la base de donnees a laquelle se connecter pour trouver le schema, si con n'est pas renseigne. #' @param user Le nom de l'utilisateur de la connexion au serveur de donnees, si con n'est pas renseigne. #' @param schema Le nom du schéma sur le serveur de données. +#' @param ... eventuels autres arguments de la fonction d'ouverture de connexion `connect_to_db` #' @return Un vecteur de caractères avec les tables présentes sur le schéma schema du connecteur con. #' @importFrom attempt stop_if_all message_if_none stop_if stop_if_not #' @importFrom DBI dbGetQuery dbDisconnect @@ -15,7 +16,7 @@ #' list_tables(con = con, schema = "conjoncture") #' list_tables(schema = "conjoncture", db = "datamart", user = "does") #' } -list_tables <- function(con = NULL, schema = NULL, db = NULL, user = NULL) { +list_tables <- function(con = NULL, schema = NULL, db = NULL, user = NULL, ...) { connexion <- con attempt::stop_if_all(c(connexion, db, user), is.null, msg = "con, db et user ne sont pas renseign\u00e9s, merci de fournir les arguments necessaires a la connexion (soit con, soit db + user). ") attempt::stop_if_all(c(connexion, db), is.null, msg = "con et db ne sont pas renseign\u00e9s, merci de fournir les arguments necessaires a la connexion (soit con, soit db + user). ") @@ -26,7 +27,7 @@ list_tables <- function(con = NULL, schema = NULL, db = NULL, user = NULL) { con_a_creer_fermer <- FALSE # initialisation if(is.null(connexion)) { con_a_creer_fermer <- TRUE - connexion <- connect_to_db(db, user) + connexion <- connect_to_db(db, user, ...) } attempt::stop_if_not(schema, ~ .x %in% list_schemas(connexion), msg = glue::glue("{schema} n'existe pas. ")) diff --git a/R/post_data.R b/R/post_data.R index 3562b38..a461aba 100644 --- a/R/post_data.R +++ b/R/post_data.R @@ -10,6 +10,7 @@ #' @param overwrite boleen : TRUE si on veut ecraser le fichier deja present, FALSE par defaut. #' @param droits_schema boleen : TRUE (valeur par defaut) pour ajouter au niveau de la table versee les droits par defaut du schema. #' @param server l'adresse ip du serveur, laisser à NULL pour utiliser le variable d'environnement du .Renviron +#' @param ... éventuels autres arguments de la fonction d'ouverture de connexion `connect_to_db` #' @importFrom attempt stop_if stop_if_not warn_if_not #' @importFrom DBI dbExistsTable dbExecute dbGetQuery dbWriteTable dbDisconnect #' @importFrom dplyr mutate across relocate @@ -39,10 +40,11 @@ poster_data <- function(data = NULL, overwrite = FALSE, droits_schema = TRUE, user = "does", - server = NULL) { + server = NULL, + ...) { - # ouverture de la connexion avec DBI::dbDriver("PostgreSQL")---------------- - con <- connect_to_db(db = db, user = user, server = server) + # ouverture de la connexion avec DBI::dbDriver("PostgreSQL") ou `DBI::dbDriver("PostgreSQL")` si `ecoSQL = TRUE`---------------- + con <- connect_to_db(db = db, user = user, server = server, ...) # verification de la validite des arguments attempt::stop_if(data, is.null, msg = "'data' n\'est pas renseign\u00e9") diff --git a/R/set_shema_rights.R b/R/set_shema_rights.R index c4b5e34..fbb6abf 100644 --- a/R/set_shema_rights.R +++ b/R/set_shema_rights.R @@ -7,6 +7,7 @@ #' @param db si con est null, le nom de la base de donnees a laquelle se connecter #' @param user le nom de l'utilisateur qui se connecte #' @param server l'adresse ip du server auquel se connecter, laisser a NULL pour utiliser l'adresse IP definie dans le .Renviron. +#' @param ... eventuels autres arguments de la fonction d'ouverture de connexion `connect_to_db` #' #' @return NULL #' @export @@ -23,14 +24,14 @@ #' set_schema_rights(schema = "public", table = "opah_r52", db = "public", user = "does") #' } -set_schema_rights <- function(schema = "public", table = NULL, con = NULL, db = "public", user = "does", server = NULL) { +set_schema_rights <- function(schema = "public", table = NULL, con = NULL, db = "public", user = "does", server = NULL, ...) { connexion <- con attempt::stop_if_all(c(connexion, db, user), is.null, msg = "con, db et user ne sont pas renseign\u00e9s, merci de fournir les arguments necessaires a la connexion (soit con, soit db + user). ") attempt::stop_if_all(c(connexion, db), is.null, msg = "con et db ne sont pas renseign\u00e9s, merci de fournir les arguments necessaires a la connexion (soit con, soit db + user). ") attempt::stop_if_all(c(connexion, user), is.null, msg = "con et user ne sont pas renseign\u00e9s, merci de fournir les arguments necessaires a la connexion (soit con, soit db + user). ") attempt::stop_if(schema, is.null, msg = "schema n'est pas renseign\u00e9. ") - if(is.null(connexion)) { con <- connect_to_db(db = db, user = user, server = server) } + if(is.null(connexion)) { con <- connect_to_db(db = db, user = user, server = server, ...) } # recuperartion de la liste des privileges par defaut du schema query <- paste0("SELECT nspname::varchar AS nom_schema, defaclobjtype::varchar AS type_obj, defaclacl::varchar AS liste_priv FROM pg_default_acl a JOIN pg_namespace b ON a.defaclnamespace=b.oid WHERE nspname = '", schema,"' AND defaclobjtype = 'r';") diff --git a/man/commenter_champs.Rd b/man/commenter_champs.Rd index 6546b9e..809f02f 100644 --- a/man/commenter_champs.Rd +++ b/man/commenter_champs.Rd @@ -11,7 +11,8 @@ commenter_champs( schema = NULL, db = "public", user = "does", - server = NULL + server = NULL, + ... ) } \arguments{ @@ -28,6 +29,8 @@ commenter_champs( \item{user}{: L'identifiant de l'utilisateur SGBD qui se connecte.} \item{server}{l'adresse ip du serveur, laisser à NULL pour utiliser le variable d'environnement du .Renviron} + +\item{...}{eventuels autres arguments de la fonction d'ouverture de connexion \code{connect_to_db}} } \description{ commenter_champs : ajouter (ou remplacer) un commentaire de champ d'une table dans le SGBD diff --git a/man/commenter_schema.Rd b/man/commenter_schema.Rd index f2c14b8..aa56e42 100644 --- a/man/commenter_schema.Rd +++ b/man/commenter_schema.Rd @@ -4,7 +4,13 @@ \alias{commenter_schema} \title{commenter_schema : ajouter (ou remplacer) un commentaire pour un schema du SGBD} \usage{ -commenter_schema(comment = NULL, schema = NULL, db = "public", user = "does") +commenter_schema( + comment = NULL, + schema = NULL, + db = "public", + user = "does", + ... +) } \arguments{ \item{comment}{: le texte du commentaire a poster} @@ -14,6 +20,8 @@ commenter_schema(comment = NULL, schema = NULL, db = "public", user = "does") \item{db}{: le nom de la base qui contient le schema a commenter} \item{user}{: l'identifiant de l'utilisateur SGBD qui se connecte} + +\item{...}{eventuels autres arguments de la fonction d'ouverture de connexion \code{connect_to_db}} } \description{ commenter_schema : ajouter (ou remplacer) un commentaire pour un schema du SGBD diff --git a/man/commenter_table.Rd b/man/commenter_table.Rd index adcac98..8e30d6e 100644 --- a/man/commenter_table.Rd +++ b/man/commenter_table.Rd @@ -9,7 +9,8 @@ commenter_table( table = NULL, schema = NULL, db = "public", - user = "does" + user = "does", + ... ) } \arguments{ @@ -22,6 +23,8 @@ commenter_table( \item{db}{: Le nom de la base qui contient la table a commenter.} \item{user}{: L'identifiant de l'utilisateur SGBD qui se connecte.} + +\item{...}{eventuels autres arguments de la fonction d'ouverture de connexion \code{connect_to_db}} } \description{ commenter_table : ajouter (ou remplacer) un commentaire de table dans le SGBD diff --git a/man/connect_to_db.Rd b/man/connect_to_db.Rd index e4933e6..5b0d13a 100644 --- a/man/connect_to_db.Rd +++ b/man/connect_to_db.Rd @@ -9,7 +9,9 @@ connect_to_db( user = "does", user_id = paste0("user_", user), user_pwd = paste0("pwd_", user), - server = NULL + server = NULL, + ecoSQL = FALSE, + ... ) } \arguments{ @@ -22,9 +24,13 @@ connect_to_db( \item{user_pwd}{le mot de passe avec lequel se connecter tel que renseigné dans votre renviron} \item{server}{l'adresse ip du serveur, laisser à NULL pour utiliser le variable d'environnement du .Renviron} + +\item{ecoSQL}{mettre à TRUE pour switcher vers un driver adapté à l'usage de l'offre d'hébergement de base EcoSQL (Experimental)} + +\item{...}{eventuels autres arguments de la fonction d'ouverture de connexion \code{connect_to_db}} } \value{ -La fonction cree un connecteur pour se connecter à la base posgresql du serveur via le driver DBI "PostgreSQL". +La fonction cree un connecteur pour se connecter à la base posgresql du serveur via le driver DBI "PostgreSQL" ou \code{RPostgres::Postgres()} si \code{ecoSQL = TRUE}. } \description{ Connexion au serveur datamart diff --git a/man/exporter_table_comments.Rd b/man/exporter_table_comments.Rd index 7a83e55..5717810 100644 --- a/man/exporter_table_comments.Rd +++ b/man/exporter_table_comments.Rd @@ -11,7 +11,8 @@ exporter_table_comments( user = "does", server = NULL, fichier = "dico_var.csv", - import = FALSE + import = FALSE, + ... ) } \arguments{ @@ -28,6 +29,8 @@ exporter_table_comments( \item{fichier}{L'adresse et le nom du fichier csv a creer, contenant le dictionnaire d'attributs et le commentaire de la tables a exporter.} \item{import}{booleen, TRUE si on souhaite egalement charger la table dans l'environnement R (FALSE par defaut).} + +\item{...}{eventuels autres arguments de la fonction d'ouverture de connexion \code{connect_to_db}} } \value{ les commentaires recherches dans un dataframe de 4 champs (nom_schema, nom_table, commentaire) et autant de lignes que de champs de la table commentes + 1 ligne pour le commentaire de table. diff --git a/man/get_cols_comment.Rd b/man/get_cols_comment.Rd index f3a570f..a185f50 100644 --- a/man/get_cols_comment.Rd +++ b/man/get_cols_comment.Rd @@ -9,7 +9,8 @@ get_cols_comment( schema = NULL, db = "public", user = "does", - server = NULL + server = NULL, + ... ) } \arguments{ @@ -22,6 +23,8 @@ get_cols_comment( \item{user}{: L'identifiant de l'utilisateur SGBD qui se connecte.} \item{server}{l'adresse ip du serveur, laisser à NULL pour utiliser le variable d'environnement du .Renviron.} + +\item{...}{eventuels autres arguments de la fonction d'ouverture de connexion \code{connect_to_db}} } \value{ les commentaires recherches dans un dataframe de 4 champs (nom_schema, nom_table, nom_col, commentaire) et autant de lignes que de champs de la table commentes diff --git a/man/get_db_comment.Rd b/man/get_db_comment.Rd index 04af1f1..a6951f6 100644 --- a/man/get_db_comment.Rd +++ b/man/get_db_comment.Rd @@ -4,7 +4,7 @@ \alias{get_db_comment} \title{get_db_comment : Récupérer les commentaires d'une base de données sur le SGBD} \usage{ -get_db_comment(db = "public", user = "does", server = NULL) +get_db_comment(db = "public", user = "does", server = NULL, ...) } \arguments{ \item{db}{: base de données dont on recherche le descriptif.} @@ -12,6 +12,8 @@ get_db_comment(db = "public", user = "does", server = NULL) \item{user}{: l'identifiant de l'utilisateur SGBD qui se connecte} \item{server}{: l'adresse IP du serveur, laisser à NULL pour utiliser la variable d'environnement du .Renviron} + +\item{...}{eventuels autres arguments de la fonction d'ouverture de connexion \code{connect_to_db}} } \value{ le commentaire de la bases de données dans un dataframe avec les champs (nom_base, commentaire) diff --git a/man/get_schema_comment.Rd b/man/get_schema_comment.Rd index 971d60b..f68188e 100644 --- a/man/get_schema_comment.Rd +++ b/man/get_schema_comment.Rd @@ -4,7 +4,13 @@ \alias{get_schema_comment} \title{get_schema_comment : Recuperer les commentaires d'un schema sur le SGBD} \usage{ -get_schema_comment(schema = NULL, db = "public", user = "does", server = NULL) +get_schema_comment( + schema = NULL, + db = "public", + user = "does", + server = NULL, + ... +) } \arguments{ \item{schema}{: Le nom du schema sur le SGBD dont on veut recuperer la description} @@ -14,6 +20,8 @@ get_schema_comment(schema = NULL, db = "public", user = "does", server = NULL) \item{user}{: l'identifiant de l'utilisateur SGBD qui se connecte} \item{server}{l'adresse ip du serveur, laisser à NULL pour utiliser le variable d'environnement du .Renviron} + +\item{...}{eventuels autres arguments de la fonction d'ouverture de connexion \code{connect_to_db}} } \value{ le commentaire recherche dans un dataframe de 3 champs (base, nom_schema, commentaire) diff --git a/man/get_table_comment.Rd b/man/get_table_comment.Rd index 900c65d..299a878 100644 --- a/man/get_table_comment.Rd +++ b/man/get_table_comment.Rd @@ -9,7 +9,8 @@ get_table_comment( schema = NULL, db = "public", user = "does", - server = NULL + server = NULL, + ... ) } \arguments{ @@ -22,6 +23,8 @@ get_table_comment( \item{user}{: L'identifiant de l'utilisateur SGBD qui se connecte.} \item{server}{l'adresse ip du serveur, laisser à NULL pour utiliser le variable d'environnement du .Renviron} + +\item{...}{eventuels autres arguments de la fonction d'ouverture de connexion \code{connect_to_db}} } \value{ le commentaire recherche dans un dataframe de 3 champs (nom_schema, nom_table, commentaire) et une ligne diff --git a/man/get_table_comments.Rd b/man/get_table_comments.Rd index c9705d2..0fd6d76 100644 --- a/man/get_table_comments.Rd +++ b/man/get_table_comments.Rd @@ -9,7 +9,8 @@ get_table_comments( schema = NULL, db = "public", user = "does", - server = NULL + server = NULL, + ... ) } \arguments{ @@ -22,6 +23,8 @@ get_table_comments( \item{user}{: L'identifiant de l'utilisateur SGBD qui se connecte.} \item{server}{L'adresse ip du serveur, laisser à NULL pour utiliser le variable d'environnement du .Renviron.} + +\item{...}{eventuels autres arguments de la fonction d'ouverture de connexion \code{connect_to_db}} } \value{ les commentaires recherches dans un dataframe de 4 champs (nom_schema, nom_table, commentaire) et autant de lignes que de champs de la table commentes + 1 ligne pour la table diff --git a/man/importer_data.Rd b/man/importer_data.Rd index 00867d1..323a650 100644 --- a/man/importer_data.Rd +++ b/man/importer_data.Rd @@ -13,7 +13,8 @@ importer_data( db = "public", server = NULL, user = "does", - limit = 0 + limit = 0, + ... ) } \arguments{ @@ -28,6 +29,8 @@ importer_data( \item{user}{L'identifiant de l'utilisateur qui se connecte.} \item{limit}{Le nombre d'enregistrements a rapatrier, 0 pour lire toute la table.} + +\item{...}{eventuels autres arguments de la fonction d'ouverture de connexion \code{connect_to_db}} } \value{ la table de donnees, au format dataframe ou sf dataframe si une colonne de type 'USER-DEFINED' est presente dans la table sgbd diff --git a/man/list_tables.Rd b/man/list_tables.Rd index 41f9c42..6e9ba24 100644 --- a/man/list_tables.Rd +++ b/man/list_tables.Rd @@ -4,7 +4,7 @@ \alias{list_tables} \title{Lister les tables sur un schéma d'un connecteur.} \usage{ -list_tables(con = NULL, schema = NULL, db = NULL, user = NULL) +list_tables(con = NULL, schema = NULL, db = NULL, user = NULL, ...) } \arguments{ \item{con}{Le connecteur de classe PosgreSQLConnection, peut etre NULL si db et user sont tous deux renseignes, sera utilise par defaut si les 3 arguments renseigne.} @@ -14,6 +14,8 @@ list_tables(con = NULL, schema = NULL, db = NULL, user = NULL) \item{db}{Le nom de la base de donnees a laquelle se connecter pour trouver le schema, si con n'est pas renseigne.} \item{user}{Le nom de l'utilisateur de la connexion au serveur de donnees, si con n'est pas renseigne.} + +\item{...}{eventuels autres arguments de la fonction d'ouverture de connexion \code{connect_to_db}} } \value{ Un vecteur de caractères avec les tables présentes sur le schéma schema du connecteur con. diff --git a/man/post_dico_attr.Rd b/man/post_dico_attr.Rd index 2fab65f..36ae934 100644 --- a/man/post_dico_attr.Rd +++ b/man/post_dico_attr.Rd @@ -10,7 +10,8 @@ post_dico_attr( schema = NULL, db = "public", user = "does", - server = NULL + server = NULL, + ... ) } \arguments{ @@ -25,6 +26,8 @@ post_dico_attr( \item{user}{: L'identifiant de l'utilisateur SGBD qui se connecte.} \item{server}{l'adresse ip du serveur, laisser à NULL pour utiliser le variable d'environnement du .Renviron} + +\item{...}{eventuels autres arguments de la fonction d'ouverture de connexion \code{connect_to_db}} } \description{ Postage de commentaires sur tous ou certains champs d'une table SGBD a partir d'un dataframe dictionnaire d'attributs diff --git a/man/poster_data.Rd b/man/poster_data.Rd index dffa050..e2aa254 100644 --- a/man/poster_data.Rd +++ b/man/poster_data.Rd @@ -17,7 +17,8 @@ poster_data( overwrite = FALSE, droits_schema = TRUE, user = "does", - server = NULL + server = NULL, + ... ) } \arguments{ @@ -40,6 +41,8 @@ poster_data( \item{user}{Le nom d'utilisateur pour se connecter au SGBD.} \item{server}{l'adresse ip du serveur, laisser à NULL pour utiliser le variable d'environnement du .Renviron} + +\item{...}{éventuels autres arguments de la fonction d'ouverture de connexion \code{connect_to_db}} } \value{ NULL, la fonction verse le dataset de l'environnement R sur le serveur de donnees. diff --git a/man/set_schema_rights.Rd b/man/set_schema_rights.Rd index f42f7b6..34b7d79 100644 --- a/man/set_schema_rights.Rd +++ b/man/set_schema_rights.Rd @@ -10,7 +10,8 @@ set_schema_rights( con = NULL, db = "public", user = "does", - server = NULL + server = NULL, + ... ) } \arguments{ @@ -25,6 +26,8 @@ set_schema_rights( \item{user}{le nom de l'utilisateur qui se connecte} \item{server}{l'adresse ip du server auquel se connecter, laisser a NULL pour utiliser l'adresse IP definie dans le .Renviron.} + +\item{...}{eventuels autres arguments de la fonction d'ouverture de connexion \code{connect_to_db}} } \description{ set_schema_rights() permet d'actualiser les privileges d'une ou de toutes les tables d'un schema a partir des privileges definis au niveau du schema diff --git a/man/transferer_table_comments.Rd b/man/transferer_table_comments.Rd index b4f521e..a4398c6 100644 --- a/man/transferer_table_comments.Rd +++ b/man/transferer_table_comments.Rd @@ -12,7 +12,8 @@ transferer_table_comments( schema_dest = NULL, db_dest = "public", user = "does", - server = NULL + server = NULL, + ... ) } \arguments{ @@ -31,6 +32,8 @@ transferer_table_comments( \item{user}{: L'identifiant de l'utilisateur SGBD qui se connecte.} \item{server}{L'adresse ip du serveur, laisser à NULL pour utiliser le variable d'environnement du .Renviron.} + +\item{...}{eventuels autres arguments de la fonction d'ouverture de connexion \code{connect_to_db}} } \description{ transferer les commentaires d'une table et de ses champs à une autre table identique sur le SGBD -- GitLab