diff --git a/pkg/dataaccess/db_sqlite.go b/pkg/dataaccess/db_sqlite.go index fba3ee99..6bae322b 100644 --- a/pkg/dataaccess/db_sqlite.go +++ b/pkg/dataaccess/db_sqlite.go @@ -11,7 +11,7 @@ import ( "github.com/Jacobbrewer1/puppet-summary/pkg/entities" "github.com/Jacobbrewer1/puppet-summary/pkg/logging" - sqlite "github.com/mattn/go-sqlite3" + _ "github.com/mattn/go-sqlite3" "github.com/prometheus/client_golang/prometheus" ) @@ -468,9 +468,7 @@ func (s *sqliteImpl) SaveRun(ctx context.Context, run *entities.PuppetReport) er run.Skipped, ) // If the error is that the hash already exists, then we can ignore it. - sqlErr := new(sqlite.Error) - ok := errors.As(err, sqlErr) - if ok && sqlErr.Code == 19 { // 19 is SQLITE_CONSTRAINT violation. + if err != nil && err.Error() == "UNIQUE constraint failed: reports.hash" { // I don't like this, but we get weird import errors if we use errors.Is to do with the sqlite3 driver. slog.Warn("Hash already exists, ignoring", slog.String(logging.KeyHash, run.ID)) return ErrDuplicate } else if err != nil { diff --git a/pkg/dataaccess/db_sqlite_test.go b/pkg/dataaccess/db_sqlite_test.go index 63e52677..daae4582 100644 --- a/pkg/dataaccess/db_sqlite_test.go +++ b/pkg/dataaccess/db_sqlite_test.go @@ -3,13 +3,13 @@ package dataaccess import ( "context" "database/sql" + "errors" "regexp" "testing" "time" "github.com/DATA-DOG/go-sqlmock" "github.com/Jacobbrewer1/puppet-summary/pkg/entities" - "github.com/mattn/go-sqlite3" "github.com/stretchr/testify/suite" ) @@ -656,11 +656,7 @@ func (s *sqliteSuite) TestSaveRunDuplicate() { s.mockDB.ExpectExec(expSql). WithArgs("hash", "fqdn", "PRODUCTION", "CHANGED", "reports/PRODUCTION/fqdn/2024-02-21T10:20:53Z.yaml", now.Format(time.DateTime), "10s", 1, 2, 3, 0). - WillReturnError(sqlite3.Error{ - Code: 19, - ExtendedCode: 2067, - SystemErrno: 0, - }) + WillReturnError(errors.New("UNIQUE constraint failed: reports.hash")) s.mockDB.ExpectClose() @@ -676,5 +672,5 @@ func (s *sqliteSuite) TestSaveRunDuplicate() { Changed: 2, Total: 3, }) - s.Require().EqualError(err, ErrDuplicate.Error()) + s.Require().Equal(ErrDuplicate, err) }