update
This commit is contained in:
parent
a25661d895
commit
7da5fbb4ca
2
go.mod
2
go.mod
@ -12,7 +12,7 @@ require (
|
|||||||
go.uber.org/zap v1.26.0
|
go.uber.org/zap v1.26.0
|
||||||
google.golang.org/grpc v1.61.1
|
google.golang.org/grpc v1.61.1
|
||||||
google.golang.org/protobuf v1.32.0
|
google.golang.org/protobuf v1.32.0
|
||||||
penahub.gitlab.yandexcloud.net/backend/quiz/common.git v0.0.0-20240313162137-d59eb04dc606
|
penahub.gitlab.yandexcloud.net/backend/quiz/common.git v0.0.0-20240313164312-4560248259a0
|
||||||
)
|
)
|
||||||
|
|
||||||
require (
|
require (
|
||||||
|
4
go.sum
4
go.sum
@ -168,7 +168,7 @@ gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
|||||||
honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
|
honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
|
||||||
penahub.gitlab.yandexcloud.net/backend/penahub_common v0.0.0-20240202120244-c4ef330cfe5d h1:gbaDt35HMDqOK84WYmDIlXMI7rstUcRqNttaT6Kx1do=
|
penahub.gitlab.yandexcloud.net/backend/penahub_common v0.0.0-20240202120244-c4ef330cfe5d h1:gbaDt35HMDqOK84WYmDIlXMI7rstUcRqNttaT6Kx1do=
|
||||||
penahub.gitlab.yandexcloud.net/backend/penahub_common v0.0.0-20240202120244-c4ef330cfe5d/go.mod h1:lTmpjry+8evVkXWbEC+WMOELcFkRD1lFMc7J09mOndM=
|
penahub.gitlab.yandexcloud.net/backend/penahub_common v0.0.0-20240202120244-c4ef330cfe5d/go.mod h1:lTmpjry+8evVkXWbEC+WMOELcFkRD1lFMc7J09mOndM=
|
||||||
penahub.gitlab.yandexcloud.net/backend/quiz/common.git v0.0.0-20240313162137-d59eb04dc606 h1:kQhIfeeBk57O6+2sdiGXidQHAP+wp3fa9Cys7TqXRzs=
|
penahub.gitlab.yandexcloud.net/backend/quiz/common.git v0.0.0-20240313164312-4560248259a0 h1:YbffFOWneoINvEqCWClf5Zatu/a0VNo9RM0nYveCzhk=
|
||||||
penahub.gitlab.yandexcloud.net/backend/quiz/common.git v0.0.0-20240313162137-d59eb04dc606/go.mod h1:evOyhZpozEtHTVluVYelgSTBUwfO5MBSxr02c3IsGic=
|
penahub.gitlab.yandexcloud.net/backend/quiz/common.git v0.0.0-20240313164312-4560248259a0/go.mod h1:JgbH8cdAJBr3jx3BuY5nnuTyMdZ1XkRxo8a3w4Y3C0Y=
|
||||||
penahub.gitlab.yandexcloud.net/backend/quiz/core.git v0.0.0-20240219174804-d78fd38511af h1:jQ7HaXSutDX5iepU7VRImxhikK7lV/lBKkiloOZ4Emo=
|
penahub.gitlab.yandexcloud.net/backend/quiz/core.git v0.0.0-20240219174804-d78fd38511af h1:jQ7HaXSutDX5iepU7VRImxhikK7lV/lBKkiloOZ4Emo=
|
||||||
penahub.gitlab.yandexcloud.net/backend/quiz/core.git v0.0.0-20240219174804-d78fd38511af/go.mod h1:5S5YwjSXWmnEKjBjG6MtyGtFmljjukDRS8CwHk/CF/I=
|
penahub.gitlab.yandexcloud.net/backend/quiz/core.git v0.0.0-20240219174804-d78fd38511af/go.mod h1:5S5YwjSXWmnEKjBjG6MtyGtFmljjukDRS8CwHk/CF/I=
|
||||||
|
@ -1,72 +0,0 @@
|
|||||||
package savewc
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
"encoding/json"
|
|
||||||
"fmt"
|
|
||||||
"github.com/go-redis/redis/v8"
|
|
||||||
"github.com/themakers/hlog"
|
|
||||||
"penahub.gitlab.yandexcloud.net/backend/quiz/common.git/model"
|
|
||||||
"time"
|
|
||||||
)
|
|
||||||
|
|
||||||
type DepsForClient struct {
|
|
||||||
WorkerSendClientCh chan model.Answer
|
|
||||||
Redis *redis.Client
|
|
||||||
}
|
|
||||||
|
|
||||||
type SaveForClient struct {
|
|
||||||
deps DepsForClient
|
|
||||||
errChan chan<- error
|
|
||||||
logger hlog.Logger
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewSaveClientWorker(deps DepsForClient, errChan chan<- error, logger hlog.Logger) *SaveForClient {
|
|
||||||
return &SaveForClient{
|
|
||||||
deps: deps,
|
|
||||||
errChan: errChan,
|
|
||||||
logger: logger,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (w *SaveForClient) Start(ctx context.Context) {
|
|
||||||
|
|
||||||
for {
|
|
||||||
select {
|
|
||||||
case answer, ok := <-w.deps.WorkerSendClientCh:
|
|
||||||
if !ok {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
fmt.Println("SAVECLINT")
|
|
||||||
err := w.saveAnswer(ctx, answer)
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println("Error save answer")
|
|
||||||
w.errChan <- err
|
|
||||||
}
|
|
||||||
|
|
||||||
case <-ctx.Done():
|
|
||||||
fmt.Println("Save for client worker terminated")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (w *SaveForClient) saveAnswer(ctx context.Context, answer model.Answer) error {
|
|
||||||
answerJSON, err := json.Marshal(answer)
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println("Error marshal answer to redis", err)
|
|
||||||
w.errChan <- err
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
key := fmt.Sprintf("answer:%d", time.Now().UnixNano())
|
|
||||||
|
|
||||||
err = w.deps.Redis.Set(ctx, key, answerJSON, 0).Err()
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println("Error saving answer to redis", err)
|
|
||||||
w.errChan <- err
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
@ -1,71 +0,0 @@
|
|||||||
package savewc
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
"encoding/json"
|
|
||||||
"fmt"
|
|
||||||
"github.com/go-redis/redis/v8"
|
|
||||||
"github.com/themakers/hlog"
|
|
||||||
"penahub.gitlab.yandexcloud.net/backend/quiz/common.git/model"
|
|
||||||
"time"
|
|
||||||
)
|
|
||||||
|
|
||||||
type DepsForResp struct {
|
|
||||||
WorkerRespondentCh chan []model.Answer
|
|
||||||
Redis *redis.Client
|
|
||||||
}
|
|
||||||
|
|
||||||
type SaveForRespondent struct {
|
|
||||||
deps DepsForResp
|
|
||||||
errChan chan<- error
|
|
||||||
logger hlog.Logger
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewSaveRespWorker(deps DepsForResp, errChan chan<- error, logger hlog.Logger) *SaveForRespondent {
|
|
||||||
return &SaveForRespondent{
|
|
||||||
deps: deps,
|
|
||||||
errChan: errChan,
|
|
||||||
logger: logger,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (w *SaveForRespondent) Start(ctx context.Context) {
|
|
||||||
for {
|
|
||||||
select {
|
|
||||||
case answer, ok := <-w.deps.WorkerRespondentCh:
|
|
||||||
if !ok {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
fmt.Println("SAVERESP")
|
|
||||||
err := w.saveAnswers(ctx, answer)
|
|
||||||
if err != nil {
|
|
||||||
w.logger.Module("Error save answers")
|
|
||||||
w.errChan <- err
|
|
||||||
}
|
|
||||||
|
|
||||||
case <-ctx.Done():
|
|
||||||
w.logger.Module("Save for respondent worker terminated")
|
|
||||||
return
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (w *SaveForRespondent) saveAnswers(ctx context.Context, answers []model.Answer) error {
|
|
||||||
for _, answer := range answers {
|
|
||||||
answerJSON, err := json.Marshal(answer)
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println("Error marshal answer", err)
|
|
||||||
w.errChan <- err
|
|
||||||
}
|
|
||||||
|
|
||||||
key := fmt.Sprintf("toRespondent:%d", time.Now().UnixNano())
|
|
||||||
|
|
||||||
err = w.deps.Redis.Set(ctx, key, answerJSON, 0).Err()
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println("Error setting to redis", err)
|
|
||||||
w.errChan <- err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user