Skip to content

Commit b188cd6

Browse files
authored
Merge pull request #35 from foomo/release/2.2.0
feat: upgrade tooling to latest standards and migrate to mongo-driver v2
2 parents ae6091b + cc88474 commit b188cd6

33 files changed

+979
-777
lines changed

.github/workflows/release.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: Releases Tag
1+
name: Release Tag
22

33
on:
44
push:

.github/workflows/test.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,12 @@ name: Test Branch
33
on:
44
push:
55
branches: [ main ]
6+
merge_group:
67
pull_request:
78
workflow_dispatch:
89

910
permissions:
1011
contents: read
11-
pull-requests: write
1212

1313
concurrency:
1414
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}

.golangci.yaml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,6 @@ linters:
99
default: all
1010
disable:
1111
# Project specific linters
12-
- godoclint
13-
- paralleltest
14-
- nonamedreturns
1512
# Discouraged linters
1613
- noinlineerr # Disallows inline error handling (`if err := ...; err != nil {`).
1714
- embeddedstructfieldcheck # Embedded types should be at the top of the field list of a struct, and there must be an empty line separating embedded fields from regular fields. [fast]

.mise.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,4 @@ lefthook = "2.1.4"
44
# https://mise-tools.jdx.dev/tools/golangci-lint
55
golangci-lint = "2.11.3"
66
# https://github.com/foomo/gotsrpc/releases
7-
"github:foomo/gotsrpc" = "2.8.1"
7+
"github:foomo/gotsrpc" = "2.14.0"

domain/redirectdefinition/api.go

Lines changed: 45 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@ import (
55
"errors"
66
"time"
77

8-
redirectcommand "github.com/foomo/redirects/v2/domain/redirectdefinition/command"
9-
redirectquery "github.com/foomo/redirects/v2/domain/redirectdefinition/query"
10-
redirectrepository "github.com/foomo/redirects/v2/domain/redirectdefinition/repository"
11-
redirectstore "github.com/foomo/redirects/v2/domain/redirectdefinition/store"
12-
redirectnats "github.com/foomo/redirects/v2/pkg/nats"
13-
redirectprovider "github.com/foomo/redirects/v2/pkg/provider"
8+
commandx "github.com/foomo/redirects/v2/domain/redirectdefinition/command"
9+
queryx "github.com/foomo/redirects/v2/domain/redirectdefinition/query"
10+
repositoryx "github.com/foomo/redirects/v2/domain/redirectdefinition/repository"
11+
storex "github.com/foomo/redirects/v2/domain/redirectdefinition/store"
12+
natsx "github.com/foomo/redirects/v2/pkg/nats"
13+
providerx "github.com/foomo/redirects/v2/pkg/provider"
1414
"go.uber.org/zap"
1515
)
1616

@@ -20,19 +20,19 @@ type (
2020
l *zap.Logger
2121
qry Queries
2222
cmd Commands
23-
repo redirectrepository.RedirectsDefinitionRepository
24-
getSiteIdentifierProvider redirectprovider.SiteIdentifierProviderFunc
25-
restrictedSourcesProvider redirectprovider.RestrictedSourcesProviderFunc
26-
userProvider redirectprovider.UserProviderFunc
27-
isAutomaticRedirectInitiallyStaleProvider redirectprovider.IsAutomaticRedirectInitiallyStaleProviderFunc
23+
repo repositoryx.RedirectsDefinitionRepository
24+
getSiteIdentifierProvider providerx.SiteIdentifierProviderFunc
25+
restrictedSourcesProvider providerx.RestrictedSourcesProviderFunc
26+
userProvider providerx.UserProviderFunc
27+
isAutomaticRedirectInitiallyStaleProvider providerx.IsAutomaticRedirectInitiallyStaleProviderFunc
2828
}
2929
Option func(api *API)
3030
)
3131

3232
func NewAPI(
3333
l *zap.Logger,
34-
repo redirectrepository.RedirectsDefinitionRepository,
35-
updateSignal *redirectnats.UpdateSignal,
34+
repo repositoryx.RedirectsDefinitionRepository,
35+
updateSignal *natsx.UpdateSignal,
3636
opts ...Option,
3737
) (*API, error) {
3838
inst := &API{
@@ -51,37 +51,37 @@ func NewAPI(
5151
}
5252

5353
inst.cmd = Commands{
54-
CreateRedirects: redirectcommand.CreateRedirectsHandlerComposed(
55-
redirectcommand.CreateRedirectsHandler(inst.repo),
56-
redirectcommand.CreateRedirectsConsolidateMiddleware(repo, false),
57-
redirectcommand.CreateRedirectsAutoCreateMiddleware(inst.isAutomaticRedirectInitiallyStaleProvider()),
58-
redirectcommand.CreateRedirectsPublishMiddleware(updateSignal, repo),
54+
CreateRedirects: commandx.CreateRedirectsHandlerComposed(
55+
commandx.CreateRedirectsHandler(inst.repo),
56+
commandx.CreateRedirectsConsolidateMiddleware(repo, false),
57+
commandx.CreateRedirectsAutoCreateMiddleware(inst.isAutomaticRedirectInitiallyStaleProvider()),
58+
commandx.CreateRedirectsPublishMiddleware(updateSignal, repo),
5959
),
60-
CreateRedirect: redirectcommand.CreateRedirectHandlerComposed(
61-
redirectcommand.CreateRedirectHandler(inst.repo),
62-
redirectcommand.ValidateRedirectMiddleware(inst.restrictedSourcesProvider, inst.repo),
63-
redirectcommand.CreateRedirectPublishMiddleware(updateSignal, repo),
60+
CreateRedirect: commandx.CreateRedirectHandlerComposed(
61+
commandx.CreateRedirectHandler(inst.repo),
62+
commandx.ValidateRedirectMiddleware(inst.restrictedSourcesProvider, inst.repo),
63+
commandx.CreateRedirectPublishMiddleware(updateSignal, repo),
6464
),
65-
UpdateRedirect: redirectcommand.UpdateRedirectHandlerComposed(
66-
redirectcommand.UpdateRedirectHandler(inst.repo),
67-
redirectcommand.ValidateUpdateRedirectMiddleware(inst.restrictedSourcesProvider, inst.repo),
68-
redirectcommand.UpdateRedirectPublishMiddleware(updateSignal, repo),
65+
UpdateRedirect: commandx.UpdateRedirectHandlerComposed(
66+
commandx.UpdateRedirectHandler(inst.repo),
67+
commandx.ValidateUpdateRedirectMiddleware(inst.restrictedSourcesProvider, inst.repo),
68+
commandx.UpdateRedirectPublishMiddleware(updateSignal, repo),
6969
),
70-
DeleteRedirect: redirectcommand.DeleteRedirectHandlerComposed(
71-
redirectcommand.DeleteRedirectHandler(inst.repo),
72-
redirectcommand.DeleteRedirectPublishMiddleware(updateSignal, repo),
70+
DeleteRedirect: commandx.DeleteRedirectHandlerComposed(
71+
commandx.DeleteRedirectHandler(inst.repo),
72+
commandx.DeleteRedirectPublishMiddleware(updateSignal, repo),
7373
),
74-
UpdateRedirectsState: redirectcommand.UpdateRedirectsStateHandlerComposed(
75-
redirectcommand.UpdateRedirectsStateHandler(inst.repo),
76-
redirectcommand.UpdateRedirectsStatePublishMiddleware(updateSignal, repo),
74+
UpdateRedirectsState: commandx.UpdateRedirectsStateHandlerComposed(
75+
commandx.UpdateRedirectsStateHandler(inst.repo),
76+
commandx.UpdateRedirectsStatePublishMiddleware(updateSignal, repo),
7777
),
7878
}
7979
inst.qry = Queries{
80-
GetRedirects: redirectquery.GetRedirectsHandlerComposed(
81-
redirectquery.GetRedirectsHandler(inst.repo),
80+
GetRedirects: queryx.GetRedirectsHandlerComposed(
81+
queryx.GetRedirectsHandler(inst.repo),
8282
),
83-
Search: redirectquery.SearchHandlerComposed(
84-
redirectquery.SearchHandler(inst.repo),
83+
Search: queryx.SearchHandlerComposed(
84+
queryx.SearchHandler(inst.repo),
8585
),
8686
}
8787

@@ -92,42 +92,42 @@ func NewAPI(
9292
// ~ Public methods
9393
// ------------------------------------------------------------------------------------------------
9494

95-
func (a *API) CreateRedirects(ctx context.Context, cmd redirectcommand.CreateRedirects) error {
95+
func (a *API) CreateRedirects(ctx context.Context, cmd commandx.CreateRedirects) error {
9696
return a.cmd.CreateRedirects(ctx, a.l, cmd)
9797
}
9898

99-
func (a *API) CreateRedirect(ctx context.Context, cmd redirectcommand.CreateRedirect) error {
99+
func (a *API) CreateRedirect(ctx context.Context, cmd commandx.CreateRedirect) error {
100100
return a.cmd.CreateRedirect(ctx, a.l, cmd)
101101
}
102102

103-
func (a *API) UpdateRedirect(ctx context.Context, cmd redirectcommand.UpdateRedirect) error {
103+
func (a *API) UpdateRedirect(ctx context.Context, cmd commandx.UpdateRedirect) error {
104104
return a.cmd.UpdateRedirect(ctx, a.l, cmd)
105105
}
106106

107-
func (a *API) UpdateRedirectsState(ctx context.Context, cmd redirectcommand.UpdateRedirectsState) error {
107+
func (a *API) UpdateRedirectsState(ctx context.Context, cmd commandx.UpdateRedirectsState) error {
108108
return a.cmd.UpdateRedirectsState(ctx, a.l, cmd)
109109
}
110110

111-
func (a *API) DeleteRedirect(ctx context.Context, cmd redirectcommand.DeleteRedirect) error {
111+
func (a *API) DeleteRedirect(ctx context.Context, cmd commandx.DeleteRedirect) error {
112112
return a.cmd.DeleteRedirect(ctx, a.l, cmd)
113113
}
114114

115-
func (a *API) GetRedirects(ctx context.Context) (map[redirectstore.Dimension]map[redirectstore.RedirectSource]*redirectstore.RedirectDefinition, error) {
115+
func (a *API) GetRedirects(ctx context.Context) (map[storex.Dimension]map[storex.RedirectSource]*storex.RedirectDefinition, error) {
116116
return a.qry.GetRedirects(ctx, a.l)
117117
}
118118

119-
func (a *API) Search(ctx context.Context, qry redirectquery.Search) (*redirectstore.PaginatedResult, error) {
119+
func (a *API) Search(ctx context.Context, qry queryx.Search) (*storex.PaginatedResult, error) {
120120
return a.qry.Search(ctx, a.l, qry)
121121
}
122122

123-
func (a *API) setLastUpdatedBy(ctx context.Context, definition *redirectstore.RedirectDefinition) {
123+
func (a *API) setLastUpdatedBy(ctx context.Context, definition *storex.RedirectDefinition) {
124124
if definition != nil {
125125
username := a.userProvider(ctx)
126126
if username == "" {
127127
username = "unknown"
128128
}
129129

130130
definition.LastUpdatedBy = username
131-
definition.Updated = redirectstore.NewDateTime(time.Now())
131+
definition.Updated = storex.NewDateTime(time.Now())
132132
}
133133
}

domain/redirectdefinition/command/createredirect.go

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,18 @@ import (
66
"runtime"
77
"strings"
88

9-
redirectrepository "github.com/foomo/redirects/v2/domain/redirectdefinition/repository"
10-
redirectstore "github.com/foomo/redirects/v2/domain/redirectdefinition/store"
11-
redirectnats "github.com/foomo/redirects/v2/pkg/nats"
12-
redirectprovider "github.com/foomo/redirects/v2/pkg/provider"
9+
repositoryx "github.com/foomo/redirects/v2/domain/redirectdefinition/repository"
10+
storex "github.com/foomo/redirects/v2/domain/redirectdefinition/store"
11+
natsx "github.com/foomo/redirects/v2/pkg/nats"
12+
providerx "github.com/foomo/redirects/v2/pkg/provider"
1313
"go.opentelemetry.io/otel/trace"
1414
"go.uber.org/zap"
1515
)
1616

1717
type (
1818
// CreateRedirect command
1919
CreateRedirect struct {
20-
RedirectDefinition *redirectstore.RedirectDefinition `json:"redirectDefinition"`
20+
RedirectDefinition *storex.RedirectDefinition `json:"redirectDefinition"`
2121
}
2222
// CreateRedirectHandlerFn handler
2323
CreateRedirectHandlerFn func(ctx context.Context, l *zap.Logger, cmd CreateRedirect) error
@@ -26,7 +26,7 @@ type (
2626
)
2727

2828
// CreateRedirectHandler ...
29-
func CreateRedirectHandler(repo redirectrepository.RedirectsDefinitionRepository) CreateRedirectHandlerFn {
29+
func CreateRedirectHandler(repo repositoryx.RedirectsDefinitionRepository) CreateRedirectHandlerFn {
3030
return func(ctx context.Context, _ *zap.Logger, cmd CreateRedirect) error {
3131
return repo.Insert(ctx, cmd.RedirectDefinition)
3232
}
@@ -55,7 +55,7 @@ func CreateRedirectHandlerComposed(handler CreateRedirectHandlerFn, middlewares
5555
}
5656

5757
// CreateRedirectPublishMiddleware ...
58-
func CreateRedirectPublishMiddleware(updateSignal *redirectnats.UpdateSignal, repo redirectrepository.RedirectsDefinitionRepository) CreateRedirectMiddlewareFn {
58+
func CreateRedirectPublishMiddleware(updateSignal *natsx.UpdateSignal, repo repositoryx.RedirectsDefinitionRepository) CreateRedirectMiddlewareFn {
5959
return func(next CreateRedirectHandlerFn) CreateRedirectHandlerFn {
6060
return func(ctx context.Context, l *zap.Logger, cmd CreateRedirect) error {
6161
err := next(ctx, l, cmd)
@@ -78,8 +78,8 @@ func CreateRedirectPublishMiddleware(updateSignal *redirectnats.UpdateSignal, re
7878
}
7979

8080
func ValidateRedirectMiddleware(
81-
restrictedSourcesProvider redirectprovider.RestrictedSourcesProviderFunc,
82-
repo redirectrepository.RedirectsDefinitionRepository) CreateRedirectMiddlewareFn {
81+
restrictedSourcesProvider providerx.RestrictedSourcesProviderFunc,
82+
repo repositoryx.RedirectsDefinitionRepository) CreateRedirectMiddlewareFn {
8383
return func(next CreateRedirectHandlerFn) CreateRedirectHandlerFn {
8484
return func(ctx context.Context, l *zap.Logger, cmd CreateRedirect) error {
8585
return validateRedirect(ctx, l, repo, restrictedSourcesProvider, cmd.RedirectDefinition, next)

domain/redirectdefinition/command/createredirectsfromcontentserver.go

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@ import (
88

99
"github.com/foomo/contentserver/content"
1010
keellog "github.com/foomo/keel/log"
11-
redirectrepository "github.com/foomo/redirects/v2/domain/redirectdefinition/repository"
12-
redirectstore "github.com/foomo/redirects/v2/domain/redirectdefinition/store"
13-
redirectdefinitionutils "github.com/foomo/redirects/v2/domain/redirectdefinition/utils"
14-
redirectnats "github.com/foomo/redirects/v2/pkg/nats"
11+
repositoryx "github.com/foomo/redirects/v2/domain/redirectdefinition/repository"
12+
storex "github.com/foomo/redirects/v2/domain/redirectdefinition/store"
13+
utilsx "github.com/foomo/redirects/v2/domain/redirectdefinition/utils"
14+
natsx "github.com/foomo/redirects/v2/pkg/nats"
1515

1616
"go.opentelemetry.io/otel/trace"
1717
"go.uber.org/zap"
@@ -20,10 +20,10 @@ import (
2020
type (
2121
// CreateRedirects command
2222
CreateRedirects struct {
23-
OldState map[string]*content.RepoNode `json:"oldState"`
24-
NewState map[string]*content.RepoNode `json:"newState"`
25-
RedirectsToUpsert []*redirectstore.RedirectDefinition `json:"redirectsToUpsert,omitempty"`
26-
RedirectsToDelete []redirectstore.EntityID `json:"redirectsToDeletee,omitempty"`
23+
OldState map[string]*content.RepoNode `json:"oldState"`
24+
NewState map[string]*content.RepoNode `json:"newState"`
25+
RedirectsToUpsert []*storex.RedirectDefinition `json:"redirectsToUpsert,omitempty"`
26+
RedirectsToDelete []storex.EntityID `json:"redirectsToDeletee,omitempty"`
2727
}
2828
// CreateRedirectsHandlerFn handler
2929
CreateRedirectsHandlerFn func(ctx context.Context, l *zap.Logger, cmd CreateRedirects) error
@@ -32,7 +32,7 @@ type (
3232
)
3333

3434
// CreateRedirectsHandler ...
35-
func CreateRedirectsHandler(repo redirectrepository.RedirectsDefinitionRepository) CreateRedirectsHandlerFn {
35+
func CreateRedirectsHandler(repo repositoryx.RedirectsDefinitionRepository) CreateRedirectsHandlerFn {
3636
return func(ctx context.Context, l *zap.Logger, cmd CreateRedirects) error {
3737
if len(cmd.RedirectsToUpsert) > 0 {
3838
updateErr := repo.UpsertMany(ctx, cmd.RedirectsToUpsert)
@@ -79,7 +79,7 @@ func CreateRedirectsHandlerComposed(handler CreateRedirectsHandlerFn, middleware
7979
}
8080

8181
// CreateRedirectsPublishMiddleware ...
82-
func CreateRedirectsPublishMiddleware(updateSignal *redirectnats.UpdateSignal, repo redirectrepository.RedirectsDefinitionRepository) CreateRedirectsMiddlewareFn {
82+
func CreateRedirectsPublishMiddleware(updateSignal *natsx.UpdateSignal, repo repositoryx.RedirectsDefinitionRepository) CreateRedirectsMiddlewareFn {
8383
return func(next CreateRedirectsHandlerFn) CreateRedirectsHandlerFn {
8484
return func(ctx context.Context, l *zap.Logger, cmd CreateRedirects) error {
8585
err := next(ctx, l, cmd)
@@ -119,14 +119,14 @@ func CreateRedirectsAutoCreateMiddleware(initialStaleState bool) CreateRedirects
119119
}
120120

121121
for dimension := range dimensions {
122-
oldNodeMap := redirectdefinitionutils.CreateFlatRepoNodeMap(cmd.OldState[dimension], make(map[string]*content.RepoNode))
123-
newNodeMap := redirectdefinitionutils.CreateFlatRepoNodeMap(cmd.NewState[dimension], make(map[string]*content.RepoNode))
122+
oldNodeMap := utilsx.CreateFlatRepoNodeMap(cmd.OldState[dimension], make(map[string]*content.RepoNode))
123+
newNodeMap := utilsx.CreateFlatRepoNodeMap(cmd.NewState[dimension], make(map[string]*content.RepoNode))
124124

125-
newDefinitions, err := redirectdefinitionutils.AutoCreateRedirectDefinitions(
125+
newDefinitions, err := utilsx.AutoCreateRedirectDefinitions(
126126
l,
127127
oldNodeMap,
128128
newNodeMap,
129-
redirectstore.Dimension(dimension),
129+
storex.Dimension(dimension),
130130
initialStaleState,
131131
)
132132
if err != nil {
@@ -143,13 +143,13 @@ func CreateRedirectsAutoCreateMiddleware(initialStaleState bool) CreateRedirects
143143
}
144144

145145
// CreateRedirectsConsolidateMiddleware ...
146-
func CreateRedirectsConsolidateMiddleware(repo redirectrepository.RedirectsDefinitionRepository, autoDelete bool) CreateRedirectsMiddlewareFn {
146+
func CreateRedirectsConsolidateMiddleware(repo repositoryx.RedirectsDefinitionRepository, autoDelete bool) CreateRedirectsMiddlewareFn {
147147
return func(next CreateRedirectsHandlerFn) CreateRedirectsHandlerFn {
148148
return func(ctx context.Context, l *zap.Logger, cmd CreateRedirects) error {
149149
l.Info("consolidating redirect definitions")
150150

151-
redirectsToUpsert := []*redirectstore.RedirectDefinition{}
152-
redirectsToDelete := []redirectstore.EntityID{}
151+
redirectsToUpsert := []*storex.RedirectDefinition{}
152+
redirectsToDelete := []storex.EntityID{}
153153

154154
// get all current definitions for the dimension from the database
155155
allCurrentDefinitions, err := repo.FindAll(ctx, true)
@@ -159,11 +159,11 @@ func CreateRedirectsConsolidateMiddleware(repo redirectrepository.RedirectsDefin
159159
}
160160

161161
for dimension, currentDefinitions := range allCurrentDefinitions {
162-
defs, ids := redirectdefinitionutils.ConsolidateRedirectDefinitions(
162+
defs, ids := utilsx.ConsolidateRedirectDefinitions(
163163
l,
164164
cmd.RedirectsToUpsert,
165165
currentDefinitions,
166-
redirectdefinitionutils.CreateFlatRepoNodeMap(cmd.NewState[string(dimension)], make(map[string]*content.RepoNode)),
166+
utilsx.CreateFlatRepoNodeMap(cmd.NewState[string(dimension)], make(map[string]*content.RepoNode)),
167167
)
168168
redirectsToUpsert = append(redirectsToUpsert, defs...)
169169

@@ -186,11 +186,11 @@ func CreateRedirectsConsolidateMiddleware(repo redirectrepository.RedirectsDefin
186186

187187
// softDeleteStrategy ...
188188
func softDeleteStrategy(
189-
idsToDelete []redirectstore.EntityID,
190-
newRedirects []*redirectstore.RedirectDefinition,
191-
currentDefinitions map[redirectstore.RedirectSource]*redirectstore.RedirectDefinition,
192-
) []*redirectstore.RedirectDefinition {
193-
additionalRedirects := []*redirectstore.RedirectDefinition{}
189+
idsToDelete []storex.EntityID,
190+
newRedirects []*storex.RedirectDefinition,
191+
currentDefinitions map[storex.RedirectSource]*storex.RedirectDefinition,
192+
) []*storex.RedirectDefinition {
193+
additionalRedirects := []*storex.RedirectDefinition{}
194194

195195
for _, id := range idsToDelete {
196196
for _, def := range newRedirects {

0 commit comments

Comments
 (0)