diff --git a/Clover/app/src/main/java/org/floens/chan/core/database/DatabaseBoardManager.java b/Clover/app/src/main/java/org/floens/chan/core/database/DatabaseBoardManager.java index 9c343950..4eb0c909 100644 --- a/Clover/app/src/main/java/org/floens/chan/core/database/DatabaseBoardManager.java +++ b/Clover/app/src/main/java/org/floens/chan/core/database/DatabaseBoardManager.java @@ -179,6 +179,9 @@ public class DatabaseBoardManager { ordering.put(siteModel.id, siteModel.order); } + Time.endTiming("getboards sites", start); + start = Time.startTiming(); + List sitesOrdered = new ArrayList<>(sites); // Sort the given sites array with these orders. Collections.sort(sitesOrdered, @@ -193,6 +196,9 @@ public class DatabaseBoardManager { .where().in("site", siteIds) .query(); + Time.endTiming("getboards boards", start); + start = Time.startTiming(); + // Map the boards from siteId to a list of boards. Map sitesById = new HashMap<>(); for (Site site : sites) { @@ -219,7 +225,8 @@ public class DatabaseBoardManager { res.add(new Pair<>(site, siteBoards)); } - Time.endTiming("getBoardsForAllSitesOrdered", start); + Time.endTiming("getboards process", start); + start = Time.startTiming(); return res; }; diff --git a/Clover/app/src/main/java/org/floens/chan/core/database/DatabaseHelper.java b/Clover/app/src/main/java/org/floens/chan/core/database/DatabaseHelper.java index 9d8666e7..db616a01 100644 --- a/Clover/app/src/main/java/org/floens/chan/core/database/DatabaseHelper.java +++ b/Clover/app/src/main/java/org/floens/chan/core/database/DatabaseHelper.java @@ -45,7 +45,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper { private static final String TAG = "DatabaseHelper"; private static final String DATABASE_NAME = "ChanDB"; - private static final int DATABASE_VERSION = 24; + private static final int DATABASE_VERSION = 25; public Dao pinDao; public Dao loadableDao; @@ -235,7 +235,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper { try { pinDao.executeRawNoArgs("ALTER TABLE board ADD COLUMN \"archive\" INTEGER;"); } catch (SQLException e) { - Logger.e(TAG, "Error upgrading to version 14", e); + Logger.e(TAG, "Error upgrading to version 23", e); } } @@ -243,7 +243,17 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper { try { siteDao.executeRawNoArgs("ALTER TABLE site ADD COLUMN \"order\" INTEGER;"); } catch (SQLException e) { - Logger.e(TAG, "Error upgrading to version 14", e); + Logger.e(TAG, "Error upgrading to version 24", e); + } + } + + if (oldVersion < 25) { + try { + boardsDao.executeRawNoArgs("CREATE INDEX board_site_idx ON board(site);"); + boardsDao.executeRawNoArgs("CREATE INDEX board_saved_idx ON board(saved);"); + boardsDao.executeRawNoArgs("CREATE INDEX board_value_idx ON board(value);"); + } catch (SQLException e) { + Logger.e(TAG, "Error upgrading to version 25", e); } } } diff --git a/Clover/app/src/main/java/org/floens/chan/core/model/orm/Board.java b/Clover/app/src/main/java/org/floens/chan/core/model/orm/Board.java index 404886a9..09addf42 100644 --- a/Clover/app/src/main/java/org/floens/chan/core/model/orm/Board.java +++ b/Clover/app/src/main/java/org/floens/chan/core/model/orm/Board.java @@ -34,7 +34,7 @@ public class Board implements SiteReference { @DatabaseField(generatedId = true) public int id; - @DatabaseField(columnName = "site") + @DatabaseField(columnName = "site", index = true, indexName = "board_site_idx") public int siteId; /** @@ -45,7 +45,7 @@ public class Board implements SiteReference { /** * The board appears in the dropdown. */ - @DatabaseField + @DatabaseField(index = true, indexName = "board_saved_idx") public boolean saved = false; /** @@ -57,7 +57,8 @@ public class Board implements SiteReference { @DatabaseField(columnName = "key") // named key for legacy support public String name; - @DatabaseField(columnName = "value") // named value for legacy support + // named value for legacy support + @DatabaseField(columnName = "value", index = true, indexName = "board_value_idx") // TODO(sec) force filter this to ascii & numbers. public String code; diff --git a/Clover/app/src/main/java/org/floens/chan/core/repository/BoardRepository.java b/Clover/app/src/main/java/org/floens/chan/core/repository/BoardRepository.java index 44b67661..7b5d405c 100644 --- a/Clover/app/src/main/java/org/floens/chan/core/repository/BoardRepository.java +++ b/Clover/app/src/main/java/org/floens/chan/core/repository/BoardRepository.java @@ -52,11 +52,12 @@ public class BoardRepository implements Observer { this.siteRepository = siteRepository; allSites = this.siteRepository.all(); - allSites.addObserver(this); } public void initialize() { updateObservablesSync(); + + allSites.addObserver(this); } @Override diff --git a/docs/database.txt b/docs/database.txt index 58f50cbe..d75946dc 100644 --- a/docs/database.txt +++ b/docs/database.txt @@ -80,3 +80,9 @@ ALTER TABLE board ADD COLUMN "archive" INTEGER; Changes in version 24: ALTER TABLE site ADD COLUMN "order" INTEGER; + + +Changes in version 25: +CREATE INDEX board_site_idx ON board(site); +CREATE INDEX board_saved_idx ON board(saved); +CREATE INDEX board_value_idx ON board(value);