version 0.3.23
[fms.git] / src / dbsetup.cpp
index 5f4c129..1b037f7 100644 (file)
@@ -104,13 +104,19 @@ void SetupDB()
                        major=1;\r
                        minor=13;\r
                }\r
+               if(major==1 && minor==13)\r
+               {\r
+                       ConvertDB0113To0114();\r
+                       major=1;\r
+                       minor=14;\r
+               }\r
        }\r
        else\r
        {\r
-               db->Execute("INSERT INTO tblDBVersion(Major,Minor) VALUES(1,13);");\r
+               db->Execute("INSERT INTO tblDBVersion(Major,Minor) VALUES(1,14);");\r
        }\r
 \r
-       db->Execute("UPDATE tblDBVersion SET Major=1, Minor=13;");\r
+       db->Execute("UPDATE tblDBVersion SET Major=1, Minor=14;");\r
 \r
        db->Execute("CREATE TABLE IF NOT EXISTS tblFMSVersion(\\r
                                Major                           INTEGER,\\r
@@ -283,13 +289,14 @@ void SetupDB()
                                BoardDescription                TEXT,\\r
                                DateAdded                               DATETIME,\\r
                                SaveReceivedMessages    BOOL CHECK(SaveReceivedMessages IN('true','false')) DEFAULT 'true',\\r
-                               AddedMethod                             TEXT\\r
+                               AddedMethod                             TEXT,\\r
+                               Forum                                   TEXT CHECK(Forum IN('true','false')) DEFAULT 'false'\\r
                                );");\r
 \r
-       db->Execute("INSERT INTO tblBoard(BoardName,BoardDescription,DateAdded,AddedMethod) VALUES('fms','Freenet Message System','2007-12-01 12:00:00','Initial Board');");\r
-       db->Execute("INSERT INTO tblBoard(BoardName,BoardDescription,DateAdded,AddedMethod) VALUES('freenet','Discussion about Freenet','2007-12-01 12:00:00','Initial Board');");\r
-       db->Execute("INSERT INTO tblBoard(BoardName,BoardDescription,DateAdded,AddedMethod) VALUES('public','Public discussion','2007-12-01 12:00:00','Initial Board');");\r
-       db->Execute("INSERT INTO tblBoard(BoardName,BoardDescription,DateAdded,AddedMethod) VALUES('test','Test board','2007-12-01 12:00:00','Initial Board');");\r
+       db->Execute("INSERT INTO tblBoard(BoardName,BoardDescription,DateAdded,AddedMethod,Forum) VALUES('fms','Freenet Message System','2007-12-01 12:00:00','Initial Board','true');");\r
+       db->Execute("INSERT INTO tblBoard(BoardName,BoardDescription,DateAdded,AddedMethod,Forum) VALUES('freenet','Discussion about Freenet','2007-12-01 12:00:00','Initial Board','true');");\r
+       db->Execute("INSERT INTO tblBoard(BoardName,BoardDescription,DateAdded,AddedMethod,Forum) VALUES('public','Public discussion','2007-12-01 12:00:00','Initial Board','true');");\r
+       db->Execute("INSERT INTO tblBoard(BoardName,BoardDescription,DateAdded,AddedMethod,Forum) VALUES('test','Test board','2007-12-01 12:00:00','Initial Board','true');");\r
 \r
        db->Execute("CREATE TABLE IF NOT EXISTS tblMessage(\\r
                                MessageID                       INTEGER PRIMARY KEY,\\r
@@ -301,7 +308,8 @@ void SetupDB()
                                MessageUUID                     TEXT UNIQUE,\\r
                                ReplyBoardID            INTEGER,\\r
                                Body                            TEXT,\\r
-                               MessageIndex            INTEGER\\r
+                               MessageIndex            INTEGER,\\r
+                               Read                            INTEGER CHECK(Read IN(0,1)) DEFAULT 0\\r
                                );");\r
 \r
        db->Execute("CREATE INDEX IF NOT EXISTS idxMessage_IdentityID ON tblMessage (IdentityID);");\r
@@ -313,6 +321,7 @@ void SetupDB()
                                );");\r
 \r
        db->Execute("CREATE INDEX IF NOT EXISTS idxMessageReplyTo_MessageID ON tblMessageReplyTo (MessageID);");\r
+       db->Execute("CREATE INDEX IF NOT EXISTS idxMessageReplyTo_ReplyToMessageUUID ON tblMessageReplyTo (ReplyToMessageUUID);");\r
 \r
        db->Execute("CREATE TABLE IF NOT EXISTS tblMessageBoard(\\r
                                MessageID                       INTEGER,\\r
@@ -389,7 +398,35 @@ void SetupDB()
                                Day                                     DATE,\\r
                                RequestIndex            INTEGER,\\r
                                Found                           BOOL CHECK(Found IN('true','false')) DEFAULT 'false'\\r
-                               );");   \r
+                               );");\r
+\r
+       // begin thread db schema\r
+       db->Execute("CREATE TABLE IF NOT EXISTS tblThread(\\r
+                               ThreadID                INTEGER PRIMARY KEY,\\r
+                               BoardID                 INTEGER,\\r
+                               FirstMessageID  INTEGER,\\r
+                               LastMessageID   INTEGER\\r
+                               );");\r
+\r
+       db->Execute("CREATE INDEX IF NOT EXISTS idxThread_BoardID ON tblThread(BoardID);");\r
+       db->Execute("CREATE INDEX IF NOT EXISTS idxThread_FirstMessageID ON tblThread(FirstMessageID);");\r
+       db->Execute("CREATE INDEX IF NOT EXISTS idxThread_LastMessageID ON tblThread(LastMessageID);");\r
+\r
+       db->Execute("CREATE TABLE IF NOT EXISTS tblThreadPost(\\r
+                               ThreadID                INTEGER,\\r
+                               MessageID               INTEGER,\\r
+                               PostOrder               INTEGER\\r
+                               );");\r
+\r
+       db->Execute("CREATE INDEX IF NOT EXISTS idxThreadPost_ThreadID ON tblThreadPost(ThreadID);");\r
+       db->Execute("CREATE INDEX IF NOT EXISTS idxThreadPost_MessageID ON tblThreadPost(MessageID);");\r
+\r
+       db->Execute("CREATE TRIGGER IF NOT EXISTS trgDeleteOnThread AFTER DELETE ON tblThread\\r
+                               FOR EACH ROW\\r
+                               BEGIN\\r
+                                       DELETE FROM tblThreadPost WHERE ThreadID=old.ThreadID;\\r
+                               END;");\r
+       // end thread db schema\r
 \r
        // MessageInserter will insert a record into this temp table which the MessageListInserter will query for and insert a MessageList when needed\r
        db->Execute("CREATE TEMPORARY TABLE IF NOT EXISTS tmpMessageListInsert(\\r