diff --git a/webapp/backend/pkg/database/scrutiny_repository.go b/webapp/backend/pkg/database/scrutiny_repository.go index 0753a48..e5429f8 100644 --- a/webapp/backend/pkg/database/scrutiny_repository.go +++ b/webapp/backend/pkg/database/scrutiny_repository.go @@ -28,6 +28,11 @@ const ( // 60seconds * 60minutes * 24hours * 7 days * (52 + 52 + 4)weeks RETENTION_PERIOD_25_MONTHS_IN_SECONDS = 65_318_400 + + DURATION_KEY_WEEK = "week" + DURATION_KEY_MONTH = "month" + DURATION_KEY_YEAR = "year" + DURATION_KEY_FOREVER = "forever" ) //// GormLogger is a custom logger for Gorm, making it use logrus. @@ -63,7 +68,7 @@ func NewScrutinyRepository(appConfig config.Interface, globalLogger logrus.Field //Logger: logger }) if err != nil { - return nil, fmt.Errorf("Failed to connect to database!") + return nil, fmt.Errorf("Failed to connect to database! - %v", err) } //database.SetLogger() @@ -338,7 +343,7 @@ func (sr *scrutinyRepository) GetDevices(ctx context.Context) ([]models.Device, //Get a list of all the active devices. devices := []models.Device{} if err := sr.gormClient.WithContext(ctx).Find(&devices).Error; err != nil { - return nil, fmt.Errorf("Could not get device summary from DB", err) + return nil, fmt.Errorf("Could not get device summary from DB: %v", err) } return devices, nil } @@ -347,7 +352,7 @@ func (sr *scrutinyRepository) GetDevices(ctx context.Context) ([]models.Device, func (sr *scrutinyRepository) UpdateDevice(ctx context.Context, wwn string, collectorSmartData collector.SmartInfo) (models.Device, error) { var device models.Device if err := sr.gormClient.WithContext(ctx).Where("wwn = ?", wwn).First(&device).Error; err != nil { - return device, fmt.Errorf("Could not get device from DB", err) + return device, fmt.Errorf("Could not get device from DB: %v", err) } //TODO catch GormClient err @@ -362,7 +367,7 @@ func (sr *scrutinyRepository) UpdateDevice(ctx context.Context, wwn string, coll func (sr *scrutinyRepository) UpdateDeviceStatus(ctx context.Context, wwn string, status pkg.DeviceStatus) (models.Device, error) { var device models.Device if err := sr.gormClient.WithContext(ctx).Where("wwn = ?", wwn).First(&device).Error; err != nil { - return device, fmt.Errorf("Could not get device from DB", err) + return device, fmt.Errorf("Could not get device from DB: %v", err) } device.DeviceStatus = pkg.Set(device.DeviceStatus, status) @@ -516,7 +521,7 @@ func (sr *scrutinyRepository) SaveSmartTemperature(ctx context.Context, wwn stri } func (sr *scrutinyRepository) GetSmartTemperatureHistory(ctx context.Context, durationKey string) (map[string][]measurements.SmartTemperature, error) { - //we can get temp history for "week", "month", "year", "forever" + //we can get temp history for "week", "month", DURATION_KEY_YEAR, "forever" deviceTempHistory := map[string][]measurements.SmartTemperature{} @@ -622,7 +627,7 @@ func (sr *scrutinyRepository) GetSummary(ctx context.Context) (map[string]*model return nil, err } - deviceTempHistory, err := sr.GetSmartTemperatureHistory(ctx, "week") + deviceTempHistory, err := sr.GetSmartTemperatureHistory(ctx, DURATION_KEY_WEEK) if err != nil { sr.logger.Printf("========================>>>>>>>>======================") sr.logger.Printf("========================>>>>>>>>======================") @@ -644,16 +649,16 @@ func (sr *scrutinyRepository) GetSummary(ctx context.Context) (map[string]*model func (sr *scrutinyRepository) lookupBucketName(durationKey string) string { switch durationKey { - case "week": + case DURATION_KEY_WEEK: //data stored in the last week return sr.appConfig.GetString("web.influxdb.bucket") - case "month": + case DURATION_KEY_MONTH: // data stored in the last month (after the first week) return fmt.Sprintf("%s_weekly", sr.appConfig.GetString("web.influxdb.bucket")) - case "year": + case DURATION_KEY_YEAR: // data stored in the last year (after the first month) return fmt.Sprintf("%s_monthly", sr.appConfig.GetString("web.influxdb.bucket")) - case "forever": + case DURATION_KEY_FOREVER: //data stored before the last year return fmt.Sprintf("%s_yearly", sr.appConfig.GetString("web.influxdb.bucket")) } @@ -663,16 +668,16 @@ func (sr *scrutinyRepository) lookupBucketName(durationKey string) string { func (sr *scrutinyRepository) lookupDuration(durationKey string) []string { switch durationKey { - case "week": + case DURATION_KEY_WEEK: //data stored in the last week return []string{"-1w", "now()"} - case "month": + case DURATION_KEY_MONTH: // data stored in the last month (after the first week) return []string{"-1mo", "-1w"} - case "year": + case DURATION_KEY_YEAR: // data stored in the last year (after the first month) return []string{"-1y", "-1mo"} - case "forever": + case DURATION_KEY_FOREVER: //data stored before the last year return []string{"-10y", "-1y"} } @@ -681,20 +686,20 @@ func (sr *scrutinyRepository) lookupDuration(durationKey string) []string { func (sr *scrutinyRepository) lookupNestedDurationKeys(durationKey string) []string { switch durationKey { - case "week": + case DURATION_KEY_WEEK: //all data is stored in a single bucket - return []string{"week"} - case "month": + return []string{DURATION_KEY_WEEK} + case DURATION_KEY_MONTH: //data is stored in the week bucket and the month bucket - return []string{"week", "month"} - case "year": + return []string{DURATION_KEY_WEEK, DURATION_KEY_MONTH} + case DURATION_KEY_YEAR: // data stored in the last year (after the first month) - return []string{"week", "month", "year"} - case "forever": + return []string{DURATION_KEY_WEEK, DURATION_KEY_MONTH, DURATION_KEY_YEAR} + case DURATION_KEY_FOREVER: //data stored before the last year - return []string{"week", "month", "year"} + return []string{DURATION_KEY_WEEK, DURATION_KEY_MONTH, DURATION_KEY_YEAR} } - return []string{"week"} + return []string{DURATION_KEY_WEEK} } func (sr *scrutinyRepository) aggregateTempQuery(durationKey string) string {