From b2c6b1b7addea6cfe9cc0578e0a8201210df1e1e Mon Sep 17 00:00:00 2001
From: Juliette Engelaere-Lefebvre
 <juliette.engelaere@developpement-durable.gouv.fr>
Date: Fri, 13 Sep 2024 16:19:06 +0200
Subject: [PATCH] =?UTF-8?q?Ajout=20d'un=20parametre=20`ecoSQL`=20=C3=A0=20?=
 =?UTF-8?q?la=20fonction=20connect=5Fto=5Fdb=20pour=20switcher=20vers=20un?=
 =?UTF-8?q?=20driver=20adapt=C3=A9=20=C3=A0=20l'offre=20SGBD=20ecoSQL?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

relates #18
---
 DESCRIPTION                      |  6 ++--
 NEWS.md                          |  3 ++
 R/comment_db.R                   | 19 +++++++------
 R/commenter_champs.R             | 48 +++++++++++++++++++-------------
 R/commenter_table.R              |  7 +++--
 R/connect_to_db.R                | 18 ++++++++----
 R/get_data.R                     |  5 ++--
 R/list_tables.R                  |  5 ++--
 R/post_data.R                    |  8 ++++--
 R/set_shema_rights.R             |  5 ++--
 man/commenter_champs.Rd          |  5 +++-
 man/commenter_schema.Rd          | 10 ++++++-
 man/commenter_table.Rd           |  5 +++-
 man/connect_to_db.Rd             | 10 +++++--
 man/exporter_table_comments.Rd   |  5 +++-
 man/get_cols_comment.Rd          |  5 +++-
 man/get_db_comment.Rd            |  4 ++-
 man/get_schema_comment.Rd        | 10 ++++++-
 man/get_table_comment.Rd         |  5 +++-
 man/get_table_comments.Rd        |  5 +++-
 man/importer_data.Rd             |  5 +++-
 man/list_tables.Rd               |  4 ++-
 man/post_dico_attr.Rd            |  5 +++-
 man/poster_data.Rd               |  5 +++-
 man/set_schema_rights.Rd         |  5 +++-
 man/transferer_table_comments.Rd |  5 +++-
 26 files changed, 152 insertions(+), 65 deletions(-)

diff --git a/DESCRIPTION b/DESCRIPTION
index 10d72c9..7e0b5f6 100644
--- a/DESCRIPTION
+++ b/DESCRIPTION
@@ -1,6 +1,6 @@
 Package: datalibaba
 Title: Interface De Connexion a Une Base Posgres Postgis
-Version: 0.0.0.9007
+Version: 0.0.0.9008
 Authors@R: 
     c(person(given = "Maël",
              family = "Theulière",
@@ -24,6 +24,7 @@ Imports:
     odbc,
     purrr,
     rpostgis,
+    RPostgres,
     RPostgreSQL,
     sf,
     tidyselect,
@@ -35,8 +36,7 @@ Imports:
     tidyr
 Suggests: 
     knitr,
-    rmarkdown,
-    RPostgres
+    rmarkdown
 Encoding: UTF-8
 LazyData: true
 Roxygen: list(markdown = TRUE)
diff --git a/NEWS.md b/NEWS.md
index 2986b0b..1095e8b 100644
--- a/NEWS.md
+++ b/NEWS.md
@@ -1,3 +1,6 @@
+# datalibaba 0.0.0.9008
+- Ajout d'un paramètre `ecoSQL` à la fonction `connect_to_db` pour switcher de driver (passage du `DBI::dbDriver("PostgreSQL")` _par défaut si `EcoSQL = FALSE`_, à `RPostgres::Postgres()` si `ecoSQL = TRUE` adapté à l'usage de l'offre d'hébergement de base EcoSQL)
+
 # datalibaba 0.0.0.9007
 - Ajout d'un paramètre `limit` à `importer_data()` pour limiter le nombre d'enregistrement à rapatrier
 
diff --git a/R/comment_db.R b/R/comment_db.R
index 1e924dd..95396a3 100644
--- a/R/comment_db.R
+++ b/R/comment_db.R
@@ -3,6 +3,7 @@
 #' @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
+#' @param ... eventuels autres arguments de la fonction d'ouverture de connexion `connect_to_db`
 #' @return le commentaire de la bases de données dans un dataframe avec les champs (nom_base, commentaire)
 #'
 #' @export
@@ -12,9 +13,9 @@
 #' @importFrom rlang .data
 
 
-get_db_comment <- function(db = "public", user = "does", server = NULL) {
+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)
+  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();"
@@ -38,15 +39,16 @@ get_db_comment <- function(db = "public", user = "does", server = NULL) {
 #' @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 ... eventuels autres arguments de la fonction d'ouverture de connexion `connect_to_db`
 #' @importFrom attempt stop_if
 #' @importFrom DBI dbDisconnect
 #' @importFrom rpostgis dbComment
 #' @return NULL
 #' @export
-commenter_schema <- function(comment = NULL, schema = NULL, db  = "public", user = "does") {
+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)
+  # ouverture de la connexion avec DBI::dbDriver("PostgreSQL") ou  `DBI::dbDriver("PostgreSQL")` si `ecoSQL = TRUE`
+  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. ")
@@ -67,6 +69,7 @@ commenter_schema <- function(comment = NULL, schema = NULL, db  = "public", user
 #' @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
+#' @param ... eventuels autres arguments de la fonction d'ouverture de connexion `connect_to_db`
 #' @return le commentaire recherche dans un dataframe de 3 champs (base, nom_schema, commentaire)
 #'
 #' @export
@@ -76,9 +79,9 @@ commenter_schema <- function(comment = NULL, schema = NULL, db  = "public", user
 #' @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)
+get_schema_comment <- function(schema = NULL, db = "public", user = "does", server = NULL, ...) {
+  # ouverture de la connexion avec DBI::dbDriver("PostgreSQL") ou  `DBI::dbDriver("PostgreSQL")` si `ecoSQL = TRUE`
+  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. ")
diff --git a/R/commenter_champs.R b/R/commenter_champs.R
index 61c6256..8ae4d8c 100644
--- a/R/commenter_champs.R
+++ b/R/commenter_champs.R
@@ -8,6 +8,7 @@
 #' @param db : Le nom de la base qui contient la table a commenter.
 #' @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
+#' @param ... eventuels autres arguments de la fonction d'ouverture de connexion `connect_to_db`
 #'
 #' @importFrom attempt stop_if stop_if_not
 #' @importFrom DBI dbSendQuery dbDisconnect
@@ -23,10 +24,11 @@
 #'                  schema = "public", db = "public", user = "does")
 #' }
 
-commenter_champs <- function(comment = NULL, var = NULL, table = NULL, schema = NULL, db = "public", user = "does", server = NULL) {
+commenter_champs <- function(comment = NULL, var = NULL, table = NULL, 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)
+  # ouverture de la connexion avec DBI::dbDriver("PostgreSQL") ou  `DBI::dbDriver("PostgreSQL")` si `ecoSQL = TRUE`
+  con <- connect_to_db(db = db, user = user, server = server, ...)
 
   # verification de la validite des arguments
   attempt::stop_if(comment, is.null, msg = "L\'argument comment n\'est pas renseign\u00e9. ")
@@ -60,6 +62,7 @@ commenter_champs <- function(comment = NULL, var = NULL, table = NULL, schema =
 #' @param db : Le nom de la base qui contient la table a commenter.
 #' @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
+#' @param ... eventuels autres arguments de la fonction d'ouverture de connexion `connect_to_db`
 #'
 #' @importFrom attempt stop_if_not stop_if
 #' @importFrom DBI dbSendQuery dbDisconnect
@@ -77,10 +80,10 @@ commenter_champs <- function(comment = NULL, var = NULL, table = NULL, schema =
 #' }
 #'
 
-post_dico_attr <- function(dico = NULL, table = NULL, schema = NULL, db = "public", user = "does", server = NULL) {
+post_dico_attr <- function(dico = NULL, table = NULL, 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)
+  # ouverture de la connexion avec DBI::dbDriver("PostgreSQL") ou  `DBI::dbDriver("PostgreSQL")` si `ecoSQL = TRUE`
+  con <- connect_to_db(db = db, user = user, server = server, ...)
 
   # verification de la validite des arguments
   attempt::stop_if_not(dico, is.data.frame, msg = "L\'argument dico ne correpond pas \u00e0 un dataframe. ")
@@ -128,6 +131,7 @@ post_dico_attr <- function(dico = NULL, table = NULL, schema = NULL, db = "publi
 #' @param db : Le nom de la base qui contient la table 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
+#' @param ... eventuels autres arguments de la fonction d'ouverture de connexion `connect_to_db`
 #'
 #' @return le commentaire recherche dans un dataframe de 3 champs (nom_schema, nom_table, commentaire) et une ligne
 #' @export
@@ -136,9 +140,9 @@ post_dico_attr <- function(dico = NULL, table = NULL, schema = NULL, db = "publi
 #' @importFrom dplyr transmute
 #' @importFrom rlang .data
 #'
-get_table_comment <- function(table = NULL, 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)
+get_table_comment <- function(table = NULL, schema = NULL, db = "public", user = "does", server = NULL, ...) {
+  # ouverture de la connexion avec DBI::dbDriver("PostgreSQL") ou  `DBI::dbDriver("PostgreSQL")` si `ecoSQL = TRUE`
+  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. ")
@@ -167,6 +171,7 @@ get_table_comment <- function(table = NULL, schema = NULL, db = "public", user =
 #' @param db : Le nom de la base qui contient la table 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.
+#' @param ... eventuels autres arguments de la fonction d'ouverture de connexion `connect_to_db`
 #'
 #' @return les commentaires recherches dans un dataframe de 4 champs (nom_schema, nom_table, nom_col, commentaire) et autant de lignes que de champs de la table commentes
 #' @export
@@ -174,10 +179,10 @@ get_table_comment <- function(table = NULL, schema = NULL, db = "public", user =
 #' @importFrom DBI dbGetQuery
 #' @importFrom dplyr filter distinct
 #' @importFrom rlang .data
-get_cols_comment <- function(table = NULL, schema = NULL, db  = "public", user = "does", server = NULL) {
+get_cols_comment <- function(table = NULL, 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)
+  # ouverture de la connexion avec DBI::dbDriver("PostgreSQL") ou  `DBI::dbDriver("PostgreSQL")` si `ecoSQL = TRUE`
+  con <- connect_to_db(db = db, user = user, server = server, ...)
 
   # verification de la validite des arguments
   attempt::stop_if(table, is.null, msg = "L\'argument table n\'est pas renseign\u00e9. ")
@@ -204,6 +209,7 @@ get_cols_comment <- function(table = NULL, schema = NULL, db  = "public", user =
 #' @param db : Le nom de la base qui contient la table 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.
+#' @param ... eventuels autres arguments de la fonction d'ouverture de connexion `connect_to_db`
 #'
 #' @return les commentaires recherches dans un dataframe de 4 champs (nom_schema, nom_table, commentaire) et autant de lignes que de champs de la table commentes + 1 ligne pour la table
 #' @importFrom DBI dbDisconnect
@@ -216,10 +222,10 @@ get_cols_comment <- function(table = NULL, schema = NULL, db  = "public", user =
 #'                    user = "does", server = "localhost")
 #'}
 
-get_table_comments <- function(table = NULL, schema = NULL, db  = "public", user = "does", server = NULL) {
+get_table_comments <- function(table = NULL, 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)
+  # ouverture de la connexion avec DBI::dbDriver("PostgreSQL") ou  `DBI::dbDriver("PostgreSQL")` si `ecoSQL = TRUE`
+  con <- connect_to_db(db = db, user = user, server = server, ...)
 
   com <- dplyr::bind_rows(
     get_table_comment(table = table, schema = schema, db = db, user = user, server = server),
@@ -243,6 +249,7 @@ get_table_comments <- function(table = NULL, schema = NULL, db  = "public", user
 #' @param db_dest : Le nom de la base qui contient la table que l'on souhaite decrire.
 #' @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.
+#' @param ... eventuels autres arguments de la fonction d'ouverture de connexion `connect_to_db`
 #'
 #' @return NULL
 #' @export
@@ -255,10 +262,10 @@ get_table_comments <- function(table = NULL, schema = NULL, db  = "public", user
 #' }
 transferer_table_comments <- function(table_sce = NULL, schema_sce = NULL, db_sce = "public",
                                       table_dest = table_sce, schema_dest = NULL, db_dest = "public",
-                                      user = "does", server = NULL) {
+                                      user = "does", server = NULL, ...) {
 
-  # ouverture de la connexion avec DBI::dbDriver("PostgreSQL")
-  con_dest <- connect_to_db(db = db_dest, user = user, server = server)
+  # ouverture de la connexion avec DBI::dbDriver("PostgreSQL") ou  `DBI::dbDriver("PostgreSQL")` si `ecoSQL = TRUE`
+  con_dest <- connect_to_db(db = db_dest, user = user, server = server, ...)
 
   # recuperation des commentaire de la table source
   tb_comment <- get_table_comments(table = table_sce, schema = schema_sce, db = db_sce, user = user, server = server)
@@ -291,6 +298,7 @@ transferer_table_comments <- function(table_sce = NULL, schema_sce = NULL, db_sc
 #' @param server L'adresse ip du serveur, laisser à NULL pour utiliser le variable d'environnement du .Renviron.
 #' @param fichier L'adresse et le nom du fichier csv a creer, contenant le dictionnaire d'attributs et le commentaire de la tables a exporter.
 #' @param import booleen, TRUE si on souhaite egalement charger la table dans l'environnement R (FALSE par defaut).
+#' @param ... eventuels autres arguments de la fonction d'ouverture de connexion `connect_to_db`
 #'
 #' @return les commentaires recherches dans un dataframe de 4 champs (nom_schema, nom_table, commentaire) et autant de lignes que de champs de la table commentes + 1 ligne pour le commentaire de table.
 #' @importFrom utils write.csv2
@@ -303,8 +311,8 @@ transferer_table_comments <- function(table_sce = NULL, schema_sce = NULL, db_sc
 #'}
 
 exporter_table_comments <- function(table = NULL, schema = NULL, db  = "public", user = "does", server = NULL,
-                                    fichier = "dico_var.csv", import = FALSE) {
-  a <- get_table_comments(table = table, schema = schema, db = db , user = user, server = server)
+                                    fichier = "dico_var.csv", import = FALSE, ...) {
+  a <- get_table_comments(table = table, schema = schema, db = db , user = user, server = server, ...)
   utils::write.csv2(x = a, file = fichier, na = "", row.names = FALSE, fileEncoding = "utf-8")
   message("Export du dictionnaire des variables csv '", fichier, "'.")
   if(import) {return(a)}
diff --git a/R/commenter_table.R b/R/commenter_table.R
index c124a5b..1512d90 100644
--- a/R/commenter_table.R
+++ b/R/commenter_table.R
@@ -5,6 +5,7 @@
 #' @param schema : Le nom du schema qui contient la table a commenter.
 #' @param db : Le nom de la base qui contient la table a commenter.
 #' @param user : L'identifiant de l'utilisateur SGBD qui se connecte.
+#' @param ... eventuels autres arguments de la fonction d'ouverture de connexion `connect_to_db`
 #'
 #' @importFrom attempt stop_if stop_if_not
 #' @importFrom DBI dbDisconnect
@@ -19,10 +20,10 @@
 #'                 schema = "public", db  = "public", user = "does")
 #' }
 
-commenter_table <- function(comment = NULL, table = NULL, schema = NULL, db  = "public", user = "does") {
+commenter_table <- function(comment = NULL, table = NULL, schema = NULL, db  = "public", user = "does", ...) {
 
-  # ouverture de la connexion avec DBI::dbDriver("PostgreSQL")
-  con <- connect_to_db(db, user)
+  # ouverture de la connexion avec DBI::dbDriver("PostgreSQL") ou  `DBI::dbDriver("PostgreSQL")` si `ecoSQL = TRUE`
+  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. ")
diff --git a/R/connect_to_db.R b/R/connect_to_db.R
index 04f03fc..7398544 100644
--- a/R/connect_to_db.R
+++ b/R/connect_to_db.R
@@ -5,7 +5,9 @@
 #' @param user_id le nom utilisateur avec lequel se connecter tel que renseigné dans votre renviron
 #' @param user_pwd le mot de passe avec lequel se connecter tel que renseigné dans votre renviron
 #' @param server l'adresse ip du serveur, laisser à NULL pour utiliser le variable d'environnement du .Renviron
-#' @return La fonction cree un connecteur pour se connecter à la base posgresql du serveur via le driver DBI "PostgreSQL".
+#' @param ecoSQL mettre à TRUE pour switcher vers un driver adapté à l'usage de l'offre d'hébergement de base EcoSQL (Experimental)
+#' @param ... eventuels autres arguments de la fonction d'ouverture de connexion `connect_to_db`
+#' @return La fonction cree un connecteur pour se connecter à la base posgresql du serveur via le driver DBI "PostgreSQL" ou `RPostgres::Postgres()` si `ecoSQL = TRUE`.
 #' @importFrom DBI dbDriver dbConnect
 #' @importFrom odbc odbc
 #' @importFrom glue glue
@@ -19,9 +21,15 @@ connect_to_db <- function(db = "datamart",
                           user = "does",
                           user_id = paste0("user_", user),
                           user_pwd = paste0("pwd_", user),
-                          server = NULL){
+                          server = NULL,
+                          ecoSQL = FALSE,
+                          ...){
 
-  drv <- DBI::dbDriver("PostgreSQL")
+  if(ecoSQL) {
+    drv <- RPostgres::Postgres()
+  } else {
+    drv <- DBI::dbDriver("PostgreSQL")
+  }
 
   if(is.null(server)) {server <- Sys.getenv("server")}
 
@@ -30,8 +38,8 @@ connect_to_db <- function(db = "datamart",
                         host=server,
                         port=Sys.getenv("port"),
                         user=Sys.getenv(user_id),
-                        password=Sys.getenv(user_pwd)
-                        )
+                        password=Sys.getenv(user_pwd),
+                        ...)
 
   return(con)
 }
diff --git a/R/get_data.R b/R/get_data.R
index 73478b6..e3a8190 100644
--- a/R/get_data.R
+++ b/R/get_data.R
@@ -6,6 +6,7 @@
 #' @param user L'identifiant de l'utilisateur qui se connecte.
 #' @param server l'adresse ip du serveur, laisser à NULL pour utiliser le variable d'environnement du .Renviron
 #' @param limit Le nombre d'enregistrements a rapatrier, 0 pour lire toute la table.
+#' @param ... eventuels autres arguments de la fonction d'ouverture de connexion `connect_to_db`
 #'
 #' @return la table de donnees, au format dataframe ou sf dataframe si une colonne de type 'USER-DEFINED' est presente dans la table sgbd
 #' @importFrom attempt stop_if stop_if_not
@@ -25,14 +26,14 @@
 #' @source {rpostgis} http://mablab.org/rpostgis/
 
 
-importer_data <- function(table = NULL, schema = NULL, db  = "public", server = NULL, user = "does", limit = 0) {
+importer_data <- function(table = NULL, schema = NULL, db  = "public", server = NULL, user = "does", limit = 0, ...) {
   attempt::stop_if(table, is.null, msg = "l'argument table n'est pas renseign\u00e9")
   attempt::stop_if(schema, is.null, msg = "l'argument schema n'est pas renseign\u00e9")
   attempt::stop_if(db, is.null, msg = "l'argument db n'est pas renseign\u00e9")
   attempt::stop_if(user, is.null, msg = "l'argument user n'est pas renseign\u00e9")
   attempt::stop_if_not(limit, is.numeric, msg = "l'argument user n'est pas num\u00e9rique")
 
-  con <- connect_to_db(db = db, user = user, server = server)
+  con <- connect_to_db(db = db, user = user, server = server, ...)
   name <- c(schema, table)
   query_sql_limit <- paste0("SELECT * FROM ", schema, ".", table, " LIMIT ", limit)
 
diff --git a/R/list_tables.R b/R/list_tables.R
index 17cdcab..854a2ee 100644
--- a/R/list_tables.R
+++ b/R/list_tables.R
@@ -4,6 +4,7 @@
 #' @param db Le nom de la base de donnees a laquelle se connecter pour trouver le schema, si con n'est pas renseigne.
 #' @param user Le nom de l'utilisateur de la connexion au serveur de donnees, si con n'est pas renseigne.
 #' @param schema Le nom du schéma sur le serveur de données.
+#' @param ... eventuels autres arguments de la fonction d'ouverture de connexion `connect_to_db`
 #' @return Un vecteur de caractères avec les tables présentes sur le schéma schema du connecteur con.
 #' @importFrom attempt stop_if_all message_if_none stop_if stop_if_not
 #' @importFrom DBI dbGetQuery dbDisconnect
@@ -15,7 +16,7 @@
 #' list_tables(con = con, schema = "conjoncture")
 #' list_tables(schema = "conjoncture", db = "datamart", user = "does")
 #' }
-list_tables <- function(con = NULL, schema = NULL, db = NULL, user = NULL) {
+list_tables <- function(con = NULL, schema = NULL, db = NULL, user = NULL, ...) {
   connexion <- con
   attempt::stop_if_all(c(connexion, db, user), is.null, msg = "con, db et user ne sont pas renseign\u00e9s, merci de fournir les arguments necessaires a la connexion (soit con, soit db + user). ")
   attempt::stop_if_all(c(connexion, db), is.null, msg = "con et db ne sont pas renseign\u00e9s, merci de fournir les arguments necessaires a la connexion (soit con, soit db + user). ")
@@ -26,7 +27,7 @@ list_tables <- function(con = NULL, schema = NULL, db = NULL, user = NULL) {
   con_a_creer_fermer <- FALSE # initialisation
   if(is.null(connexion)) {
     con_a_creer_fermer <- TRUE
-    connexion <- connect_to_db(db, user)
+    connexion <- connect_to_db(db, user, ...)
   }
 
   attempt::stop_if_not(schema, ~ .x %in% list_schemas(connexion), msg = glue::glue("{schema} n'existe pas. "))
diff --git a/R/post_data.R b/R/post_data.R
index 3562b38..a461aba 100644
--- a/R/post_data.R
+++ b/R/post_data.R
@@ -10,6 +10,7 @@
 #' @param overwrite boleen : TRUE si on veut ecraser le fichier deja present, FALSE par defaut.
 #' @param droits_schema boleen : TRUE (valeur par defaut) pour ajouter au niveau de la table versee les droits par defaut du schema.
 #' @param server l'adresse ip du serveur, laisser à NULL pour utiliser le variable d'environnement du .Renviron
+#' @param ... éventuels autres arguments de la fonction d'ouverture de connexion `connect_to_db`
 #' @importFrom attempt stop_if stop_if_not warn_if_not
 #' @importFrom DBI dbExistsTable dbExecute dbGetQuery dbWriteTable dbDisconnect
 #' @importFrom dplyr mutate across relocate
@@ -39,10 +40,11 @@ poster_data <- function(data = NULL,
                         overwrite = FALSE,
                         droits_schema = TRUE,
                         user = "does",
-                        server = NULL) {
+                        server = NULL,
+                        ...) {
 
-  # ouverture de la connexion avec DBI::dbDriver("PostgreSQL")----------------
-  con <- connect_to_db(db = db, user = user, server = server)
+  # ouverture de la connexion avec DBI::dbDriver("PostgreSQL") ou  `DBI::dbDriver("PostgreSQL")` si `ecoSQL = TRUE`----------------
+  con <- connect_to_db(db = db, user = user, server = server, ...)
 
   # verification de la validite des arguments
   attempt::stop_if(data, is.null, msg = "'data' n\'est pas renseign\u00e9")
diff --git a/R/set_shema_rights.R b/R/set_shema_rights.R
index c4b5e34..fbb6abf 100644
--- a/R/set_shema_rights.R
+++ b/R/set_shema_rights.R
@@ -7,6 +7,7 @@
 #' @param db si con est null, le nom de la base de donnees a laquelle se connecter
 #' @param user le nom de l'utilisateur qui se connecte
 #' @param server l'adresse ip du server auquel se connecter, laisser a NULL pour utiliser l'adresse IP definie dans le .Renviron.
+#' @param ... eventuels autres arguments de la fonction d'ouverture de connexion `connect_to_db`
 #'
 #' @return NULL
 #' @export
@@ -23,14 +24,14 @@
 #' set_schema_rights(schema = "public", table = "opah_r52", db  = "public", user = "does")
 #' }
 
-set_schema_rights <- function(schema = "public", table = NULL, con = NULL, db  = "public", user = "does", server = NULL) {
+set_schema_rights <- function(schema = "public", table = NULL, con = NULL, db  = "public", user = "does", server = NULL, ...) {
   connexion <- con
   attempt::stop_if_all(c(connexion, db, user), is.null, msg = "con, db et user ne sont pas renseign\u00e9s, merci de fournir les arguments necessaires a la connexion (soit con, soit db + user). ")
   attempt::stop_if_all(c(connexion, db), is.null, msg = "con et db ne sont pas renseign\u00e9s, merci de fournir les arguments necessaires a la connexion (soit con, soit db + user). ")
   attempt::stop_if_all(c(connexion, user), is.null, msg = "con et user ne sont pas renseign\u00e9s, merci de fournir les arguments necessaires a la connexion (soit con, soit db + user). ")
   attempt::stop_if(schema, is.null, msg = "schema n'est pas renseign\u00e9. ")
 
-  if(is.null(connexion)) { con <- connect_to_db(db = db, user = user, server = server) }
+  if(is.null(connexion)) { con <- connect_to_db(db = db, user = user, server = server, ...) }
 
   # recuperartion de la liste des privileges par defaut du schema
   query <- paste0("SELECT nspname::varchar AS nom_schema, defaclobjtype::varchar AS type_obj, defaclacl::varchar AS liste_priv FROM pg_default_acl a JOIN pg_namespace b ON a.defaclnamespace=b.oid WHERE nspname = '", schema,"' AND defaclobjtype = 'r';")
diff --git a/man/commenter_champs.Rd b/man/commenter_champs.Rd
index 6546b9e..809f02f 100644
--- a/man/commenter_champs.Rd
+++ b/man/commenter_champs.Rd
@@ -11,7 +11,8 @@ commenter_champs(
   schema = NULL,
   db = "public",
   user = "does",
-  server = NULL
+  server = NULL,
+  ...
 )
 }
 \arguments{
@@ -28,6 +29,8 @@ commenter_champs(
 \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}
+
+\item{...}{eventuels autres arguments de la fonction d'ouverture de connexion \code{connect_to_db}}
 }
 \description{
 commenter_champs : ajouter (ou remplacer) un commentaire de champ d'une table dans le SGBD
diff --git a/man/commenter_schema.Rd b/man/commenter_schema.Rd
index f2c14b8..aa56e42 100644
--- a/man/commenter_schema.Rd
+++ b/man/commenter_schema.Rd
@@ -4,7 +4,13 @@
 \alias{commenter_schema}
 \title{commenter_schema : ajouter (ou remplacer) un commentaire pour un schema du SGBD}
 \usage{
-commenter_schema(comment = NULL, schema = NULL, db = "public", user = "does")
+commenter_schema(
+  comment = NULL,
+  schema = NULL,
+  db = "public",
+  user = "does",
+  ...
+)
 }
 \arguments{
 \item{comment}{: le texte du commentaire a poster}
@@ -14,6 +20,8 @@ commenter_schema(comment = NULL, schema = NULL, db = "public", user = "does")
 \item{db}{: le nom de la base qui contient le schema a commenter}
 
 \item{user}{: l'identifiant de l'utilisateur SGBD qui se connecte}
+
+\item{...}{eventuels autres arguments de la fonction d'ouverture de connexion \code{connect_to_db}}
 }
 \description{
 commenter_schema : ajouter (ou remplacer) un commentaire pour un schema du SGBD
diff --git a/man/commenter_table.Rd b/man/commenter_table.Rd
index adcac98..8e30d6e 100644
--- a/man/commenter_table.Rd
+++ b/man/commenter_table.Rd
@@ -9,7 +9,8 @@ commenter_table(
   table = NULL,
   schema = NULL,
   db = "public",
-  user = "does"
+  user = "does",
+  ...
 )
 }
 \arguments{
@@ -22,6 +23,8 @@ commenter_table(
 \item{db}{: Le nom de la base qui contient la table a commenter.}
 
 \item{user}{: L'identifiant de l'utilisateur SGBD qui se connecte.}
+
+\item{...}{eventuels autres arguments de la fonction d'ouverture de connexion \code{connect_to_db}}
 }
 \description{
 commenter_table : ajouter (ou remplacer) un commentaire de table dans le SGBD
diff --git a/man/connect_to_db.Rd b/man/connect_to_db.Rd
index e4933e6..5b0d13a 100644
--- a/man/connect_to_db.Rd
+++ b/man/connect_to_db.Rd
@@ -9,7 +9,9 @@ connect_to_db(
   user = "does",
   user_id = paste0("user_", user),
   user_pwd = paste0("pwd_", user),
-  server = NULL
+  server = NULL,
+  ecoSQL = FALSE,
+  ...
 )
 }
 \arguments{
@@ -22,9 +24,13 @@ connect_to_db(
 \item{user_pwd}{le mot de passe avec lequel se connecter tel que renseigné dans votre renviron}
 
 \item{server}{l'adresse ip du serveur, laisser à NULL pour utiliser le variable d'environnement du .Renviron}
+
+\item{ecoSQL}{mettre à TRUE pour switcher vers un driver adapté à l'usage de l'offre d'hébergement de base EcoSQL (Experimental)}
+
+\item{...}{eventuels autres arguments de la fonction d'ouverture de connexion \code{connect_to_db}}
 }
 \value{
-La fonction cree un connecteur pour se connecter à la base posgresql du serveur via le driver DBI "PostgreSQL".
+La fonction cree un connecteur pour se connecter à la base posgresql du serveur via le driver DBI "PostgreSQL" ou \code{RPostgres::Postgres()} si \code{ecoSQL = TRUE}.
 }
 \description{
 Connexion au serveur datamart
diff --git a/man/exporter_table_comments.Rd b/man/exporter_table_comments.Rd
index 7a83e55..5717810 100644
--- a/man/exporter_table_comments.Rd
+++ b/man/exporter_table_comments.Rd
@@ -11,7 +11,8 @@ exporter_table_comments(
   user = "does",
   server = NULL,
   fichier = "dico_var.csv",
-  import = FALSE
+  import = FALSE,
+  ...
 )
 }
 \arguments{
@@ -28,6 +29,8 @@ exporter_table_comments(
 \item{fichier}{L'adresse et le nom du fichier csv a creer, contenant le dictionnaire d'attributs et le commentaire de la tables a exporter.}
 
 \item{import}{booleen, TRUE si on souhaite egalement charger la table dans l'environnement R (FALSE par defaut).}
+
+\item{...}{eventuels autres arguments de la fonction d'ouverture de connexion \code{connect_to_db}}
 }
 \value{
 les commentaires recherches dans un dataframe de 4 champs (nom_schema, nom_table, commentaire) et autant de lignes que de champs de la table commentes + 1 ligne pour le commentaire de table.
diff --git a/man/get_cols_comment.Rd b/man/get_cols_comment.Rd
index f3a570f..a185f50 100644
--- a/man/get_cols_comment.Rd
+++ b/man/get_cols_comment.Rd
@@ -9,7 +9,8 @@ get_cols_comment(
   schema = NULL,
   db = "public",
   user = "does",
-  server = NULL
+  server = NULL,
+  ...
 )
 }
 \arguments{
@@ -22,6 +23,8 @@ get_cols_comment(
 \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.}
+
+\item{...}{eventuels autres arguments de la fonction d'ouverture de connexion \code{connect_to_db}}
 }
 \value{
 les commentaires recherches dans un dataframe de 4 champs (nom_schema, nom_table, nom_col, commentaire) et autant de lignes que de champs de la table commentes
diff --git a/man/get_db_comment.Rd b/man/get_db_comment.Rd
index 04af1f1..a6951f6 100644
--- a/man/get_db_comment.Rd
+++ b/man/get_db_comment.Rd
@@ -4,7 +4,7 @@
 \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)
+get_db_comment(db = "public", user = "does", server = NULL, ...)
 }
 \arguments{
 \item{db}{:  base de données dont on recherche le descriptif.}
@@ -12,6 +12,8 @@ get_db_comment(db = "public", user = "does", server = NULL)
 \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}
+
+\item{...}{eventuels autres arguments de la fonction d'ouverture de connexion \code{connect_to_db}}
 }
 \value{
 le commentaire de la bases de données dans un dataframe avec les champs (nom_base, commentaire)
diff --git a/man/get_schema_comment.Rd b/man/get_schema_comment.Rd
index 971d60b..f68188e 100644
--- a/man/get_schema_comment.Rd
+++ b/man/get_schema_comment.Rd
@@ -4,7 +4,13 @@
 \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)
+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}
@@ -14,6 +20,8 @@ get_schema_comment(schema = NULL, db = "public", user = "does", server = NULL)
 \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}
+
+\item{...}{eventuels autres arguments de la fonction d'ouverture de connexion \code{connect_to_db}}
 }
 \value{
 le commentaire recherche dans un dataframe de 3 champs (base, nom_schema, commentaire)
diff --git a/man/get_table_comment.Rd b/man/get_table_comment.Rd
index 900c65d..299a878 100644
--- a/man/get_table_comment.Rd
+++ b/man/get_table_comment.Rd
@@ -9,7 +9,8 @@ get_table_comment(
   schema = NULL,
   db = "public",
   user = "does",
-  server = NULL
+  server = NULL,
+  ...
 )
 }
 \arguments{
@@ -22,6 +23,8 @@ get_table_comment(
 \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}
+
+\item{...}{eventuels autres arguments de la fonction d'ouverture de connexion \code{connect_to_db}}
 }
 \value{
 le commentaire recherche dans un dataframe de 3 champs (nom_schema, nom_table, commentaire) et une ligne
diff --git a/man/get_table_comments.Rd b/man/get_table_comments.Rd
index c9705d2..0fd6d76 100644
--- a/man/get_table_comments.Rd
+++ b/man/get_table_comments.Rd
@@ -9,7 +9,8 @@ get_table_comments(
   schema = NULL,
   db = "public",
   user = "does",
-  server = NULL
+  server = NULL,
+  ...
 )
 }
 \arguments{
@@ -22,6 +23,8 @@ get_table_comments(
 \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.}
+
+\item{...}{eventuels autres arguments de la fonction d'ouverture de connexion \code{connect_to_db}}
 }
 \value{
 les commentaires recherches dans un dataframe de 4 champs (nom_schema, nom_table, commentaire) et autant de lignes que de champs de la table commentes + 1 ligne pour la table
diff --git a/man/importer_data.Rd b/man/importer_data.Rd
index 00867d1..323a650 100644
--- a/man/importer_data.Rd
+++ b/man/importer_data.Rd
@@ -13,7 +13,8 @@ importer_data(
   db = "public",
   server = NULL,
   user = "does",
-  limit = 0
+  limit = 0,
+  ...
 )
 }
 \arguments{
@@ -28,6 +29,8 @@ importer_data(
 \item{user}{L'identifiant de l'utilisateur qui se connecte.}
 
 \item{limit}{Le nombre d'enregistrements a rapatrier, 0 pour lire toute la table.}
+
+\item{...}{eventuels autres arguments de la fonction d'ouverture de connexion \code{connect_to_db}}
 }
 \value{
 la table de donnees, au format dataframe ou sf dataframe si une colonne de type 'USER-DEFINED' est presente dans la table sgbd
diff --git a/man/list_tables.Rd b/man/list_tables.Rd
index 41f9c42..6e9ba24 100644
--- a/man/list_tables.Rd
+++ b/man/list_tables.Rd
@@ -4,7 +4,7 @@
 \alias{list_tables}
 \title{Lister les tables sur un schéma d'un connecteur.}
 \usage{
-list_tables(con = NULL, schema = NULL, db = NULL, user = NULL)
+list_tables(con = NULL, schema = NULL, db = NULL, user = NULL, ...)
 }
 \arguments{
 \item{con}{Le connecteur de classe PosgreSQLConnection, peut etre NULL si db et user sont tous deux renseignes, sera utilise par defaut si les 3 arguments renseigne.}
@@ -14,6 +14,8 @@ list_tables(con = NULL, schema = NULL, db = NULL, user = NULL)
 \item{db}{Le nom de la base de donnees a laquelle se connecter pour trouver le schema, si con n'est pas renseigne.}
 
 \item{user}{Le nom de l'utilisateur de la connexion au serveur de donnees, si con n'est pas renseigne.}
+
+\item{...}{eventuels autres arguments de la fonction d'ouverture de connexion \code{connect_to_db}}
 }
 \value{
 Un vecteur de caractères avec les tables présentes sur le schéma schema du connecteur con.
diff --git a/man/post_dico_attr.Rd b/man/post_dico_attr.Rd
index 2fab65f..36ae934 100644
--- a/man/post_dico_attr.Rd
+++ b/man/post_dico_attr.Rd
@@ -10,7 +10,8 @@ post_dico_attr(
   schema = NULL,
   db = "public",
   user = "does",
-  server = NULL
+  server = NULL,
+  ...
 )
 }
 \arguments{
@@ -25,6 +26,8 @@ post_dico_attr(
 \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}
+
+\item{...}{eventuels autres arguments de la fonction d'ouverture de connexion \code{connect_to_db}}
 }
 \description{
 Postage de commentaires sur tous ou certains champs d'une table SGBD a partir d'un dataframe dictionnaire d'attributs
diff --git a/man/poster_data.Rd b/man/poster_data.Rd
index dffa050..e2aa254 100644
--- a/man/poster_data.Rd
+++ b/man/poster_data.Rd
@@ -17,7 +17,8 @@ poster_data(
   overwrite = FALSE,
   droits_schema = TRUE,
   user = "does",
-  server = NULL
+  server = NULL,
+  ...
 )
 }
 \arguments{
@@ -40,6 +41,8 @@ poster_data(
 \item{user}{Le nom d'utilisateur pour se connecter au SGBD.}
 
 \item{server}{l'adresse ip du serveur, laisser à NULL pour utiliser le variable d'environnement du .Renviron}
+
+\item{...}{éventuels autres arguments de la fonction d'ouverture de connexion \code{connect_to_db}}
 }
 \value{
 NULL, la fonction verse le dataset de l'environnement R sur le serveur de donnees.
diff --git a/man/set_schema_rights.Rd b/man/set_schema_rights.Rd
index f42f7b6..34b7d79 100644
--- a/man/set_schema_rights.Rd
+++ b/man/set_schema_rights.Rd
@@ -10,7 +10,8 @@ set_schema_rights(
   con = NULL,
   db = "public",
   user = "does",
-  server = NULL
+  server = NULL,
+  ...
 )
 }
 \arguments{
@@ -25,6 +26,8 @@ set_schema_rights(
 \item{user}{le nom de l'utilisateur qui se connecte}
 
 \item{server}{l'adresse ip du server auquel se connecter, laisser a NULL pour utiliser l'adresse IP definie dans le .Renviron.}
+
+\item{...}{eventuels autres arguments de la fonction d'ouverture de connexion \code{connect_to_db}}
 }
 \description{
 set_schema_rights() permet d'actualiser les privileges d'une ou de toutes les tables d'un schema a partir des privileges definis au niveau du schema
diff --git a/man/transferer_table_comments.Rd b/man/transferer_table_comments.Rd
index b4f521e..a4398c6 100644
--- a/man/transferer_table_comments.Rd
+++ b/man/transferer_table_comments.Rd
@@ -12,7 +12,8 @@ transferer_table_comments(
   schema_dest = NULL,
   db_dest = "public",
   user = "does",
-  server = NULL
+  server = NULL,
+  ...
 )
 }
 \arguments{
@@ -31,6 +32,8 @@ transferer_table_comments(
 \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.}
+
+\item{...}{eventuels autres arguments de la fonction d'ouverture de connexion \code{connect_to_db}}
 }
 \description{
 transferer les commentaires d'une table et de ses champs à une autre table identique sur le SGBD
-- 
GitLab