refactor: speed up VillageService.Sync a bit
ci/woodpecker/push/govulncheck Pipeline was successful Details
ci/woodpecker/push/test Pipeline was successful Details

This commit is contained in:
Dawid Wysokiński 2024-03-15 08:21:43 +01:00
parent 80f14d6601
commit 096ca396db
Signed by: Kichiyaki
GPG Key ID: B5445E357FB8B892
9 changed files with 45 additions and 7 deletions

1
go.mod
View File

@ -27,6 +27,7 @@ require (
github.com/uptrace/bun/driver/sqliteshim v1.1.17
github.com/uptrace/bun/extra/bundebug v1.1.17
github.com/urfave/cli/v2 v2.27.1
golang.org/x/sync v0.6.0
)
require (

4
go.sum
View File

@ -240,8 +240,8 @@ golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.5.0 h1:60k92dhOjHxJkrqnwsfl8KuaHbn/5dl0lUPUklKo3qE=
golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ=
golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190606203320-7fc4e5ec1444/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=

View File

@ -5,6 +5,7 @@ import (
"fmt"
"gitea.dwysokinski.me/twhelp/corev3/internal/domain"
"golang.org/x/sync/errgroup"
)
type VillageRepository interface {
@ -36,12 +37,24 @@ func (svc *VillageService) Sync(ctx context.Context, serverSyncedPayload domain.
return fmt.Errorf("%s: couldn't get villages: %w", serverKey, err)
}
if err = svc.createOrUpdate(ctx, serverKey, villages); err != nil {
return fmt.Errorf("%s: couldn't create/update villages: %w", serverKey, err)
}
g, ctx := errgroup.WithContext(ctx)
if err = svc.delete(ctx, serverKey, villages); err != nil {
return fmt.Errorf("%s: couldn't delete villages: %w", serverKey, err)
g.Go(func() error {
if createOrUpdateErr := svc.createOrUpdate(ctx, serverKey, villages); createOrUpdateErr != nil {
return fmt.Errorf("couldn't create/update villages: %w", createOrUpdateErr)
}
return nil
})
g.Go(func() error {
if deleteErr := svc.delete(ctx, serverKey, villages); deleteErr != nil {
return fmt.Errorf("couldn't delete villages: %w", deleteErr)
}
return nil
})
if err = g.Wait(); err != nil {
return fmt.Errorf("%s: %w", serverKey, err)
}
villagesSyncedPayload, err := domain.NewVillagesSyncedEventPayloadFromVillages(

View File

@ -28,6 +28,10 @@ spec:
secretKeyRef:
name: twhelp-secret
key: db-connection-string
- name: DB_MAX_OPEN_CONNS
value: "10"
- name: DB_MAX_IDLE_CONNS
value: "5"
- name: RABBITMQ_CONNECTION_STRING
valueFrom:
secretKeyRef:

View File

@ -25,6 +25,10 @@ spec:
secretKeyRef:
name: twhelp-secret
key: db-connection-string
- name: DB_MAX_OPEN_CONNS
value: "5"
- name: DB_MAX_IDLE_CONNS
value: "2"
- name: RABBITMQ_CONNECTION_STRING
valueFrom:
secretKeyRef:

View File

@ -25,6 +25,10 @@ spec:
secretKeyRef:
name: twhelp-secret
key: db-connection-string
- name: DB_MAX_OPEN_CONNS
value: "5"
- name: DB_MAX_IDLE_CONNS
value: "2"
- name: RABBITMQ_CONNECTION_STRING
valueFrom:
secretKeyRef:

View File

@ -25,6 +25,10 @@ spec:
secretKeyRef:
name: twhelp-secret
key: db-connection-string
- name: DB_MAX_OPEN_CONNS
value: "5"
- name: DB_MAX_IDLE_CONNS
value: "2"
- name: RABBITMQ_CONNECTION_STRING
valueFrom:
secretKeyRef:

View File

@ -25,6 +25,10 @@ spec:
secretKeyRef:
name: twhelp-secret
key: db-connection-string
- name: DB_MAX_OPEN_CONNS
value: "5"
- name: DB_MAX_IDLE_CONNS
value: "2"
- name: RABBITMQ_CONNECTION_STRING
valueFrom:
secretKeyRef:

View File

@ -25,6 +25,10 @@ spec:
secretKeyRef:
name: twhelp-secret
key: db-connection-string
- name: DB_MAX_OPEN_CONNS
value: "5"
- name: DB_MAX_IDLE_CONNS
value: "2"
- name: RABBITMQ_CONNECTION_STRING
valueFrom:
secretKeyRef: