From: Jean-Marc Pigeon (Delson) Date: Sun, 29 Jun 2025 22:57:23 +0000 (-0400) Subject: Ready to start population actions table within database X-Git-Tag: tag-0.11~16 X-Git-Url: https://jmp-git.ovh.safe.ca/?a=commitdiff_plain;h=4d6db2ab93a29d108b5b86827a002db49758b91f;p=jmp%2Fmailleur Ready to start population actions table within database --- diff --git a/lib/devsql.c b/lib/devsql.c index cb16ce4..8e2e485 100644 --- a/lib/devsql.c +++ b/lib/devsql.c @@ -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 } diff --git a/lib/geseml.c b/lib/geseml.c index 0dfa028..3ea06be 100644 --- a/lib/geseml.c +++ b/lib/geseml.c @@ -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 }