diff --git a/DESCRIPTION b/DESCRIPTION index 81986661d0207044875675b8604ca25a71bf0349..4a718d5144453787d9d1ecf9585fdae926b5e648 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 2064263cba270a74238e416530483b771e713061..bbfaf469fbb9cb50eb8df6fcd18841a2564bd1f6 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 3e08b762fa3bf54c726d306ba9b5f335c55e3b5c..37ddcbac0fbffcc9028740550bab3982415ae04b 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) +}