refactor: speed up VillageService.Sync a bit
This commit is contained in:
parent
80f14d6601
commit
096ca396db
1
go.mod
1
go.mod
|
@ -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
4
go.sum
|
@ -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=
|
||||
|
|
|
@ -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(
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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:
|
||||
|
|
Loading…
Reference in New Issue
Block a user