version 0.2.2
[fms.git] / src / global.cpp
index 0698703..087ce1c 100644 (file)
@@ -28,9 +28,6 @@ void SetupDB()
        db->Open("fms.db3");\r
        db->SetBusyTimeout(10000);              // set timeout to 10 seconds\r
        db->Execute("VACUUM;");\r
-       \r
-       // TODO remove this - temp fix for problem in 0.1.8\r
-       db->Execute("DELETE FROM tblMessageBoard WHERE MessageID NOT IN (SELECT MessageID FROM tblMessage);");\r
 \r
        db->Execute("CREATE TABLE IF NOT EXISTS tblDBVersion(\\r
                                Major                           INTEGER,\\r
@@ -64,10 +61,16 @@ void SetupDB()
                        major=1;\r
                        minor=4;\r
                }\r
+               if(major==1 && minor==4)\r
+               {\r
+                       ConvertDB0104To0105();\r
+                       major=1;\r
+                       minor=5;\r
+               }\r
        }\r
        else\r
        {\r
-               db->Execute("INSERT INTO tblDBVersion(Major,Minor) VALUES(1,4);");\r
+               db->Execute("INSERT INTO tblDBVersion(Major,Minor) VALUES(1,5);");\r
        }\r
 \r
        db->Execute("UPDATE tblDBVersion SET Major=1, Minor=4;");\r
@@ -131,18 +134,21 @@ void SetupDB()
                                );");\r
 \r
        db->Execute("CREATE TABLE IF NOT EXISTS tblIdentity(\\r
-                               IdentityID                      INTEGER PRIMARY KEY,\\r
-                               PublicKey                       TEXT UNIQUE,\\r
-                               Name                            TEXT,\\r
-                               SingleUse                       BOOL CHECK(SingleUse IN('true','false')) DEFAULT 'false',\\r
-                               PublishTrustList        BOOL CHECK(PublishTrustList IN('true','false')) DEFAULT 'false',\\r
-                               PublishBoardList        BOOL CHECK(PublishBoardList IN('true','false')) DEFAULT 'false',\\r
-                               DateAdded                       DATETIME,\\r
-                               LastSeen                        DATETIME,\\r
-                               LocalMessageTrust       INTEGER CHECK(LocalMessageTrust BETWEEN 0 AND 100) DEFAULT NULL,\\r
-                               PeerMessageTrust        INTEGER CHECK(PeerMessageTrust BETWEEN 0 AND 100) DEFAULT NULL,\\r
-                               LocalTrustListTrust     INTEGER CHECK(LocalTrustListTrust BETWEEN 0 AND 100) DEFAULT NULL,\\r
-                               PeerTrustListTrust      INTEGER CHECK(PeerTrustListTrust BETWEEN 0 AND 100) DEFAULT NULL\\r
+                               IdentityID                              INTEGER PRIMARY KEY,\\r
+                               PublicKey                               TEXT UNIQUE,\\r
+                               Name                                    TEXT,\\r
+                               SingleUse                               BOOL CHECK(SingleUse IN('true','false')) DEFAULT 'false',\\r
+                               PublishTrustList                BOOL CHECK(PublishTrustList IN('true','false')) DEFAULT 'false',\\r
+                               PublishBoardList                BOOL CHECK(PublishBoardList IN('true','false')) DEFAULT 'false',\\r
+                               DateAdded                               DATETIME,\\r
+                               LastSeen                                DATETIME,\\r
+                               LocalMessageTrust               INTEGER CHECK(LocalMessageTrust BETWEEN 0 AND 100) DEFAULT NULL,\\r
+                               PeerMessageTrust                INTEGER CHECK(PeerMessageTrust BETWEEN 0 AND 100) DEFAULT NULL,\\r
+                               LocalTrustListTrust             INTEGER CHECK(LocalTrustListTrust BETWEEN 0 AND 100) DEFAULT NULL,\\r
+                               PeerTrustListTrust              INTEGER CHECK(PeerTrustListTrust BETWEEN 0 AND 100) DEFAULT NULL,\\r
+                               AddedMethod                             TEXT,\\r
+                               MessageTrustComment             TEXT,\\r
+                               TrustListTrustComment   TEXT\\r
                                );");\r
 \r
        db->Execute("CREATE TABLE IF NOT EXISTS tblIdentityRequests(\\r
@@ -172,10 +178,12 @@ void SetupDB()
                                );");\r
 \r
        db->Execute("CREATE TABLE IF NOT EXISTS tblPeerTrust(\\r
-                               IdentityID                      INTEGER,\\r
-                               TargetIdentityID        INTEGER,\\r
-                               MessageTrust            INTEGER CHECK(MessageTrust BETWEEN 0 AND 100),\\r
-                               TrustListTrust          INTEGER CHECK(TrustListTrust BETWEEN 0 AND 100)\\r
+                               IdentityID                              INTEGER,\\r
+                               TargetIdentityID                INTEGER,\\r
+                               MessageTrust                    INTEGER CHECK(MessageTrust BETWEEN 0 AND 100),\\r
+                               TrustListTrust                  INTEGER CHECK(TrustListTrust BETWEEN 0 AND 100),\\r
+                               MessageTrustComment             TEXT,\\r
+                               TrustListTrustComment   TEXT\\r
                                );");\r
 \r
        db->Execute("CREATE TABLE IF NOT EXISTS tblBoard(\\r
@@ -463,6 +471,19 @@ void ConvertDB0103To0104()
        db->Execute("UPDATE tblDBVersion SET Major=1, Minor=4;");\r
 }\r
 \r
+void ConvertDB0104To0105()\r
+{\r
+       // add AddedMethod, MessageTrustComment, TrustListTrustComment to tblIdentity\r
+       // add MessageTrustComment,TrustListTrustComment to tblPeerTrust\r
+       SQLite3DB::DB *db=SQLite3DB::DB::Instance();\r
+       db->Execute("ALTER TABLE tblIdentity ADD COLUMN AddedMethod TEXT;");\r
+       db->Execute("ALTER TABLE tblIdentity ADD COLUMN MessageTrustComment TEXT;");\r
+       db->Execute("ALTER TABLE tblIdentity ADD COLUMN TrustListTrustComment TEXT;");\r
+       db->Execute("ALTER TABLE tblPeerTrust ADD COLUMN MessageTrustComment TEXT;");\r
+       db->Execute("ALTER TABLE tblPeerTrust ADD COLUMN TrustListTrustComment TEXT;");\r
+       db->Execute("UPDATE tblDBVersion SET Major=1, Minor=5;");\r
+}\r
+\r
 void SetupDefaultOptions()\r
 {\r
        // OptionValue should always be inserted as a string, even if the option really isn't a string - just to keep the field data type consistent\r