mirror of
https://github.com/foomo/redirects.git
synced 2025-10-16 12:35:37 +00:00
feat: do not use internal type
This commit is contained in:
parent
320117980e
commit
fb4e385891
@ -22,7 +22,7 @@ type (
|
||||
Page int `json:"page"`
|
||||
PageSize int `json:"pageSize"`
|
||||
RedirectType redirectstore.RedirectionType `json:"type,omitempty"`
|
||||
Sort redirectrepository.Sort `json:"sort"`
|
||||
Sort redirectstore.Sort `json:"sort"`
|
||||
}
|
||||
// SearchHandlerFn handler
|
||||
SearchHandlerFn func(ctx context.Context, l *zap.Logger, qry Search) (*redirectstore.PaginatedResult, error)
|
||||
@ -54,7 +54,7 @@ func SearchHandler(repo redirectrepository.RedirectsDefinitionRepository) Search
|
||||
}
|
||||
|
||||
// Create pagination struct
|
||||
pagination := redirectrepository.Pagination{Page: page, PageSize: pageSize}
|
||||
pagination := redirectstore.Pagination{Page: page, PageSize: pageSize}
|
||||
|
||||
return repo.FindMany(ctx, string(qry.Source), string(qry.Dimension), qry.RedirectType, qry.ActiveState, pagination, qry.Sort)
|
||||
}
|
||||
|
||||
@ -14,46 +14,10 @@ import (
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
type Pagination struct {
|
||||
Page int `json:"page"`
|
||||
PageSize int `json:"pageSize"`
|
||||
}
|
||||
|
||||
type SortField string
|
||||
|
||||
const (
|
||||
SortFieldSource SortField = "source"
|
||||
SortFieldUpdated SortField = "updated"
|
||||
SortFieldLastUpdatedBy SortField = "lastUpdatedBy"
|
||||
)
|
||||
|
||||
type Direction string
|
||||
|
||||
const (
|
||||
DirectionAscending Direction = "ascending"
|
||||
DirectionDescending Direction = "descending"
|
||||
)
|
||||
|
||||
type Sort struct {
|
||||
Field SortField `json:"field"`
|
||||
Direction Direction `json:"direction"`
|
||||
}
|
||||
|
||||
func (d Direction) GetSortValue() int {
|
||||
switch d {
|
||||
case DirectionAscending:
|
||||
return 1
|
||||
case DirectionDescending:
|
||||
return -1
|
||||
default:
|
||||
return 1
|
||||
}
|
||||
}
|
||||
|
||||
type (
|
||||
RedirectsDefinitionRepository interface {
|
||||
FindOne(ctx context.Context, id, source string) (*redirectstore.RedirectDefinition, error)
|
||||
FindMany(ctx context.Context, source, dimension string, redirectType redirectstore.RedirectionType, activeState redirectstore.ActiveStateType, pagination Pagination, sort Sort) (*redirectstore.PaginatedResult, error)
|
||||
FindMany(ctx context.Context, source, dimension string, redirectType redirectstore.RedirectionType, activeState redirectstore.ActiveStateType, pagination redirectstore.Pagination, sort redirectstore.Sort) (*redirectstore.PaginatedResult, error)
|
||||
FindAll(ctx context.Context, onlyActive bool) (defs map[redirectstore.Dimension]map[redirectstore.RedirectSource]*redirectstore.RedirectDefinition, err error)
|
||||
FindAllByDimension(ctx context.Context, dimension redirectstore.Dimension, onlyActive bool) (map[redirectstore.RedirectSource]*redirectstore.RedirectDefinition, error)
|
||||
Insert(ctx context.Context, def *redirectstore.RedirectDefinition) error
|
||||
@ -89,18 +53,18 @@ func NewBaseRedirectsDefinitionRepository(l *zap.Logger, persistor *keelmongo.Pe
|
||||
},
|
||||
mongo.IndexModel{
|
||||
Keys: bson.D{
|
||||
{Key: string(SortFieldUpdated), Value: 1},
|
||||
{Key: string(redirectstore.SortFieldUpdated), Value: 1},
|
||||
},
|
||||
},
|
||||
mongo.IndexModel{
|
||||
Keys: bson.D{
|
||||
{Key: string(SortFieldLastUpdatedBy), Value: 1},
|
||||
{Key: string(redirectstore.SortFieldLastUpdatedBy), Value: 1},
|
||||
},
|
||||
},
|
||||
// Index for 'source' field (optional for search optimization)
|
||||
mongo.IndexModel{
|
||||
Keys: bson.D{
|
||||
{Key: string(SortFieldSource), Value: 1},
|
||||
{Key: string(redirectstore.SortFieldSource), Value: 1},
|
||||
},
|
||||
},
|
||||
),
|
||||
@ -128,8 +92,8 @@ func (rs BaseRedirectsDefinitionRepository) FindMany(
|
||||
source, dimension string,
|
||||
redirectType redirectstore.RedirectionType,
|
||||
activeState redirectstore.ActiveStateType,
|
||||
pagination Pagination,
|
||||
sort Sort,
|
||||
pagination redirectstore.Pagination,
|
||||
sort redirectstore.Sort,
|
||||
) (*redirectstore.PaginatedResult, error) {
|
||||
// Validate pagination
|
||||
if pagination.Page < 1 {
|
||||
@ -170,7 +134,7 @@ func (rs BaseRedirectsDefinitionRepository) FindMany(
|
||||
// Sorting settings
|
||||
sortField := sort.Field
|
||||
if sortField == "" {
|
||||
sortField = SortFieldSource // Default sort field
|
||||
sortField = redirectstore.SortFieldSource // Default sort field
|
||||
}
|
||||
opts.SetSort(bson.D{
|
||||
{Key: string(sortField), Value: sort.Direction.GetSortValue()},
|
||||
|
||||
@ -8,7 +8,6 @@ import (
|
||||
"github.com/foomo/contentserver/content"
|
||||
redirectcommand "github.com/foomo/redirects/v2/domain/redirectdefinition/command"
|
||||
redirectquery "github.com/foomo/redirects/v2/domain/redirectdefinition/query"
|
||||
redirectrepository "github.com/foomo/redirects/v2/domain/redirectdefinition/repository"
|
||||
redirectstore "github.com/foomo/redirects/v2/domain/redirectdefinition/store"
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
@ -20,7 +19,7 @@ type SearchParams struct {
|
||||
PageSize int `json:"pageSize"`
|
||||
RedirectType redirectstore.RedirectionType `json:"type,omitempty"`
|
||||
ActiveState redirectstore.ActiveStateType `json:"activeState,omitempty"`
|
||||
Sort redirectrepository.Sort `json:"sort"`
|
||||
Sort redirectstore.Sort `json:"sort"`
|
||||
}
|
||||
|
||||
type Service struct {
|
||||
|
||||
37
domain/redirectdefinition/store/sorting.go
Normal file
37
domain/redirectdefinition/store/sorting.go
Normal file
@ -0,0 +1,37 @@
|
||||
package redirectstore
|
||||
|
||||
type Pagination struct {
|
||||
Page int `json:"page"`
|
||||
PageSize int `json:"pageSize"`
|
||||
}
|
||||
|
||||
type SortField string
|
||||
|
||||
const (
|
||||
SortFieldSource SortField = "source"
|
||||
SortFieldUpdated SortField = "updated"
|
||||
SortFieldLastUpdatedBy SortField = "lastUpdatedBy"
|
||||
)
|
||||
|
||||
type Direction string
|
||||
|
||||
const (
|
||||
DirectionAscending Direction = "ascending"
|
||||
DirectionDescending Direction = "descending"
|
||||
)
|
||||
|
||||
type Sort struct {
|
||||
Field SortField `json:"field"`
|
||||
Direction Direction `json:"direction"`
|
||||
}
|
||||
|
||||
func (d Direction) GetSortValue() int {
|
||||
switch d {
|
||||
case DirectionAscending:
|
||||
return 1
|
||||
case DirectionDescending:
|
||||
return -1
|
||||
default:
|
||||
return 1
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user