Skip to content
Snippets Groups Projects

#28 création d'une fonction qui récupère les commentaires d'une base de données sur le SGBD

Merged #28 création d'une fonction qui récupère les commentaires d'une base de données sur le SGBD
7 files
+ 98
77
Compare changes
  • Side-by-side
  • Inline
Files
7
  • - incrémentation du news.md et du num de version du package
    - fonctions liées aux commentaires de schémas mise dans le même script que celui des commentaires de bases
    
    ── R CMD check results ──────────────────────── datalibaba 0.0.0.9006 ────
    Duration: 4m 8.9s
    
    0 errors :heavy_check_mark: | 0 warnings :heavy_check_mark: | 0 notes :heavy_check_mark:
    
    R CMD check succeeded
+ 48
13
#' get_db_comment : Récupérer les commentaires d'une base de données sur le SGBD
#' commenter_schema : ajouter (ou remplacer) un commentaire pour un schema du SGBD
#'
#' @param db : base de données dont on recherche le descriptif.
#' @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
#' @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)
#' @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
@@ -12,18 +44,21 @@
#' @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)
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 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();"
# construction de la requete sql
query <- paste0("SELECT obj_description('", schema, "'::regnamespace) AS commentaire;")
# cupération du commentaire
com <- DBI::dbGetQuery(conn = con, statement = query) %>%
dplyr::transmute(nom_base = .data$nom_base, commentaire = .data$commentaire)
# recupération du commentaire du schema
com <- DBI::dbGetQuery(conn = con, statement = query ) %>%
dplyr::transmute(nom_schema = schema, commentaire = .data$commentaire)
# Déconnexion de la base de données
DBI::dbDisconnect(con)
rm(con)
Loading