Przeglądaj źródła

Accept versioning data in reports

Jakob Borg 9 lat temu
rodzic
commit
d884768344
1 zmienionych plików z 42 dodań i 7 usunięć
  1. 42 7
      cmd/ursrv/main.go

+ 42 - 7
cmd/ursrv/main.go

@@ -65,10 +65,14 @@ type report struct {
 	URVersion  int
 	NumCPU     int
 	FolderUses struct {
-		ReadOnly      int
-		IgnorePerms   int
-		IgnoreDelete  int
-		AutoNormalize int
+		ReadOnly            int
+		IgnorePerms         int
+		IgnoreDelete        int
+		AutoNormalize       int
+		SimpleVersioning    int
+		ExternalVersioning  int
+		StaggeredVersioning int
+		TrashcanVersioning  int
 	}
 	DeviceUses struct {
 		Introducer       int
@@ -126,7 +130,10 @@ func (r *report) FieldPointers() []interface{} {
 		&r.Announce.DefaultServersDNS, &r.Announce.DefaultServersIP,
 		&r.Announce.OtherServers, &r.Relays.Enabled, &r.Relays.DefaultServers,
 		&r.Relays.OtherServers, &r.UsesRateLimit, &r.UpgradeAllowedManual,
-		&r.UpgradeAllowedAuto}
+		&r.UpgradeAllowedAuto,
+		&r.FolderUses.SimpleVersioning, &r.FolderUses.ExternalVersioning,
+		&r.FolderUses.StaggeredVersioning, &r.FolderUses.TrashcanVersioning,
+	}
 }
 
 func (r *report) FieldNames() []string {
@@ -173,6 +180,11 @@ func (r *report) FieldNames() []string {
 		"RateLimitEnabled",
 		"UpgradeAllowedManual",
 		"UpgradeAllowedAuto",
+		// v0.12.19+
+		"FolderSimpleVersioning",
+		"FolderExternalVersioning",
+		"FolderStaggeredVersioning",
+		"FolderTrashcanVersioning",
 	}
 }
 
@@ -241,7 +253,11 @@ func setupDB(db *sql.DB) error {
 		ADD COLUMN RelayOtherServers INTEGER NOT NULL DEFAULT 0,
 		ADD COLUMN RateLimitEnabled BOOLEAN NOT NULL DEFAULT FALSE,
 		ADD COLUMN UpgradeAllowedManual BOOLEAN NOT NULL DEFAULT FALSE,
-		ADD COLUMN UpgradeAllowedAuto BOOLEAN NOT NULL DEFAULT FALSE
+		ADD COLUMN UpgradeAllowedAuto BOOLEAN NOT NULL DEFAULT FALSE,
+		ADD COLUMN FolderSimpleVersioning INTEGER NOT NULL DEFAULT 0,
+		ADD COLUMN FolderExternalVersioning INTEGER NOT NULL DEFAULT 0,
+		ADD COLUMN FolderStaggeredVersioning INTEGER NOT NULL DEFAULT 0,
+		ADD COLUMN FolderTrashcanVersioning INTEGER NOT NULL DEFAULT 0
 		`)
 		if err != nil {
 			return err
@@ -482,6 +498,10 @@ func getReport(db *sql.DB) map[string]interface{} {
 		"Folders, ignore deletes":                0,
 		"Folders, ignore permissions":            0,
 		"Folders, master mode":                   0,
+		"Folders, simple versioning":             0,
+		"Folders, external versioning":           0,
+		"Folders, staggered versioning":          0,
+		"Folders, trashcan versioning":           0,
 		"Devices, compress always":               0,
 		"Devices, compress metadata":             0,
 		"Devices, compress nothing":              0,
@@ -578,6 +598,18 @@ func getReport(db *sql.DB) map[string]interface{} {
 			if rep.FolderUses.ReadOnly > 0 {
 				features["Folders, master mode"]++
 			}
+			if rep.FolderUses.SimpleVersioning > 0 {
+				features["Folders, simple versioning"]++
+			}
+			if rep.FolderUses.ExternalVersioning > 0 {
+				features["Folders, external versioning"]++
+			}
+			if rep.FolderUses.StaggeredVersioning > 0 {
+				features["Folders, staggered versioning"]++
+			}
+			if rep.FolderUses.TrashcanVersioning > 0 {
+				features["Folders, trashcan versioning"]++
+			}
 			if rep.DeviceUses.CompressAlways > 0 {
 				features["Devices, compress always"]++
 			}
@@ -894,5 +926,8 @@ func (l sortableFeatureList) Swap(a, b int) {
 	l[a], l[b] = l[b], l[a]
 }
 func (l sortableFeatureList) Less(a, b int) bool {
-	return l[a].Pct < l[b].Pct
+	if l[a].Pct != l[b].Pct {
+		return l[a].Pct < l[b].Pct
+	}
+	return l[a].Key > l[b].Key
 }