Chargement des librairies

library(collectr)
library(DBI)
library(yaml)

Chargement des variables

# Lire le fichier de configuration
config <- yaml::read_yaml("../config.yml")

# Accéder à la valeur pour fichier_gpkg
fichier_gpkg <- config$fichier_gpkg
# Récupérer les variables liées à la base de données
database <- config$database
schema_name <- config$schema_name
role <- config$role

Création du schéma

collectr::create_schema(host = Sys.getenv("server"),
                        database = database,
                        schema = schema_name,
                        role = role)

Gestion des droits

Récupération de la date du référentiel

# Extraction de la date au format YYYY-MM-DD
version_date <- sub(".*ED([0-9]{4}-[0-9]{2}-[0-9]{2}).*", "\\1", fichier_gpkg)

# Conversion en format dd/mm/yyyy
version_date_fr <- format(as.Date(version_date), "%d/%m/%Y")

Ajout du commentaire et des droits pour les rôles de groupe

# Connection à la base de données PostgreSQL
connexion <- datalibaba::connect_to_db(db = database, user = role)

# Construction des requêtes SQL individuelles
sql_commands <- c(
  sprintf(
    "COMMENT ON SCHEMA %s IS 'Description vectorielle 3D (structurée en objets) des éléments du territoire et de ses infrastructures, de précision métrique, exploitable à des échelles allant du 1 : 2 000 au 1 : 50 000. Version du %s.';",
    schema_name, version_date_fr),
  sprintf(
    "GRANT USAGE ON SCHEMA %s TO reader_referentiels;", schema_name),
  sprintf(
    "GRANT ALL ON SCHEMA %s TO writer_referentiels;", schema_name),
  sprintf(
    "ALTER DEFAULT PRIVILEGES FOR ROLE %s IN SCHEMA %s GRANT SELECT ON TABLES TO reader_referentiels;",
    role, schema_name)
)

# Exécution des commandes une par une
for (cmd in sql_commands) {
  DBI::dbExecute(connexion, cmd)
}

# Fermeture de la connection à la base de données PostgreSQL
DBI::dbDisconnect(connexion)