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
8 files
+ 150
65
Compare changes
  • Side-by-side
  • Inline
Files
8
R/comment_db.R 0 → 100644
+ 99
0
#' 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)
}
Loading