diff --git a/console/database/saved_filters.go b/console/database/saved_filters.go index e9fae7d4..db9a65cf 100644 --- a/console/database/saved_filters.go +++ b/console/database/saved_filters.go @@ -7,6 +7,8 @@ import ( "context" "errors" "fmt" + + "gorm.io/gorm" ) // SavedFilter represents a saved filter in database. @@ -25,9 +27,10 @@ type SavedFilter struct { // CreateSavedFilter creates a new saved filter in database. func (c *Component) CreateSavedFilter(ctx context.Context, f SavedFilter) error { - result := c.db.WithContext(ctx).Omit("ID").Create(&f) - if result.Error != nil { - return fmt.Errorf("unable to create new saved filter: %w", result.Error) + f.ID = 0 + err := gorm.G[SavedFilter](c.db).Create(ctx, &f) + if err != nil { + return fmt.Errorf("unable to create new saved filter: %w", err) } return nil } @@ -35,23 +38,23 @@ func (c *Component) CreateSavedFilter(ctx context.Context, f SavedFilter) error // ListSavedFilters list all saved filters for the provided user func (c *Component) ListSavedFilters(ctx context.Context, user string) ([]SavedFilter, error) { var results []SavedFilter - result := c.db.WithContext(ctx). - Where(&SavedFilter{User: user}). - Or(&SavedFilter{Shared: true}). - Find(&results) - if result.Error != nil { - return nil, fmt.Errorf("unable to retrieve saved filters: %w", result.Error) + results, err := gorm.G[SavedFilter](c.db). + Where(SavedFilter{User: user}). + Or(SavedFilter{Shared: true}). + Find(ctx) + if err != nil { + return nil, fmt.Errorf("unable to retrieve saved filters: %w", err) } return results, nil } // DeleteSavedFilter deletes the provided saved filter func (c *Component) DeleteSavedFilter(ctx context.Context, f SavedFilter) error { - result := c.db.WithContext(ctx).Where(&SavedFilter{User: f.User}).Delete(&f) - if result.Error != nil { - return fmt.Errorf("cannot delete saved filter: %w", result.Error) + rows, err := gorm.G[SavedFilter](c.db).Where(f).Delete(ctx) + if err != nil { + return fmt.Errorf("cannot delete saved filter: %w", err) } - if result.RowsAffected == 0 { + if rows == 0 { return errors.New("no matching saved filter to delete") } return nil @@ -62,6 +65,8 @@ const systemUser = "__system" // Populate populates the database with the builtin filters. func (c *Component) populate() error { // Add new filters + ctx := context.Background() + db := gorm.G[SavedFilter](c.db) for _, filter := range c.config.SavedFilters { c.r.Debug().Msgf("add builtin filter %q", filter.Description) savedFilter := SavedFilter{ @@ -70,17 +75,18 @@ func (c *Component) populate() error { Description: filter.Description, Content: filter.Content, } - result := c.db.Where(savedFilter).FirstOrCreate(&savedFilter) - if result.Error != nil { - return fmt.Errorf("unable add builtin filter: %w", result.Error) + if _, err := db.Where(savedFilter).First(ctx); err == gorm.ErrRecordNotFound { + err := db.Create(ctx, &savedFilter) + if err != nil { + return fmt.Errorf("unable add builtin filter: %w", err) + } } } // Remove old filters - var results []SavedFilter - result := c.db.Where(SavedFilter{User: systemUser, Shared: true}).Find(&results) - if result.Error != nil { - return fmt.Errorf("cannot get existing builtin filters: %w", result.Error) + results, err := db.Where(SavedFilter{User: systemUser, Shared: true}).Find(ctx) + if err != nil { + return fmt.Errorf("cannot get existing builtin filters: %w", err) } outer: for _, result := range results { @@ -90,8 +96,8 @@ outer: } } c.r.Info().Msgf("remove old builtin filter %q", result.Description) - if result := c.db.Delete(&result); result.Error != nil { - return fmt.Errorf("cannot delete old builtin filter: %w", result.Error) + if _, err := db.Where(result).Delete(ctx); err != nil { + return fmt.Errorf("cannot delete old builtin filter: %w", err) } } diff --git a/go.mod b/go.mod index 85c14baa..167d3b45 100644 --- a/go.mod +++ b/go.mod @@ -58,7 +58,7 @@ require ( gopkg.in/yaml.v3 v3.0.1 gorm.io/driver/mysql v1.5.7 gorm.io/driver/postgres v1.5.11 - gorm.io/gorm v1.26.0 + gorm.io/gorm v1.30.0 ) require ( diff --git a/go.sum b/go.sum index 37e47897..7772fdac 100644 --- a/go.sum +++ b/go.sum @@ -693,6 +693,8 @@ gorm.io/driver/postgres v1.5.11/go.mod h1:DX3GReXH+3FPWGrrgffdvCk3DQ1dwDPdmbenSk gorm.io/gorm v1.25.7/go.mod h1:hbnx/Oo0ChWMn1BIhpy1oYozzpM15i4YPuHDmfYtwg8= gorm.io/gorm v1.26.0 h1:9lqQVPG5aNNS6AyHdRiwScAVnXHg/L/Srzx55G5fOgs= gorm.io/gorm v1.26.0/go.mod h1:8Z33v652h4//uMA76KjeDH8mJXPm1QNCYrMeatR0DOE= +gorm.io/gorm v1.30.0 h1:qbT5aPv1UH8gI99OsRlvDToLxW5zR7FzS9acZDOZcgs= +gorm.io/gorm v1.30.0/go.mod h1:8Z33v652h4//uMA76KjeDH8mJXPm1QNCYrMeatR0DOE= gotest.tools/gotestsum v1.12.1 h1:dvcxFBTFR1QsQmrCQa4k/vDXow9altdYz4CjdW+XeBE= gotest.tools/gotestsum v1.12.1/go.mod h1:mwDmLbx9DIvr09dnAoGgQPLaSXszNpXpWo2bsQge5BE= gotest.tools/v3 v3.5.1 h1:EENdUnS3pdur5nybKYIh2Vfgc8IUNBjxDPSjtiJcOzU=