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"`
|
Page int `json:"page"`
|
||||||
PageSize int `json:"pageSize"`
|
PageSize int `json:"pageSize"`
|
||||||
RedirectType redirectstore.RedirectionType `json:"type,omitempty"`
|
RedirectType redirectstore.RedirectionType `json:"type,omitempty"`
|
||||||
Sort redirectrepository.Sort `json:"sort"`
|
Sort redirectstore.Sort `json:"sort"`
|
||||||
}
|
}
|
||||||
// SearchHandlerFn handler
|
// SearchHandlerFn handler
|
||||||
SearchHandlerFn func(ctx context.Context, l *zap.Logger, qry Search) (*redirectstore.PaginatedResult, error)
|
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
|
// 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)
|
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"
|
"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 (
|
type (
|
||||||
RedirectsDefinitionRepository interface {
|
RedirectsDefinitionRepository interface {
|
||||||
FindOne(ctx context.Context, id, source string) (*redirectstore.RedirectDefinition, error)
|
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)
|
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)
|
FindAllByDimension(ctx context.Context, dimension redirectstore.Dimension, onlyActive bool) (map[redirectstore.RedirectSource]*redirectstore.RedirectDefinition, error)
|
||||||
Insert(ctx context.Context, def *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{
|
mongo.IndexModel{
|
||||||
Keys: bson.D{
|
Keys: bson.D{
|
||||||
{Key: string(SortFieldUpdated), Value: 1},
|
{Key: string(redirectstore.SortFieldUpdated), Value: 1},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
mongo.IndexModel{
|
mongo.IndexModel{
|
||||||
Keys: bson.D{
|
Keys: bson.D{
|
||||||
{Key: string(SortFieldLastUpdatedBy), Value: 1},
|
{Key: string(redirectstore.SortFieldLastUpdatedBy), Value: 1},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
// Index for 'source' field (optional for search optimization)
|
// Index for 'source' field (optional for search optimization)
|
||||||
mongo.IndexModel{
|
mongo.IndexModel{
|
||||||
Keys: bson.D{
|
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,
|
source, dimension string,
|
||||||
redirectType redirectstore.RedirectionType,
|
redirectType redirectstore.RedirectionType,
|
||||||
activeState redirectstore.ActiveStateType,
|
activeState redirectstore.ActiveStateType,
|
||||||
pagination Pagination,
|
pagination redirectstore.Pagination,
|
||||||
sort Sort,
|
sort redirectstore.Sort,
|
||||||
) (*redirectstore.PaginatedResult, error) {
|
) (*redirectstore.PaginatedResult, error) {
|
||||||
// Validate pagination
|
// Validate pagination
|
||||||
if pagination.Page < 1 {
|
if pagination.Page < 1 {
|
||||||
@ -170,7 +134,7 @@ func (rs BaseRedirectsDefinitionRepository) FindMany(
|
|||||||
// Sorting settings
|
// Sorting settings
|
||||||
sortField := sort.Field
|
sortField := sort.Field
|
||||||
if sortField == "" {
|
if sortField == "" {
|
||||||
sortField = SortFieldSource // Default sort field
|
sortField = redirectstore.SortFieldSource // Default sort field
|
||||||
}
|
}
|
||||||
opts.SetSort(bson.D{
|
opts.SetSort(bson.D{
|
||||||
{Key: string(sortField), Value: sort.Direction.GetSortValue()},
|
{Key: string(sortField), Value: sort.Direction.GetSortValue()},
|
||||||
|
|||||||
@ -8,7 +8,6 @@ import (
|
|||||||
"github.com/foomo/contentserver/content"
|
"github.com/foomo/contentserver/content"
|
||||||
redirectcommand "github.com/foomo/redirects/v2/domain/redirectdefinition/command"
|
redirectcommand "github.com/foomo/redirects/v2/domain/redirectdefinition/command"
|
||||||
redirectquery "github.com/foomo/redirects/v2/domain/redirectdefinition/query"
|
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"
|
redirectstore "github.com/foomo/redirects/v2/domain/redirectdefinition/store"
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
)
|
)
|
||||||
@ -20,7 +19,7 @@ type SearchParams struct {
|
|||||||
PageSize int `json:"pageSize"`
|
PageSize int `json:"pageSize"`
|
||||||
RedirectType redirectstore.RedirectionType `json:"type,omitempty"`
|
RedirectType redirectstore.RedirectionType `json:"type,omitempty"`
|
||||||
ActiveState redirectstore.ActiveStateType `json:"activeState,omitempty"`
|
ActiveState redirectstore.ActiveStateType `json:"activeState,omitempty"`
|
||||||
Sort redirectrepository.Sort `json:"sort"`
|
Sort redirectstore.Sort `json:"sort"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type Service struct {
|
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