소스 검색

chore(sqlite): stamp files with application_id

No practical effect, just a tiny bit of fun to stamp the database files
with an application ID that identifies them.

Signed-off-by: Jakob Borg <[email protected]>
Jakob Borg 1 개월 전
부모
커밋
800596139e
3개의 변경된 파일11개의 추가작업 그리고 1개의 파일을 삭제
  1. 5 1
      internal/db/sqlite/basedb.go
  2. 3 0
      internal/db/sqlite/db_open.go
  3. 3 0
      internal/db/sqlite/folderdb_open.go

+ 5 - 1
internal/db/sqlite/basedb.go

@@ -25,7 +25,11 @@ import (
 	"github.com/syncthing/syncthing/lib/protocol"
 )
 
-const currentSchemaVersion = 4
+const (
+	currentSchemaVersion = 4
+	applicationIDMain    = 0x53546d6e // "STmn", Syncthing main database
+	applicationIDFolder  = 0x53546664 // "STfd", Syncthing folder database
+)
 
 //go:embed sql/**
 var embedded embed.FS

+ 3 - 0
internal/db/sqlite/db_open.go

@@ -7,6 +7,7 @@
 package sqlite
 
 import (
+	"fmt"
 	"log/slog"
 	"os"
 	"path/filepath"
@@ -52,6 +53,7 @@ func Open(path string, opts ...Option) (*DB, error) {
 		"journal_mode = WAL",
 		"optimize = 0x10002",
 		"auto_vacuum = INCREMENTAL",
+		fmt.Sprintf("application_id = %d", applicationIDMain),
 	}
 	schemas := []string{
 		"sql/schema/common/*",
@@ -100,6 +102,7 @@ func OpenForMigration(path string) (*DB, error) {
 		"foreign_keys = 0",
 		"synchronous = 0",
 		"locking_mode = EXCLUSIVE",
+		fmt.Sprintf("application_id = %d", applicationIDMain),
 	}
 	schemas := []string{
 		"sql/schema/common/*",

+ 3 - 0
internal/db/sqlite/folderdb_open.go

@@ -7,6 +7,7 @@
 package sqlite
 
 import (
+	"fmt"
 	"time"
 
 	"github.com/syncthing/syncthing/lib/protocol"
@@ -25,6 +26,7 @@ func openFolderDB(folder, path string, deleteRetention time.Duration) (*folderDB
 		"journal_mode = WAL",
 		"optimize = 0x10002",
 		"auto_vacuum = INCREMENTAL",
+		fmt.Sprintf("application_id = %d", applicationIDFolder),
 	}
 	schemas := []string{
 		"sql/schema/common/*",
@@ -65,6 +67,7 @@ func openFolderDBForMigration(folder, path string, deleteRetention time.Duration
 		"foreign_keys = 0",
 		"synchronous = 0",
 		"locking_mode = EXCLUSIVE",
+		fmt.Sprintf("application_id = %d", applicationIDFolder),
 	}
 	schemas := []string{
 		"sql/schema/common/*",