diff --git a/pkg/dataaccess/db_mysql.go b/pkg/dataaccess/db_mysql.go index bd898ed4..dd670df6 100644 --- a/pkg/dataaccess/db_mysql.go +++ b/pkg/dataaccess/db_mysql.go @@ -148,7 +148,7 @@ func (m *mysqlImpl) GetHistory(ctx context.Context, environment ...summary.Envir } // Parse the date. - dt, err := time.Parse(time.DateOnly, d) + dt, err := time.Parse(time.RFC3339, d) if err != nil { slog.Error("Error parsing date", slog.String(logging.KeyError, err.Error())) continue @@ -319,6 +319,9 @@ ORDER by executed_at DESC; &report.Failed, &report.Changed, &report.Total, &report.YamlFile); err != nil { return nil, fmt.Errorf("error scanning rows: %w", err) } + + report.CalculateTimeSince() + reports = append(reports, report) } diff --git a/pkg/dataaccess/db_mysql_test.go b/pkg/dataaccess/db_mysql_test.go index 504717e5..29de25cf 100644 --- a/pkg/dataaccess/db_mysql_test.go +++ b/pkg/dataaccess/db_mysql_test.go @@ -11,6 +11,7 @@ import ( "github.com/Jacobbrewer1/puppet-summary/pkg/codegen/apis/summary" "github.com/Jacobbrewer1/puppet-summary/pkg/entities" "github.com/go-sql-driver/mysql" + "github.com/stretchr/testify/require" "github.com/stretchr/testify/suite" ) @@ -123,9 +124,9 @@ func (s *mysqlSuite) TestGetHistoryAllEnvs() { s.mockDB.ExpectPrepare(expSql1) rows1 := sqlmock.NewRows([]string{"DATE(executed_at)"}). - AddRow("2023-02-21"). - AddRow("2023-02-22"). - AddRow("2023-02-23") + AddRow("2023-02-21T00:00:00Z"). + AddRow("2023-02-22T00:00:00Z"). + AddRow("2023-02-23T00:00:00Z") s.mockDB.ExpectQuery(expSql1). WillReturnRows(rows1) @@ -220,9 +221,9 @@ func (s *mysqlSuite) TestGetHistoryMultipleEnv() { s.mockDB.ExpectPrepare(expSql1) rows1 := sqlmock.NewRows([]string{"DATE(executed_at)"}). - AddRow("2023-02-21"). - AddRow("2023-02-22"). - AddRow("2023-02-23") + AddRow("2023-02-21T00:00:00Z"). + AddRow("2023-02-22T00:00:00Z"). + AddRow("2023-02-23T00:00:00Z") s.mockDB.ExpectQuery(expSql1). WillReturnRows(rows1) @@ -317,9 +318,9 @@ func (s *mysqlSuite) TestGetHistorySingleEnv() { s.mockDB.ExpectPrepare(expSql1) rows1 := sqlmock.NewRows([]string{"DATE(executed_at)"}). - AddRow("2023-02-21"). - AddRow("2023-02-22"). - AddRow("2023-02-23") + AddRow("2023-02-21T00:00:00Z"). + AddRow("2023-02-22T00:00:00Z"). + AddRow("2023-02-23T00:00:00Z") s.mockDB.ExpectQuery(expSql1). WillReturnRows(rows1) @@ -496,7 +497,7 @@ ORDER by executed_at DESC; report, err := s.dbObject.GetReports(ctx, "fqdn") s.Require().NoError(err) - s.Require().Equal([]*entities.PuppetReportSummary{ + reps := []*entities.PuppetReportSummary{ { ID: id1, Fqdn: "fqdn", @@ -521,7 +522,16 @@ ORDER by executed_at DESC; Total: 3, YamlFile: "yaml_file1", }, - }, report) + } + + // Ensure that the time since field is set. + for i := range report { + r := report[i] + require.NotEqual(s.T(), 0, r.TimeSince.Time()) + r.TimeSince = entities.Duration(0) + } + + s.Require().Equal(reps, report) } func (s *mysqlSuite) TestGetRunsByStateSingleState() { diff --git a/pkg/dataaccess/db_sqlite.go b/pkg/dataaccess/db_sqlite.go index 7e26e3d6..cd200a76 100644 --- a/pkg/dataaccess/db_sqlite.go +++ b/pkg/dataaccess/db_sqlite.go @@ -322,6 +322,9 @@ func (s *sqliteImpl) GetReports(ctx context.Context, fqdn string) ([]*entities.P &report.Failed, &report.Changed, &report.Total, &report.YamlFile); err != nil { return nil, fmt.Errorf("error scanning row: %w", err) } + + report.CalculateTimeSince() + reports = append(reports, report) } diff --git a/pkg/dataaccess/db_sqlite_test.go b/pkg/dataaccess/db_sqlite_test.go index ae76aa0c..ae2c1a8a 100644 --- a/pkg/dataaccess/db_sqlite_test.go +++ b/pkg/dataaccess/db_sqlite_test.go @@ -11,6 +11,7 @@ import ( "github.com/DATA-DOG/go-sqlmock" "github.com/Jacobbrewer1/puppet-summary/pkg/codegen/apis/summary" "github.com/Jacobbrewer1/puppet-summary/pkg/entities" + "github.com/stretchr/testify/require" "github.com/stretchr/testify/suite" ) @@ -497,7 +498,7 @@ func (s *sqliteSuite) TestGetReports() { report, err := s.dbObject.GetReports(ctx, "fqdn") s.Require().NoError(err) - s.Require().Equal([]*entities.PuppetReportSummary{ + reps := []*entities.PuppetReportSummary{ { ID: id1, Fqdn: "fqdn", @@ -522,7 +523,16 @@ func (s *sqliteSuite) TestGetReports() { Total: 3, YamlFile: "yaml_file1", }, - }, report) + } + + // Ensure that the time since field is set. + for i := range report { + r := report[i] + require.NotEqual(s.T(), 0, r.TimeSince.Time()) + r.TimeSince = entities.Duration(0) + } + + s.Require().Equal(reps, report) } func (s *sqliteSuite) TestGetRunsByStateSingleState() {