浏览代码

chore(sqlite): linter complaints

Jakob Borg 4 月之前
父节点
当前提交
ef6d561c66

+ 2 - 0
.golangci.yml

@@ -8,12 +8,14 @@ linters:
     - exhaustive
     - exhaustruct
     - forbidigo
+    - funcorder
     - funlen
     - gochecknoglobals
     - gochecknoinits
     - gocognit
     - goconst
     - gocyclo
+    - godot
     - godox
     - gomoddirectives
     - inamedparam

+ 0 - 1
go.mod

@@ -61,7 +61,6 @@ require (
 	github.com/cenkalti/backoff/v4 v4.3.0 // indirect
 	github.com/certifi/gocertifi v0.0.0-20210507211836-431795d63e8d // indirect
 	github.com/cespare/xxhash/v2 v2.3.0 // indirect
-	github.com/coreos/go-semver v0.3.1 // indirect
 	github.com/cpuguy83/go-md2man/v2 v2.0.5 // indirect
 	github.com/davecgh/go-spew v1.1.1 // indirect
 	github.com/dustin/go-humanize v1.0.1 // indirect

+ 0 - 2
go.sum

@@ -48,8 +48,6 @@ github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XL
 github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
 github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
 github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
-github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr4=
-github.com/coreos/go-semver v0.3.1/go.mod h1:irMmmIw/7yzSRPWryHsK7EYSg09caPQL03VsM8rvUec=
 github.com/cpuguy83/go-md2man/v2 v2.0.5 h1:ZtcqGrnekaHpVLArFSe4HK5DoKx1T0rq2DwVB0alcyc=
 github.com/cpuguy83/go-md2man/v2 v2.0.5/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
 github.com/d4l3k/messagediff v1.2.1 h1:ZcAIMYsUg0EAp9X+tt8/enBE/Q8Yd5kzPynLyKptt9U=

+ 1 - 1
internal/db/sqlite/db_folderdb.go

@@ -255,7 +255,7 @@ func (s *DB) ListDevicesForFolder(folder string) ([]protocol.DeviceID, error) {
 func (s *DB) RemoteSequences(folder string) (map[protocol.DeviceID]int64, error) {
 	fdb, err := s.getFolderDB(folder, false)
 	if errors.Is(err, errNoSuchFolder) {
-		return nil, nil
+		return nil, nil //nolint:nilnil
 	}
 	if err != nil {
 		return nil, err

+ 12 - 4
internal/db/sqlite/db_open.go

@@ -50,10 +50,14 @@ func Open(path string, opts ...Option) (*DB, error) {
 		"sql/schema/common/*",
 		"sql/schema/main/*",
 	}
+	migrations := []string{
+		"sql/migrations/common/*",
+		"sql/migrations/main/*",
+	}
 
-	os.MkdirAll(path, 0o700)
+	_ = os.MkdirAll(path, 0o700)
 	mainPath := filepath.Join(path, "main.db")
-	mainBase, err := openBase(mainPath, maxDBConns, pragmas, schemas, nil)
+	mainBase, err := openBase(mainPath, maxDBConns, pragmas, schemas, migrations)
 	if err != nil {
 		return nil, err
 	}
@@ -88,10 +92,14 @@ func OpenForMigration(path string) (*DB, error) {
 		"sql/schema/common/*",
 		"sql/schema/main/*",
 	}
+	migrations := []string{
+		"sql/migrations/common/*",
+		"sql/migrations/main/*",
+	}
 
-	os.MkdirAll(path, 0o700)
+	_ = os.MkdirAll(path, 0o700)
 	mainPath := filepath.Join(path, "main.db")
-	mainBase, err := openBase(mainPath, 1, pragmas, schemas, nil)
+	mainBase, err := openBase(mainPath, 1, pragmas, schemas, migrations)
 	if err != nil {
 		return nil, err
 	}

+ 5 - 3
internal/db/sqlite/db_service.go

@@ -84,8 +84,11 @@ func (s *Service) periodic(ctx context.Context) error {
 	defer func() { l.Debugln("Periodic done in", time.Since(t1), "+", t1.Sub(t0)) }()
 
 	s.sdb.updateLock.Lock()
-	tidy(ctx, s.sdb.sql)
+	err := tidy(ctx, s.sdb.sql)
 	s.sdb.updateLock.Unlock()
+	if err != nil {
+		return err
+	}
 
 	return wrap(s.sdb.forEachFolder(func(fdb *folderDB) error {
 		fdb.updateLock.Lock()
@@ -97,8 +100,7 @@ func (s *Service) periodic(ctx context.Context) error {
 		if err := garbageCollectBlocklistsAndBlocksLocked(ctx, fdb); err != nil {
 			return wrap(err)
 		}
-		tidy(ctx, fdb.sql)
-		return nil
+		return tidy(ctx, fdb.sql)
 	}))
 }
 

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

@@ -32,8 +32,12 @@ func openFolderDB(folder, path string, deleteRetention time.Duration) (*folderDB
 		"sql/schema/common/*",
 		"sql/schema/folder/*",
 	}
+	migrations := []string{
+		"sql/migrations/common/*",
+		"sql/migrations/folder/*",
+	}
 
-	base, err := openBase(path, maxDBConns, pragmas, schemas, nil)
+	base, err := openBase(path, maxDBConns, pragmas, schemas, migrations)
 	if err != nil {
 		return nil, err
 	}

+ 5 - 4
internal/db/sqlite/folderdb_update.go

@@ -433,7 +433,7 @@ type fileRow struct {
 
 func (e fileRow) Compare(other fileRow) int {
 	// From FileInfo.WinsConflict
-	vc := e.Version.Vector.Compare(other.Version.Vector)
+	vc := e.Version.Compare(other.Version.Vector)
 	switch vc {
 	case protocol.Equal:
 		if e.Invalid != other.Invalid {
@@ -519,11 +519,12 @@ func (s *folderDB) periodicCheckpointLocked(fs []protocol.FileInfo) {
 		// failed, we'll keep trying it until we succeed. Increase it faster
 		// when we fail to checkpoint, as it's more likely the WAL is
 		// growing and will need truncation when we get out of this state.
-		if res == 1 {
+		switch {
+		case res == 1:
 			s.checkpointsCount += 10
-		} else if res == 0 && checkpointType == "TRUNCATE" {
+		case res == 0 && checkpointType == "TRUNCATE":
 			s.checkpointsCount = 0
-		} else {
+		default:
 			s.checkpointsCount++
 		}
 		s.updatePoints = 0