From 2e643d17a3e2d13d8cfd5a9f773e43ba8c10f425 Mon Sep 17 00:00:00 2001
From: lisasmah <lisa.smah@developpemnt-durable.gouv.fr>
Date: Fri, 7 Mar 2025 15:27:07 +0100
Subject: [PATCH] =?UTF-8?q?#29=20Refactorisation=20de=20la=20fonction=20po?=
 =?UTF-8?q?ur=20uniformiser=20le=20format=20de=20sortie.=20Gestion=20des?=
 =?UTF-8?q?=20caract=C3=A8res=20sp=C3=A9ciaux=20dans=20les=20messages=20de?=
 =?UTF-8?q?=20retour.=20Ajout=20du=20cas=20o=C3=B9=20la=20table=20n'a=20pa?=
 =?UTF-8?q?s=20encore=20=C3=A9t=C3=A9=20modifi=C3=A9e=20depuis=20l'activat?=
 =?UTF-8?q?ion=20de=20`track=5Fcommit=5Ftimestamp`?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 R/get_table_last_update.R | 24 ++++++++++++++++--------
 1 file changed, 16 insertions(+), 8 deletions(-)

diff --git a/R/get_table_last_update.R b/R/get_table_last_update.R
index 4a02936..9c1d0af 100644
--- a/R/get_table_last_update.R
+++ b/R/get_table_last_update.R
@@ -46,13 +46,18 @@ get_table_last_update <- function(conn, nom_schema, nom_table) {
 
       # Vérifier si un résultat a été retourné
       if (nrow(result) > 0) {
-        return(result$modified_timestamp[1])  # Retourne la dernière date de commit
-      } else {
+        if (is.na(result$modified_timestamp[1])) {
+          return(list(date = NA, message = "La date de commit est NULL. La table n\'a pas encore \u00e9t\u00e9 modifi\u00e9e depuis l\'activation de track_commit_timestamp."))
+        } else {
+          commit_date <- as.Date(result$modified_timestamp[1])
+          return(list(date = commit_date, source = "Source: track_commit_timestamp"))
+        }
+        } else {
         # Si pas de résultat, vérifier dans zz_r_df_def
         query_check_table <- paste0("
           SELECT commentaire
           FROM ", nom_schema, ".zz_r_df_def
-          WHERE table_nm = '", nom_table, "'
+          WHERE table_nm = '\", nom_table, \"'
           ORDER BY date_postee DESC
           LIMIT 1;")
 
@@ -70,19 +75,22 @@ get_table_last_update <- function(conn, nom_schema, nom_table) {
           date_match <- regmatches(comment_text, regexpr(date_pattern, comment_text))
 
           if (length(date_match) > 0) {
-            return(date_match)  # Retourne la date extraite du commentaire
+            # Convertir la date extraite en format Date (JJ/MM/AAAA -> YYYY-MM-DD)
+            comment_date <- as.Date(date_match, format = "%d/%m/%Y")
+            return(list(date = comment_date, source = "Source: commentaire de table"))
           } else {
-            return("Le commentaire ne contient pas de date valide.")  # Si la date n'est pas au bon format
+            # Retourner NA et message d'erreur
+            return(list(date = NA, message = "Le commentaire ne contient pas de date valide."))
           }
         } else {
-          return("Aucun commentaire trouvé pour la table dans zz_r_df_def.")  # Si aucun commentaire n'est trouvé
+          return(list(date = NA, message ="Aucun commentaire trouv\u00e9 pour la table dans zz_r_df_def."))  # Si aucun commentaire n'est trouvé
         }
       }
     } else {
-      return("L'option track_commit_timestamp est désactivée.")  # Option désactivée
+      return(list(date = NA, message ="L\'option track_commit_timestamp est d\u00e9sactiv\u00e9e."))  # Option désactivée
     }
   } else {
-    return("track_commit_timestamp n'a pas retourné de résultat valide.")  # Erreur de récupération des paramètres
+    return(list(date = NA, message ="track_commit_timestamp n\'a pas retourn\u00e9 de r\u00e9sultat valide."))  # Erreur de récupération des paramètres
   }
 }
 
-- 
GitLab