diff --git a/kernel/main.go b/kernel/main.go index 3f39a34ae..aea697819 100644 --- a/kernel/main.go +++ b/kernel/main.go @@ -34,6 +34,7 @@ func main() { go server.Serve(false) model.InitAppearance() sql.InitDatabase(false) + sql.InitHistoryDatabase(false) sql.SetCaseSensitive(model.Conf.Search.CaseSensitive) model.SyncData(true, false, false) diff --git a/kernel/mobile/kernel.go b/kernel/mobile/kernel.go index edfc00dfb..24866015d 100644 --- a/kernel/mobile/kernel.go +++ b/kernel/mobile/kernel.go @@ -48,6 +48,7 @@ func StartKernel(container, appDir, workspaceDir, nativeLibDir, privateDataDir, go func() { model.InitAppearance() sql.InitDatabase(false) + sql.InitHistoryDatabase(false) sql.SetCaseSensitive(model.Conf.Search.CaseSensitive) model.SyncData(true, false, false) diff --git a/kernel/sql/database.go b/kernel/sql/database.go index 2d8d6e18c..f116bf239 100644 --- a/kernel/sql/database.go +++ b/kernel/sql/database.go @@ -144,6 +144,34 @@ func initDBTables() { if nil != err { logging.LogFatalf("create table [refs] failed: %s", err) } +} + +func InitHistoryDatabase(forceRebuild bool) { + if !forceRebuild && gulu.File.IsExist(util.HistoryDBPath) { + return + } + + if nil != historyDB { + historyDB.Close() + } + dsn := util.HistoryDBPath + "?_journal_mode=OFF" + + "&_synchronous=OFF" + + "&_secure_delete=OFF" + + "&_cache_size=-20480" + + "&_page_size=8192" + + "&_busy_timeout=7000" + + "&_ignore_check_constraints=ON" + + "&_temp_store=MEMORY" + + "&_case_sensitive_like=OFF" + + "&_locking_mode=EXCLUSIVE" + var err error + historyDB, err = sql.Open("sqlite3_extended", dsn) + if nil != err { + logging.LogFatalf("create database failed: %s", err) + } + historyDB.SetMaxIdleConns(1) + historyDB.SetMaxOpenConns(1) + historyDB.SetConnMaxLifetime(365 * 24 * time.Hour) historyDB.Exec("DROP TABLE history_fts_case_insensitive") _, err = db.Exec("CREATE VIRTUAL TABLE history_fts_case_insensitive USING fts5(type UNINDEXED, op UNINDEXED, title, content, created UNINDEXED, path UNINDEXED, tokenize=\"siyuan case_insensitive\")") @@ -201,27 +229,6 @@ func initDBConnection() { db.SetMaxIdleConns(20) db.SetMaxOpenConns(20) db.SetConnMaxLifetime(365 * 24 * time.Hour) - - if nil != historyDB { - historyDB.Close() - } - dsn = util.HistoryDBPath + "?_journal_mode=OFF" + - "&_synchronous=OFF" + - "&_secure_delete=OFF" + - "&_cache_size=-20480" + - "&_page_size=8192" + - "&_busy_timeout=7000" + - "&_ignore_check_constraints=ON" + - "&_temp_store=MEMORY" + - "&_case_sensitive_like=OFF" + - "&_locking_mode=EXCLUSIVE" - historyDB, err = sql.Open("sqlite3_extended", dsn) - if nil != err { - logging.LogFatalf("create database failed: %s", err) - } - historyDB.SetMaxIdleConns(1) - historyDB.SetMaxOpenConns(1) - historyDB.SetConnMaxLifetime(365 * 24 * time.Hour) } func SetCaseSensitive(b bool) {