]> lifelog.hopto.org Git - LifeLog.git/commitdiff
Upd SQL and fixed backwards compatibility.
authorWill Budicm <redacted>
Sun, 25 Oct 2020 21:08:23 +0000 (08:08 +1100)
committerWill Budicm <redacted>
Sun, 25 Oct 2020 21:08:23 +0000 (08:08 +1100)
htdocs/cgi-bin/login_ctr.cgi
htdocs/cgi-bin/system/modules/Settings.pm

index 2cfb331afaa5884a2eba68dd8fcde5aaaebb19bb..3759f8d924c6a7fb1b3c2b9de911d2ac2f1b40ab 100755 (executable)
@@ -109,7 +109,7 @@ sub processSubmit {
 
             $passw = uc crypt $passw, hex Settings->CIPHER_KEY;
             #CheckTables will return 1 if it was an logout set in config table.
-            if(&checkCreateTables()==0){
+            if(checkCreateTables()==0){
                 $session->param('alias', $alias);
                 $session->param('passw', $passw);
                 $session->param('db_source', Settings::dbSrc());
@@ -362,10 +362,10 @@ sub checkCreateTables {
     # From v.1.6 view use server side views, for pages and correct record by ID and PID lookups.
     # This should make queries faster, less convulsed, and log renumeration less needed for accurate pagination.
     if(!$curr_tables{'VW_LOG'}) {
-        $rv = $db->do(&Settings::createVW_LOGStmt);
+        $rv = $db->do(Settings::createVW_LOGStmt());
     }
     if(!$curr_tables{'CAT'}) {
-        $db->do(&Settings::createCATStmt);
+        $db->do(Settings::createCATStmt());
         $changed = 1;
     }else{
         # If empty something happened to it. It shouldn't be EMPTY!
@@ -452,9 +452,11 @@ sub populate {
              @lines  = split '\n', $content;
     close $fh;
 
-    my $insConfig = $db->prepare('INSERT INTO CONFIG (NAME,VALUE,DESCRIPTION) VALUES (?,?,?)');
-    my $insCat    = $db->prepare('INSERT INTO CAT VALUES (?,?,?)');
-                    $db->begin_work();
+    my $cnfIns = 'INSERT INTO CONFIG (ID,NAME,VALUE,DESCRIPTION) VALUES (?,?,?,?)'; #for silly bckwrds compatbl;
+       $cnfIns = 'INSERT INTO CONFIG (NAME,VALUE,DESCRIPTION) VALUES (?,?,?)' if(Settings::isProgressDB());
+    my $insCnf = $db->prepare($cnfIns);
+    my $insCat = $db->prepare('INSERT INTO CAT VALUES (?,?,?)');
+                 $db->begin_work();
     foreach my $line (@lines) {
 
                     last if ($line =~ /<MIG<>/);#Not doing it with CNF1.0
@@ -482,7 +484,8 @@ $err .= "UID{$id} taken by $vars{$id}-> $line\n";
                                                                             $inData = 1;                                                                                
                                                                             if(!@arr) {
                                                                                 $debug .= "conf.ins->".$name.",".$value.",".$tick[1]."\n";
-                                                                                $insConfig->execute($name,$value,$tick[1]);
+                                                                               if(Settings::isProgressDB()) {$insCnf->execute($name,$value,$tick[1])}
+                                                                               else{$insCnf->execute($id,$name,$value,$tick[1])}
                                                                             }
                                                                                 
                                                                     }
index 6b33eeb45968f6f3dfefb41488863073b7a02dc4..06e8a904422dbcb948d68b1d63e0e79a69171094 100644 (file)
@@ -17,7 +17,7 @@ use DBI;
 use constant CIPHER_KEY => '95d7a85ba891da';
 
 #DEFAULT SETTINGS HERE!
-our $RELEASE_VER  = '2.0';
+our $RELEASE_VER  = '2.1';
 our $TIME_ZONE    = 'Australia/Sydney';
 our $LANGUAGE     = 'English';
 our $PRC_WIDTH    = '60';
@@ -89,9 +89,9 @@ sub isProgressDB   {return $IS_PG_DB}
 
 
 sub createCONFIGStmt {
-return qq(
+if($IS_PG_DB){qq(
     CREATE TABLE CONFIG(
-        ID integer NOT NULL UNIQUE GENERATED BY DEFAULT AS IDENTITY ( INCREMENT 1 START 1 MINVALUE 1 MAXVALUE 2147483647 CACHE 1 ),
+        ID INT NOT NULL UNIQUE GENERATED BY DEFAULT AS IDENTITY ( INCREMENT 1 START 1 MINVALUE 1 MAXVALUE 2147483647 CACHE 1 ),
         NAME VARCHAR(16)  UNIQUE,
         VALUE             VARCHAR(28),
         DESCRIPTION       VARCHAR(128),
@@ -99,6 +99,17 @@ return qq(
     );
     CREATE INDEX idx_config_name ON CONFIG (NAME);
 )}
+
+return qq(
+    CREATE TABLE CONFIG(
+        ID INT  PRIMARY KEY NOT NULL,
+        NAME VCHAR(16)  UNIQUE,
+        VALUE VCHAR(28),
+        DESCRIPTION VCHAR(128)
+    );
+    CREATE INDEX idx_config_name ON CONFIG (NAME);
+)
+}
 sub createCATStmt {
 
 if($IS_PG_DB){
@@ -114,7 +125,7 @@ if($IS_PG_DB){
 
 return qq(    
     CREATE TABLE CAT(
-        ID INT             PRIMARY UNIQUE KEY NOT NULL,
+        ID INT             PRIMARY KEY NOT NULL,
         NAME               VARCHAR(16),
         DESCRIPTION        VARCHAR(225)
     );
@@ -196,13 +207,13 @@ return qq(
 
 
 sub createNOTEStmt {
-    return qq(CREATE TABLE NOTES (LID INTEGER PRIMARY KEY NOT NULL, DOC TEXT);)
+    return qq(CREATE TABLE NOTES (LID INT PRIMARY KEY NOT NULL, DOC TEXT);)
 }
 sub createLOGCATSREFStmt {
 if($IS_PG_DB){
 return qq(
     CREATE TABLE LOGCATSREF (
-        LID INTEGER NOT NULL,
+        LID INT NOT NULL,
         CID INT NOT NULL,
                primary key(LID)                
     );    
@@ -211,7 +222,7 @@ return qq(
 # CONSTRAINT fk_cats FOREIGN KEY(CID) REFERENCES CAT(ID) ON DELETE CASCADE 
 return qq(
     CREATE TABLE LOGCATSREF (
-        LID INTEGER NOT NULL,
+        LID INT NOT NULL,
         CID INT NOT NULL,
     FOREIGN KEY (LID) REFERENCES LOG(ID),
     FOREIGN KEY (CID) REFERENCES CAT(ID)
@@ -296,13 +307,14 @@ sub renumerate {
     #Renumerate Log! Copy into temp. table.
     my $sql;
     selectRecords($db,'CREATE TABLE life_log_temp_table AS SELECT * FROM LOG;');
+    my $CI = 'rowid'; $CI = 'ID' if $IS_PG_DB;
     #update  notes table with new log id only for reference sake.
-    my $st = selectRecords($db, 'SELECT ID, DATE FROM LOG WHERE ID_RTF > 0 ORDER BY DATE;');
+    my $st = selectRecords($db, "SELECT $CI, DATE FROM LOG WHERE ID_RTF > 0 ORDER BY DATE;");
     while(my @row =$st->fetchrow_array()) {
         my $sql_date = $row[1];
         #$sql_date =~ s/T/ /;
         $sql_date = DateTime::Format::SQLite->parse_datetime($sql_date);
-        $sql = "SELECT ID, DATE FROM life_log_temp_table WHERE ID_RTF > 0 AND DATE = '".$sql_date."';";
+        $sql = "SELECT $CI, DATE FROM life_log_temp_table WHERE ID_RTF > 0 AND DATE = '".$sql_date."';";
         my @new  = selectRecords($db, $sql)->fetchrow_array();
         if(scalar @new > 0){
              try{#can fail here, for various reasons.
@@ -317,13 +329,13 @@ sub renumerate {
 
     # Delete any possible orphaned Notes records.
     $st->finish();
-    $st = selectRecords($db, "SELECT LID, LOG.ID from NOTES LEFT JOIN LOG ON
-                                    NOTES.LID = LOG.ID WHERE LOG.ID is NULL;");
+    $st = selectRecords($db, "SELECT LID, LOG.$CI from NOTES LEFT JOIN LOG ON NOTES.LID = LOG.$CI WHERE LOG.$CI is NULL;");
     while($st->fetchrow_array()) {
         $db->do("DELETE FROM NOTES WHERE LID=".$_[0].";")
     }
     $st->finish();
-    $db->do('DROP TABLE LOG CASCADE;');
+    if($IS_PG_DB){$db->do('DROP TABLE LOG CASCADE;');}else{$db->do('DROP TABLE LOG;');}
+    
     $db->do(&createLOGStmt);
     $db->do('INSERT INTO LOG (ID_CAT, ID_RTF, DATE, LOG, AMOUNT,AFLAG,STICKY)
                        SELECT ID_CAT, ID_RTF, DATE, LOG, AMOUNT, AFLAG, STICKY FROM life_log_temp_table ORDER by DATE;');