]> gitweb.stoutner.com Git - PrivacyBrowserPC.git/blobdiff - src/helpers/DomainsDatabaseHelper.cpp
Add local storage domain settings.
[PrivacyBrowserPC.git] / src / helpers / DomainsDatabaseHelper.cpp
index 48b28a34966733b7bbbbc26dadc043b94f5c71ae..d1f8b22f8f5d30089f18fab42388ac6e573af211 100644 (file)
@@ -26,15 +26,19 @@ const QString DomainsDatabaseHelper::CONNECTION_NAME = "domains_database";
 const QString DomainsDatabaseHelper::DOMAINS_TABLE = "domains";
 
 // Define the private static schema constants.
-const int DomainsDatabaseHelper::SCHEMA_VERSION = 2;
+const int DomainsDatabaseHelper::SCHEMA_VERSION = 5;
 
 // Define the public static database field names.
 const QString DomainsDatabaseHelper::_ID = "_id";
 const QString DomainsDatabaseHelper::DOMAIN_NAME = "domain_name";
 const QString DomainsDatabaseHelper::JAVASCRIPT = "javascript";
+const QString DomainsDatabaseHelper::LOCAL_STORAGE = "local_storage";
+const QString DomainsDatabaseHelper::DOM_STORAGE = "dom_storage";
 const QString DomainsDatabaseHelper::USER_AGENT = "user_agent";
+const QString DomainsDatabaseHelper::ZOOM_FACTOR = "zoom_factor";
+const QString DomainsDatabaseHelper::CUSTOM_ZOOM_FACTOR = "custom_zoom_factor";
 
-// The default constructor.
+// Construct the class.
 DomainsDatabaseHelper::DomainsDatabaseHelper() {}
 
 void DomainsDatabaseHelper::addDatabase()
@@ -66,23 +70,54 @@ void DomainsDatabaseHelper::addDatabase()
                 // Run schema update code.
                 switch (currentSchemaVersion)
                 {
-                    // Upgrade from schema version 0.
+                    // Upgrade from schema version 0 to schema version 1.
                     case 0:
                     {
                         // Add the JavaScript column.
                         domainsDatabase.exec("ALTER TABLE " + DOMAINS_TABLE + " ADD COLUMN " + JAVASCRIPT + " INTEGER DEFAULT 0");
 
-                        // Set the default value.
-                        domainsDatabase.exec("UPDATE " + DOMAINS_TABLE + " SET " + JAVASCRIPT + " = 0" );
-
+                        // Fallthrough to the next case.
                         [[fallthrough]];
                     }
 
-                    // Upgrade from schema version 1.
+                    // Upgrade from schema version 1 to schema version 2.
                     case 1:
                     {
                         // Add the User Agent column.
                         domainsDatabase.exec("ALTER TABLE " + DOMAINS_TABLE + " ADD COLUMN " + USER_AGENT + " TEXT DEFAULT '" + UserAgentHelper::SYSTEM_DEFAULT_DATABASE + "'");
+
+                        // Fallthrough to the next case.
+                        [[fallthrough]];
+                    }
+
+                    // Upgrade from schema version 2 to schema version 3.
+                    case 2:
+                    {
+                        // Add the Zoom Factor columns.
+                        domainsDatabase.exec("ALTER TABLE " + DOMAINS_TABLE + " ADD COLUMN " + ZOOM_FACTOR + " INTEGER DEFAULT 0");
+                        domainsDatabase.exec("ALTER TABLE " + DOMAINS_TABLE + " ADD COLUMN " + CUSTOM_ZOOM_FACTOR + " REAL DEFAULT 1.0");
+
+                        // Fallthrough to the next case.
+                        [[fallthrough]];
+                    }
+
+                    // Upgrade from schema version 3 to schema version 4.
+                    case 3:
+                    {
+                        // Add the DOM Storage column.
+                        domainsDatabase.exec("ALTER TABLE " + DOMAINS_TABLE + " ADD COLUMN " + DOM_STORAGE + " INTEGER DEFAULT 0");
+
+                        // Fallthrough to the next case.
+                        [[fallthrough]];
+                    }
+
+                    case 4:
+                    {
+                        // Add the Local Storage column.
+                        domainsDatabase.exec("ALTER TABLE " + DOMAINS_TABLE + " ADD COLUMN " + LOCAL_STORAGE + " INTEGER DEFAULT 0");
+
+                        // Fallthrough to the next case.
+                        // [[fallthrough]];
                     }
                 }
 
@@ -99,8 +134,12 @@ void DomainsDatabaseHelper::addDatabase()
             createTableQuery.prepare("CREATE TABLE " + DOMAINS_TABLE + "(" +
                 _ID + " INTEGER PRIMARY KEY, " +
                 DOMAIN_NAME + " TEXT, " +
-                JAVASCRIPT + " INTEGER DEFAULT 0," +
-                USER_AGENT + " TEXT DEFAULT '" + UserAgentHelper::SYSTEM_DEFAULT_DATABASE + "')"
+                JAVASCRIPT + " INTEGER DEFAULT 0, " +
+                LOCAL_STORAGE + " INTEGER DEFAULT 0, " +
+                DOM_STORAGE + " INTEGER DEFAULT 0, " +
+                USER_AGENT + " TEXT DEFAULT '" + UserAgentHelper::SYSTEM_DEFAULT_DATABASE + "', " +
+                ZOOM_FACTOR + " INTEGER DEFAULT 0, " +
+                CUSTOM_ZOOM_FACTOR + " REAL DEFAULT 1.0)"
             );
 
             // Execute the query.