From b74f9584a0cd629265417d5734d5d0bd54a4ac0e Mon Sep 17 00:00:00 2001 From: SMAH Lisa <lisa.smah@developpement-durable.gouv.fr> Date: Wed, 10 Apr 2024 16:55:07 +0000 Subject: [PATCH] =?UTF-8?q?Resolve=20"Cr=C3=A9er=20une=20fonction=20qui=20?= =?UTF-8?q?r=C3=A9cup=C3=A8re=20les=20commentaires=20d'un=20sch=C3=A9ma"?= =?UTF-8?q?=20vers=20master?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DESCRIPTION | 2 +- NEWS.md | 3 +++ R/commenter_table.R | 35 +++++++++++++++++++++++++++++++++++ 3 files changed, 39 insertions(+), 1 deletion(-) diff --git a/DESCRIPTION b/DESCRIPTION index 8198666..4a718d5 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: datalibaba Title: Interface De Connexion a Une Base Posgres Postgis -Version: 0.0.0.9004 +Version: 0.0.0.9005 Authors@R: c(person(given = "Maël", family = "Theulière", diff --git a/NEWS.md b/NEWS.md index 2064263..bbfaf46 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,3 +1,6 @@ +# datalibaba 0.0.0.9005 +- Ajout de la fonction `get_schema_comment()` pour récupérer le descriptif d'un schéma + # datalibaba 0.0.0.9004 - Meilleure gestion des facteurs ( encodage + échappement du caractère spécial " dans les levels) diff --git a/R/commenter_table.R b/R/commenter_table.R index 3e08b76..37ddcba 100644 --- a/R/commenter_table.R +++ b/R/commenter_table.R @@ -73,3 +73,38 @@ commenter_schema <- function(comment = NULL, schema = NULL, db = "public", user return(invisible(NULL)) } +#' get_schema_comment : Recuperer les commentaires d'un schema sur le SGBD +#' +#' @param schema : Le nom du schema sur le SGBD dont on veut recuperer la description +#' @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 +#' @return le commentaire recherche dans un dataframe de 3 champs (base, nom_schema, commentaire) +#' +#' @export +#' @importFrom attempt stop_if_not stop_if +#' @importFrom DBI dbGetQuery +#' @importFrom dplyr transmute +#' @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) + + # verification de la validite des arguments + attempt::stop_if(schema, is.null, msg = "L\'argument schema n\'est pas renseign\u00e9. ") + attempt::stop_if_not(schema %in% list_schemas(con), msg = glue::glue("Il n\'y a pas de schema {schema} dans la base de donn\u00e9es. ")) + + # construction de la requete sql + query <- paste0("SELECT obj_description('", schema, "'::regnamespace) AS commentaire;") + + # recupération du commentaire du schema + com <- DBI::dbGetQuery(conn = con, statement = query ) %>% + dplyr::transmute(nom_schema = schema, commentaire = .data$commentaire) + + DBI::dbDisconnect(con) + rm(con) + + return(com) +} -- GitLab