diff --git a/DESCRIPTION b/DESCRIPTION index 4a718d5144453787d9d1ecf9585fdae926b5e648..829f60755c7fd94355e0b40f915174bde1ab61f9 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: datalibaba Title: Interface De Connexion a Une Base Posgres Postgis -Version: 0.0.0.9005 +Version: 0.0.0.9006 Authors@R: c(person(given = "Maël", family = "Theulière", diff --git a/NAMESPACE b/NAMESPACE index c863c61df022ab006574697fea9bc933742381d9..525ea81d5b188469e0831f957d233e68a7957eb4 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -11,6 +11,8 @@ export(exporter_table_comments) export(get_cols_comment) export(get_data) export(get_data_dbi) +export(get_db_comment) +export(get_schema_comment) export(get_table_comment) export(get_table_comments) export(importer_data) diff --git a/NEWS.md b/NEWS.md index bbfaf469fbb9cb50eb8df6fcd18841a2564bd1f6..54acdbc21b3f898111acfc7a4a9a3346c9ed8579 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,3 +1,6 @@ +# datalibaba 0.0.0.9006 +- Ajout de la fonction `get_db_comment()` pour récupérer le descriptif d'une base + # datalibaba 0.0.0.9005 - Ajout de la fonction `get_schema_comment()` pour récupérer le descriptif d'un schéma diff --git a/R/comment_db.R b/R/comment_db.R new file mode 100644 index 0000000000000000000000000000000000000000..1e924dd8c18737253a0f87535c2e3cc9cafa36f9 --- /dev/null +++ b/R/comment_db.R @@ -0,0 +1,99 @@ +#' get_db_comment : Récupérer les commentaires d'une base de données sur le SGBD +#' +#' @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 +#' @return le commentaire de la bases de données dans un dataframe avec les champs (nom_base, commentaire) +#' +#' @export +#' @importFrom attempt stop_if_not stop_if +#' @importFrom DBI dbGetQuery +#' @importFrom dplyr transmute +#' @importFrom rlang .data + + +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) + + # 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();" + + # Récupération du commentaire + com <- DBI::dbGetQuery(conn = con, statement = query) %>% + dplyr::transmute(nom_base = .data$nom_base, commentaire = .data$commentaire) + + # Déconnexion de la base de données + DBI::dbDisconnect(con) + rm(con) + + return(com) +} + + + +#' commenter_schema : ajouter (ou remplacer) un commentaire pour un schema du SGBD +#' +#' @param comment : le texte du commentaire a poster +#' @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 +#' @importFrom attempt stop_if +#' @importFrom DBI dbDisconnect +#' @importFrom rpostgis dbComment +#' @return NULL +#' @export +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) + + # verification de la validite des arguments + attempt::stop_if(comment, is.null, msg = "L'argument comment n\'est pas renseign\u00e9. ") + attempt::stop_if(schema, is.null, msg = "L'argument schema n\'est pas renseign\u00e9. ") + + comment2 <- enc2utf8(comment) + + rpostgis::dbComment(conn = con, name = schema, comment = comment2, type = "schema", exec = TRUE) + + DBI::dbDisconnect(con) + + 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) +} + diff --git a/R/commenter_table.R b/R/commenter_table.R index 37ddcbac0fbffcc9028740550bab3982415ae04b..c124a5bcecf814ea2e0c6e061dac8ed92b35e1af 100644 --- a/R/commenter_table.R +++ b/R/commenter_table.R @@ -44,67 +44,4 @@ commenter_table <- function(comment = NULL, table = NULL, schema = NULL, db = " -#' commenter_schema : ajouter (ou remplacer) un commentaire pour un schema du SGBD -#' -#' @param comment : le texte du commentaire a poster -#' @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 -#' @importFrom attempt stop_if -#' @importFrom DBI dbDisconnect -#' @importFrom rpostgis dbComment -#' @return NULL -#' @export -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) - - # verification de la validite des arguments - attempt::stop_if(comment, is.null, msg = "L'argument comment n\'est pas renseign\u00e9. ") - attempt::stop_if(schema, is.null, msg = "L'argument schema n\'est pas renseign\u00e9. ") - - comment2 <- enc2utf8(comment) - - rpostgis::dbComment(conn = con, name = schema, comment = comment2, type = "schema", exec = TRUE) - - DBI::dbDisconnect(con) - - 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) -} diff --git a/man/commenter_schema.Rd b/man/commenter_schema.Rd index 6e6a666a5cd9026b12e329a6c8d20bd6f78cb799..f2c14b81185c1b29688b20893aafea954d98ab4c 100644 --- a/man/commenter_schema.Rd +++ b/man/commenter_schema.Rd @@ -1,5 +1,5 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/commenter_table.R +% Please edit documentation in R/comment_db.R \name{commenter_schema} \alias{commenter_schema} \title{commenter_schema : ajouter (ou remplacer) un commentaire pour un schema du SGBD} diff --git a/man/get_db_comment.Rd b/man/get_db_comment.Rd new file mode 100644 index 0000000000000000000000000000000000000000..04af1f1851cc7954f7bcc71e6ae9d6ef11ece221 --- /dev/null +++ b/man/get_db_comment.Rd @@ -0,0 +1,21 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/comment_db.R +\name{get_db_comment} +\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) +} +\arguments{ +\item{db}{: base de données dont on recherche le descriptif.} + +\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} +} +\value{ +le commentaire de la bases de données dans un dataframe avec les champs (nom_base, commentaire) +} +\description{ +get_db_comment : Récupérer les commentaires d'une base de données sur le SGBD +} diff --git a/man/get_schema_comment.Rd b/man/get_schema_comment.Rd new file mode 100644 index 0000000000000000000000000000000000000000..971d60be8c217ff8b4f476930954714891c9244a --- /dev/null +++ b/man/get_schema_comment.Rd @@ -0,0 +1,23 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/comment_db.R +\name{get_schema_comment} +\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) +} +\arguments{ +\item{schema}{: Le nom du schema sur le SGBD dont on veut recuperer la description} + +\item{db}{: Le nom de la base qui contient le schema dont on recherche le descriptif.} + +\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} +} +\value{ +le commentaire recherche dans un dataframe de 3 champs (base, nom_schema, commentaire) +} +\description{ +get_schema_comment : Recuperer les commentaires d'un schema sur le SGBD +}