X-Git-Url: https://git.pterodactylus.net/?p=fms.git;a=blobdiff_plain;f=src%2Fglobal.cpp;h=a3c811121ea2168cfa0f29159537870950fe75f1;hp=0437eb4c5893c79223a84f60de802474de6e1bbe;hb=b9c3763a932cebaa015a27fe111017f6f34dfbaa;hpb=37a8d59548287dcad78ef00e7b18058721eb9935 diff --git a/src/global.cpp b/src/global.cpp index 0437eb4..a3c8111 100644 --- a/src/global.cpp +++ b/src/global.cpp @@ -25,6 +25,28 @@ void SetupDB() db->Open("fms.db3"); db->SetBusyTimeout(10000); // set timeout to 10 seconds db->Execute("VACUUM;"); + + // TODO remove this - temp fix for problem in 0.1.8 + db->Execute("DELETE FROM tblMessageBoard WHERE MessageID NOT IN (SELECT MessageID FROM tblMessage);"); + + db->Execute("CREATE TABLE IF NOT EXISTS tblDBVersion(\ + Major INTEGER,\ + Minor INTEGER\ + );"); + + SQLite3DB::Statement st=db->Prepare("SELECT Major,Minor FROM tblDBVersion;"); + st.Step(); + if(st.RowReturned()) + { + int major; + int minor; + st.ResultInt(0,major); + st.ResultInt(1,minor); + } + else + { + db->Execute("INSERT INTO tblDBVersion(Major,Minor) VALUES(1,0);"); + } db->Execute("CREATE TABLE IF NOT EXISTS tblOption(\ Option TEXT UNIQUE,\ @@ -197,6 +219,12 @@ void SetupDB() Inserted BOOL CHECK(Inserted IN('true','false')) DEFAULT 'false'\ );"); + db->Execute("CREATE TABLE IF NOT EXISTS tblAdministrationBoard(\ + BoardID INTEGER UNIQUE,\ + ModifyLocalMessageTrust INTEGER,\ + ModifyLocalTrustListTrust INTEGER\ + );"); + // MessageInserter will insert a record into this temp table which the MessageListInserter will query for and insert a MessageList when needed db->Execute("CREATE TEMPORARY TABLE IF NOT EXISTS tmpMessageListInsert(\ LocalIdentityID INTEGER,\ @@ -220,6 +248,16 @@ void SetupDB() AND ( PeerTrustListTrust IS NULL OR PeerTrustListTrust>=(SELECT OptionValue FROM tblOption WHERE Option='MinPeerTrustListTrust') ) \ GROUP BY TargetIdentityID;"); + /* + These peer trust calculations are too CPU intensive to be triggers - they were called every time a new trust list was processed + All trust levels will now be recalculated every hour in the PeriodicDBMaintenance class + */ + // drop existing triggers + db->Execute("DROP TRIGGER IF EXISTS trgDeleteOntblPeerTrust;"); + db->Execute("DROP TRIGGER IF EXISTS trgInsertOntblPeerTrust;"); + db->Execute("DROP TRIGGER IF EXISTS trgUpdateOntblPeerTrust;"); + db->Execute("DROP TRIGGER IF EXISTS trgUpdateLocalTrustLevels;"); +/* // update PeerTrustLevel when deleting a record from tblPeerTrust db->Execute("CREATE TRIGGER IF NOT EXISTS trgDeleteOntblPeerTrust AFTER DELETE ON tblPeerTrust \ FOR EACH ROW \ @@ -248,6 +286,7 @@ void SetupDB() BEGIN \ UPDATE tblIdentity SET PeerMessageTrust=(SELECT PeerMessageTrust FROM vwCalculatedPeerTrust WHERE TargetIdentityID=IdentityID), PeerTrustListTrust=(SELECT PeerTrustListTrust FROM vwCalculatedPeerTrust WHERE TargetIdentityID=IdentityID);\ END;"); +*/ db->Execute("CREATE TRIGGER IF NOT EXISTS trgDeleteMessage AFTER DELETE ON tblMessage \ FOR EACH ROW \ @@ -425,7 +464,7 @@ void SetupDefaultOptions() st.Reset(); st.Bind(0,"MinLocalTrustListTrust"); - st.Bind(1,"50"); + st.Bind(1,"51"); st.Bind(2,"Specifies a local trust list trust level that a peer must have before its trust list will be included in the weighted average. Any peers below this number will be excluded from the results."); st.Step(); st.Reset();