Skip to content

Commit

Permalink
fix: query not using key
Browse files Browse the repository at this point in the history
ImSoZRious committed Dec 18, 2023
1 parent d2c2e58 commit cb5d6ee
Showing 5 changed files with 32 additions and 5 deletions.
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -4,12 +4,17 @@ All notable changes to this project will be documented in this file.

## [unreleased]

### Bug Fixes

- Query not using key

### Features

- Init

### Miscellaneous Tasks

- Setup `CHANGELOG.md`
- Update contribution

<!-- generated by git-cliff -->
1 change: 1 addition & 0 deletions di/wire.go
Original file line number Diff line number Diff line change
@@ -38,6 +38,7 @@ func Init() (Container, error) {
database.New, cache.New,
featureflag.NewHandler,
featureflag.NewService,
featureflag.NewRepository,
logger.InitLogger,
)

3 changes: 2 additions & 1 deletion di/wire_gen.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

20 changes: 20 additions & 0 deletions internal/feature_flag/feature_flag.repository.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package featureflag

import "gorm.io/gorm"

type Repository interface {
FindOneByKey(result *FeatureFlag, key string) error
}

type repositoryImpl struct {
db *gorm.DB
}

func NewRepository(db *gorm.DB) Repository {
return &repositoryImpl{
db,
}
}
func (r *repositoryImpl) FindOneByKey(result *FeatureFlag, key string) error {
return r.db.Model(result).First(result, "key = ?", key).Error
}
8 changes: 4 additions & 4 deletions internal/feature_flag/feature_flag.service.go
Original file line number Diff line number Diff line change
@@ -15,16 +15,16 @@ type Service interface {
GetFlag(ctx context.Context, key string) (bool, *apperror.AppError)
}

func NewService(db *gorm.DB, redis *redis.Client, logger *zap.Logger) Service {
func NewService(repo Repository, redis *redis.Client, logger *zap.Logger) Service {
return &serviceImpl{
db,
repo,
redis,
logger,
}
}

type serviceImpl struct {
db *gorm.DB
repo Repository
redis *redis.Client
logger *zap.Logger
}
@@ -33,7 +33,7 @@ func (h *serviceImpl) GetFlag(ctx context.Context, key string) (bool, *apperror.
res, err := h.redis.Get(ctx, key).Result()
if err == redis.Nil {
var res FeatureFlag
if err := h.db.First(&res).Error; errors.Is(err, gorm.ErrRecordNotFound) {
if err := h.repo.FindOneByKey(&res, key); errors.Is(err, gorm.ErrRecordNotFound) {
return false, apperror.InvalidFeatureFlagKey
} else if err != nil {
h.logger.Error("unable to query feature flag value from database", zap.String("key", key))

0 comments on commit cb5d6ee

Please sign in to comment.