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/driver/sqliteshim v1.1.17
|
||||||
github.com/uptrace/bun/extra/bundebug v1.1.17
|
github.com/uptrace/bun/extra/bundebug v1.1.17
|
||||||
github.com/urfave/cli/v2 v2.27.1
|
github.com/urfave/cli/v2 v2.27.1
|
||||||
|
golang.org/x/sync v0.6.0
|
||||||
)
|
)
|
||||||
|
|
||||||
require (
|
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-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-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.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.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ=
|
||||||
golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
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-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-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20190606203320-7fc4e5ec1444/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20190606203320-7fc4e5ec1444/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
|
|
@ -5,6 +5,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"gitea.dwysokinski.me/twhelp/corev3/internal/domain"
|
"gitea.dwysokinski.me/twhelp/corev3/internal/domain"
|
||||||
|
"golang.org/x/sync/errgroup"
|
||||||
)
|
)
|
||||||
|
|
||||||
type VillageRepository interface {
|
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)
|
return fmt.Errorf("%s: couldn't get villages: %w", serverKey, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err = svc.createOrUpdate(ctx, serverKey, villages); err != nil {
|
g, ctx := errgroup.WithContext(ctx)
|
||||||
return fmt.Errorf("%s: couldn't create/update villages: %w", serverKey, err)
|
|
||||||
}
|
|
||||||
|
|
||||||
if err = svc.delete(ctx, serverKey, villages); err != nil {
|
g.Go(func() error {
|
||||||
return fmt.Errorf("%s: couldn't delete villages: %w", serverKey, err)
|
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(
|
villagesSyncedPayload, err := domain.NewVillagesSyncedEventPayloadFromVillages(
|
||||||
|
|
|
@ -28,6 +28,10 @@ spec:
|
||||||
secretKeyRef:
|
secretKeyRef:
|
||||||
name: twhelp-secret
|
name: twhelp-secret
|
||||||
key: db-connection-string
|
key: db-connection-string
|
||||||
|
- name: DB_MAX_OPEN_CONNS
|
||||||
|
value: "10"
|
||||||
|
- name: DB_MAX_IDLE_CONNS
|
||||||
|
value: "5"
|
||||||
- name: RABBITMQ_CONNECTION_STRING
|
- name: RABBITMQ_CONNECTION_STRING
|
||||||
valueFrom:
|
valueFrom:
|
||||||
secretKeyRef:
|
secretKeyRef:
|
||||||
|
|
|
@ -25,6 +25,10 @@ spec:
|
||||||
secretKeyRef:
|
secretKeyRef:
|
||||||
name: twhelp-secret
|
name: twhelp-secret
|
||||||
key: db-connection-string
|
key: db-connection-string
|
||||||
|
- name: DB_MAX_OPEN_CONNS
|
||||||
|
value: "5"
|
||||||
|
- name: DB_MAX_IDLE_CONNS
|
||||||
|
value: "2"
|
||||||
- name: RABBITMQ_CONNECTION_STRING
|
- name: RABBITMQ_CONNECTION_STRING
|
||||||
valueFrom:
|
valueFrom:
|
||||||
secretKeyRef:
|
secretKeyRef:
|
||||||
|
|
|
@ -25,6 +25,10 @@ spec:
|
||||||
secretKeyRef:
|
secretKeyRef:
|
||||||
name: twhelp-secret
|
name: twhelp-secret
|
||||||
key: db-connection-string
|
key: db-connection-string
|
||||||
|
- name: DB_MAX_OPEN_CONNS
|
||||||
|
value: "5"
|
||||||
|
- name: DB_MAX_IDLE_CONNS
|
||||||
|
value: "2"
|
||||||
- name: RABBITMQ_CONNECTION_STRING
|
- name: RABBITMQ_CONNECTION_STRING
|
||||||
valueFrom:
|
valueFrom:
|
||||||
secretKeyRef:
|
secretKeyRef:
|
||||||
|
|
|
@ -25,6 +25,10 @@ spec:
|
||||||
secretKeyRef:
|
secretKeyRef:
|
||||||
name: twhelp-secret
|
name: twhelp-secret
|
||||||
key: db-connection-string
|
key: db-connection-string
|
||||||
|
- name: DB_MAX_OPEN_CONNS
|
||||||
|
value: "5"
|
||||||
|
- name: DB_MAX_IDLE_CONNS
|
||||||
|
value: "2"
|
||||||
- name: RABBITMQ_CONNECTION_STRING
|
- name: RABBITMQ_CONNECTION_STRING
|
||||||
valueFrom:
|
valueFrom:
|
||||||
secretKeyRef:
|
secretKeyRef:
|
||||||
|
|
|
@ -25,6 +25,10 @@ spec:
|
||||||
secretKeyRef:
|
secretKeyRef:
|
||||||
name: twhelp-secret
|
name: twhelp-secret
|
||||||
key: db-connection-string
|
key: db-connection-string
|
||||||
|
- name: DB_MAX_OPEN_CONNS
|
||||||
|
value: "5"
|
||||||
|
- name: DB_MAX_IDLE_CONNS
|
||||||
|
value: "2"
|
||||||
- name: RABBITMQ_CONNECTION_STRING
|
- name: RABBITMQ_CONNECTION_STRING
|
||||||
valueFrom:
|
valueFrom:
|
||||||
secretKeyRef:
|
secretKeyRef:
|
||||||
|
|
|
@ -25,6 +25,10 @@ spec:
|
||||||
secretKeyRef:
|
secretKeyRef:
|
||||||
name: twhelp-secret
|
name: twhelp-secret
|
||||||
key: db-connection-string
|
key: db-connection-string
|
||||||
|
- name: DB_MAX_OPEN_CONNS
|
||||||
|
value: "5"
|
||||||
|
- name: DB_MAX_IDLE_CONNS
|
||||||
|
value: "2"
|
||||||
- name: RABBITMQ_CONNECTION_STRING
|
- name: RABBITMQ_CONNECTION_STRING
|
||||||
valueFrom:
|
valueFrom:
|
||||||
secretKeyRef:
|
secretKeyRef:
|
||||||
|
|
Loading…
Reference in New Issue