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