version 0.3.19
[fms.git] / src / dbsetup.cpp
index 9b2ab00..2e0a460 100644 (file)
@@ -16,6 +16,7 @@ void SetupDB()
 \r
        db->Open("fms.db3");\r
        db->SetBusyTimeout(20000);              // set timeout to 20 seconds\r
+       db->Execute("PRAGMA synchronous = FULL;");\r
 \r
        db->Execute("CREATE TABLE IF NOT EXISTS tblDBVersion(\\r
                                Major                           INTEGER,\\r
@@ -401,6 +402,12 @@ void SetupDB()
                                LocalIdentityID         INTEGER\\r
                                );");\r
 \r
+       // Temporary table for form passwords\r
+       db->Execute("CREATE TEMPORARY TABLE IF NOT EXISTS tmpFormPassword(\\r
+                               Date                    DATETIME,\\r
+                               Password                TEXT\\r
+                               );");\r
+\r
        // low / high / message count for each board\r
        db->Execute("CREATE VIEW IF NOT EXISTS vwBoardStats AS \\r
                                SELECT tblBoard.BoardID AS 'BoardID', IFNULL(MIN(MessageID),0) AS 'LowMessageID', IFNULL(MAX(MessageID),0) AS 'HighMessageID', COUNT(MessageID) AS 'MessageCount' \\r
@@ -542,3 +549,27 @@ void SetupDB()
        db->Execute("ANALYZE;");\r
 \r
 }\r
+\r
+const bool VerifyDB()\r
+{\r
+       SQLite3DB::DB *db=SQLite3DB::DB::Instance();\r
+       SQLite3DB::Statement st=db->Prepare("PRAGMA integrity_check;");\r
+       st.Step();\r
+       if(st.RowReturned())\r
+       {\r
+               std::string res="";\r
+               st.ResultText(0,res);\r
+               if(res=="ok")\r
+               {\r
+                       return true;\r
+               }\r
+               else\r
+               {\r
+                       return false;\r
+               }\r
+       }\r
+       else\r
+       {\r
+               return false;\r
+       }\r
+}\r