Browse Source

Support fs watcher stuff, add missing fields (#9)

Audrius Butkevicius 8 years ago
parent
commit
335b08e3a8
1 changed files with 35 additions and 1 deletions
  1. 35 1
      cmd/ursrv/main.go

+ 35 - 1
cmd/ursrv/main.go

@@ -20,7 +20,7 @@ import (
 	"sync"
 	"sync"
 	"time"
 	"time"
 
 
-	_ "github.com/lib/pq"
+	"github.com/lib/pq"
 )
 )
 
 
 var (
 var (
@@ -126,6 +126,10 @@ type report struct {
 	UpgradeAllowedManual bool
 	UpgradeAllowedManual bool
 	UpgradeAllowedAuto   bool
 	UpgradeAllowedAuto   bool
 
 
+	// V2.5 fields (fields that were in v2 but never added to the database
+	UpgradeAllowedPre bool
+	RescanIntvs       pq.Int64Array
+
 	// v3 fields
 	// v3 fields
 
 
 	Uptime                     int
 	Uptime                     int
@@ -154,8 +158,10 @@ type report struct {
 		DisableTempIndexes      int
 		DisableTempIndexes      int
 		AlwaysWeakHash          int
 		AlwaysWeakHash          int
 		CustomWeakHashThreshold int
 		CustomWeakHashThreshold int
+		FsWatcherEnabled        int
 		PullOrder               IntMap
 		PullOrder               IntMap
 		FilesystemType          IntMap
 		FilesystemType          IntMap
+		FsWatcherDelays         pq.Int64Array
 	}
 	}
 
 
 	GUIStats struct {
 	GUIStats struct {
@@ -230,6 +236,10 @@ func (r *report) FieldPointers() []interface{} {
 		&r.UpgradeAllowedAuto, &r.FolderUses.SimpleVersioning,
 		&r.UpgradeAllowedAuto, &r.FolderUses.SimpleVersioning,
 		&r.FolderUses.ExternalVersioning, &r.FolderUses.StaggeredVersioning,
 		&r.FolderUses.ExternalVersioning, &r.FolderUses.StaggeredVersioning,
 		&r.FolderUses.TrashcanVersioning,
 		&r.FolderUses.TrashcanVersioning,
+
+		// V2.5
+		&r.UpgradeAllowedPre, &r.RescanIntvs,
+
 		// V3
 		// V3
 		&r.Uptime, &r.NATType, &r.AlwaysLocalNets, &r.CacheIgnoredFiles,
 		&r.Uptime, &r.NATType, &r.AlwaysLocalNets, &r.CacheIgnoredFiles,
 		&r.OverwriteRemoteDeviceNames, &r.ProgressEmitterEnabled, &r.CustomDefaultFolderPath,
 		&r.OverwriteRemoteDeviceNames, &r.ProgressEmitterEnabled, &r.CustomDefaultFolderPath,
@@ -241,7 +251,10 @@ func (r *report) FieldPointers() []interface{} {
 		&r.FolderUsesV3.ConflictsUnlimited, &r.FolderUsesV3.ConflictsOther,
 		&r.FolderUsesV3.ConflictsUnlimited, &r.FolderUsesV3.ConflictsOther,
 		&r.FolderUsesV3.DisableSparseFiles, &r.FolderUsesV3.DisableTempIndexes,
 		&r.FolderUsesV3.DisableSparseFiles, &r.FolderUsesV3.DisableTempIndexes,
 		&r.FolderUsesV3.AlwaysWeakHash, &r.FolderUsesV3.CustomWeakHashThreshold,
 		&r.FolderUsesV3.AlwaysWeakHash, &r.FolderUsesV3.CustomWeakHashThreshold,
+		&r.FolderUsesV3.FsWatcherEnabled,
+
 		&r.FolderUsesV3.PullOrder, &r.FolderUsesV3.FilesystemType,
 		&r.FolderUsesV3.PullOrder, &r.FolderUsesV3.FilesystemType,
+		&r.FolderUsesV3.FsWatcherDelays,
 
 
 		&r.GUIStats.Enabled, &r.GUIStats.UseTLS, &r.GUIStats.UseAuth,
 		&r.GUIStats.Enabled, &r.GUIStats.UseTLS, &r.GUIStats.UseAuth,
 		&r.GUIStats.InsecureAdminAccess,
 		&r.GUIStats.InsecureAdminAccess,
@@ -310,6 +323,9 @@ func (r *report) FieldNames() []string {
 		"FolderExternalVersioning",
 		"FolderExternalVersioning",
 		"FolderStaggeredVersioning",
 		"FolderStaggeredVersioning",
 		"FolderTrashcanVersioning",
 		"FolderTrashcanVersioning",
+		// V2.5
+		"UpgradeAllowedPre",
+		"RescanIntvs",
 		// V3
 		// V3
 		"Uptime",
 		"Uptime",
 		"NATType",
 		"NATType",
@@ -336,8 +352,10 @@ func (r *report) FieldNames() []string {
 		"FolderDisableTempIndexes",
 		"FolderDisableTempIndexes",
 		"FolderAlwaysWeakHash",
 		"FolderAlwaysWeakHash",
 		"FolderCustomWeakHashThreshold",
 		"FolderCustomWeakHashThreshold",
+		"FolderFsWatcherEnabled",
 		"FolderPullOrder",
 		"FolderPullOrder",
 		"FolderFilesystemType",
 		"FolderFilesystemType",
+		"FolderFsWatcherDelays",
 
 
 		"GUIEnabled",
 		"GUIEnabled",
 		"GUIUseTLS",
 		"GUIUseTLS",
@@ -456,6 +474,20 @@ func setupDB(db *sql.DB) error {
 		}
 		}
 	}
 	}
 
 
+	// V2.5
+
+	row = db.QueryRow(`SELECT attname FROM pg_attribute WHERE attrelid = (SELECT oid FROM pg_class WHERE relname = 'reports') AND attname = 'upgradeallowedpre'`)
+	if err := row.Scan(&t); err != nil {
+		// The ReportVersion column doesn't exist; add the new columns.
+		_, err = db.Exec(`ALTER TABLE Reports
+		ADD COLUMN UpgradeAllowedPre BOOLEAN NOT NULL DEFAULT FALSE,
+		ADD COLUMN RescanIntvs INT[] NOT NULL DEFAULT '{}'
+		`)
+		if err != nil {
+			return err
+		}
+	}
+
 	// V3
 	// V3
 
 
 	row = db.QueryRow(`SELECT attname FROM pg_attribute WHERE attrelid = (SELECT oid FROM pg_class WHERE relname = 'reports') AND attname = 'uptime'`)
 	row = db.QueryRow(`SELECT attname FROM pg_attribute WHERE attrelid = (SELECT oid FROM pg_class WHERE relname = 'reports') AND attname = 'uptime'`)
@@ -487,8 +519,10 @@ func setupDB(db *sql.DB) error {
 		ADD COLUMN FolderDisableTempIndexes INTEGER NOT NULL DEFAULT 0,
 		ADD COLUMN FolderDisableTempIndexes INTEGER NOT NULL DEFAULT 0,
 		ADD COLUMN FolderAlwaysWeakHash INTEGER NOT NULL DEFAULT 0,
 		ADD COLUMN FolderAlwaysWeakHash INTEGER NOT NULL DEFAULT 0,
 		ADD COLUMN FolderCustomWeakHashThreshold INTEGER NOT NULL DEFAULT 0,
 		ADD COLUMN FolderCustomWeakHashThreshold INTEGER NOT NULL DEFAULT 0,
+		ADD COLUMN FolderFsWatcherEnabled INTEGER NOT NULL DEFAULT 0,
 		ADD COLUMN FolderPullOrder JSONB NOT NULL DEFAULT '{}',
 		ADD COLUMN FolderPullOrder JSONB NOT NULL DEFAULT '{}',
 		ADD COLUMN FolderFilesystemType JSONB NOT NULL DEFAULT '{}',
 		ADD COLUMN FolderFilesystemType JSONB NOT NULL DEFAULT '{}',
+		ADD COLUMN FolderFsWatcherDelays INT[] NOT NULL DEFAULT '{}',
 
 
 		ADD COLUMN GUIEnabled INTEGER NOT NULL DEFAULT 0,
 		ADD COLUMN GUIEnabled INTEGER NOT NULL DEFAULT 0,
 		ADD COLUMN GUIUseTLS INTEGER NOT NULL DEFAULT 0,
 		ADD COLUMN GUIUseTLS INTEGER NOT NULL DEFAULT 0,