]> SAFE projects GIT repository - jmp/mailleur/commitdiff
Ready to start population actions table within database
authorJean-Marc Pigeon (Delson) <jmp@safe.ca>
Sun, 29 Jun 2025 22:57:23 +0000 (18:57 -0400)
committerJean-Marc Pigeon (Delson) <jmp@safe.ca>
Sun, 29 Jun 2025 22:57:23 +0000 (18:57 -0400)
lib/devsql.c
lib/geseml.c

index cb16ce40b195b7b6809837bb5cca5fc4fc37e22d..8e2e4855ab611d635dff3c16691762572ba163ac 100644 (file)
@@ -33,7 +33,8 @@ typedef struct  {
 
 //SQL database request
 #define EMAILS          "emails"        //emails tables
-#define SESSIONS        "sessions"      //session tabbles
+#define SESSIONS        "sessions"      //session tables
+#define ACTIONS         "actions"       //action tables
 
 //field available in table "emails"
 const char *usrfield[]={
@@ -821,23 +822,36 @@ return isok;
 PUBLIC _Bool sql_mngact(SQLPTR *sqlptr,SQLENUM action,ACTTYP *act)
 
 {
+#define OPEP    "devsql.c:sql_mngact,"
+#define DELACT  "DELETE * FROM "ACTIONS" WHERE sessid=%s AND rcptto=%s"
+
 _Bool isok;
 
 isok=false;
 if (act!=(ACTTYP *)0) {
-  (void) rou_alert(0,"JMPDBG ses=<%s>d rcpt=<%s>",act->sessid,act->rcptto);
-  if (act->resp!=(char **)0) {
-    char **resp;
-    int num;
+  char *goodid;
+  char *goodrcpt;
+
+  goodid=sql_gooddata(sqlptr,act->sessid);
+  goodrcpt=sql_gooddata(sqlptr,act->rcptto);
+  if (act->resp==(char **)0)
+    (void) sqlrequest(sqlptr,DELACT,goodid,goodrcpt);
+  else {
+    if (act->resp!=(char **)0) {
+      char **resp;
   
-    resp=act->resp;
-    num=0;
-    while (*resp!=(char *)0) {
-      num++;
-      (void) rou_alert(0,"\tRESP[%0d]=<%s>",num,*resp);
-      resp++;
+      resp=act->resp;
+      while (*resp!=(char *)0) {
+        resp++;
+        }
       }
     }
+  goodrcpt=rou_freestr(goodrcpt);
+  goodid=rou_freestr(goodid);
+  isok=true;
   }
 return isok;
+
+#undef  DELACT
+#undef  OPEP
 }
index 0dfa0283308766e3eecc2293a9daeb5cc823258a..3ea06be6147976a56c7f0d50649d2d556812b3dd 100644 (file)
@@ -997,22 +997,50 @@ return extracted;
 PUBLIC int eml_update_tradb(TRATYP **tra)
 
 {
+#define OPEP    "geseml.c:eml_update_tradb,"
+
 int num;
-SQLPTR *sqlptr;
 
 num=0;
-sqlptr=(SQLPTR *)0;
 if (tra!=(TRATYP **)0) {
-  while (*tra!=(TRATYP *)0) {
-    ACTTYP action;
+  SQLPTR *sqlptr;
+  int phase;
+  _Bool proceed;
 
-    action.sessid=(*tra)->sessid;
-    action.rcptto=(*tra)->rcptto;
-    action.resp=(*tra)->resp;
-    (void) sql_mngact(sqlptr,sql_delete,&action); 
-    num++;
-    tra++;
+  sqlptr=(SQLPTR *)0;
+  phase=0;
+  proceed=(*tra!=(TRATYP *)0);
+  while (proceed==true) {
+    switch (phase) {
+      case 0    :       //opening the database
+        if ((sqlptr=sql_opensql())==(SQLPTR *)0) {
+          (void) rou_alert(0,"%s Unable to open database (system?)",OPEP);
+          phase=999;
+          }
+        break;
+      case 1    :       //checking all transation
+        while (*tra!=(TRATYP *)0) {
+          ACTTYP action;
+
+          action.sessid=(*tra)->sessid;
+          action.rcptto=(*tra)->rcptto;
+          action.resp=(*tra)->resp;
+          (void) sql_mngact(sqlptr,sql_delete,&action); 
+          num++;
+          tra++;
+          }
+        break;
+      case 2    :       //closing the database
+        sqlptr=sql_closesql(sqlptr);
+        break;
+      default   :       //SAFE Guard
+        proceed=false;
+        break;
+      }
+    phase++;
     }
   }
 return num;
+
+#undef  OPEP
 }