replace mongo pkg add common
This commit is contained in:
parent
c282b8151b
commit
adf42e8a22
3
go.mod
3
go.mod
@ -9,13 +9,14 @@ require (
|
|||||||
github.com/joho/godotenv v1.5.1
|
github.com/joho/godotenv v1.5.1
|
||||||
github.com/pioz/faker v1.7.3
|
github.com/pioz/faker v1.7.3
|
||||||
github.com/rs/xid v1.5.0
|
github.com/rs/xid v1.5.0
|
||||||
github.com/stretchr/testify v1.8.1
|
github.com/stretchr/testify v1.8.4
|
||||||
github.com/twmb/franz-go v1.15.4
|
github.com/twmb/franz-go v1.15.4
|
||||||
go.mongodb.org/mongo-driver v1.13.1
|
go.mongodb.org/mongo-driver v1.13.1
|
||||||
go.uber.org/zap v1.26.0
|
go.uber.org/zap v1.26.0
|
||||||
google.golang.org/genproto/googleapis/api v0.0.0-20240116215550-a9fa1716bcac
|
google.golang.org/genproto/googleapis/api v0.0.0-20240116215550-a9fa1716bcac
|
||||||
google.golang.org/grpc v1.60.1
|
google.golang.org/grpc v1.60.1
|
||||||
google.golang.org/protobuf v1.32.0
|
google.golang.org/protobuf v1.32.0
|
||||||
|
penahub.gitlab.yandexcloud.net/backend/penahub_common v0.0.0-20240202120244-c4ef330cfe5d
|
||||||
)
|
)
|
||||||
|
|
||||||
require (
|
require (
|
||||||
|
10
go.sum
10
go.sum
@ -63,13 +63,9 @@ github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJ
|
|||||||
github.com/rs/xid v1.5.0 h1:mKX4bl4iPYJtEIxp6CYiUuLQ/8DYMoz0PUdtGgMFRVc=
|
github.com/rs/xid v1.5.0 h1:mKX4bl4iPYJtEIxp6CYiUuLQ/8DYMoz0PUdtGgMFRVc=
|
||||||
github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
|
github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
|
||||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||||
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
|
|
||||||
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
|
|
||||||
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||||
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
|
||||||
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
|
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
|
||||||
github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk=
|
|
||||||
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
|
|
||||||
github.com/twmb/franz-go v1.15.4 h1:qBCkHaiutetnrXjAUWA99D9FEcZVMt2AYwkH3vWEQTw=
|
github.com/twmb/franz-go v1.15.4 h1:qBCkHaiutetnrXjAUWA99D9FEcZVMt2AYwkH3vWEQTw=
|
||||||
github.com/twmb/franz-go v1.15.4/go.mod h1:rC18hqNmfo8TMc1kz7CQmHL74PLNF8KVvhflxiiJZCU=
|
github.com/twmb/franz-go v1.15.4/go.mod h1:rC18hqNmfo8TMc1kz7CQmHL74PLNF8KVvhflxiiJZCU=
|
||||||
github.com/twmb/franz-go/pkg/kmsg v1.7.0 h1:a457IbvezYfA5UkiBvyV3zj0Is3y1i8EJgqjJYoij2E=
|
github.com/twmb/franz-go/pkg/kmsg v1.7.0 h1:a457IbvezYfA5UkiBvyV3zj0Is3y1i8EJgqjJYoij2E=
|
||||||
@ -160,3 +156,5 @@ gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
|
|||||||
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||||
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
||||||
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||||
|
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=
|
||||||
|
@ -2,21 +2,21 @@ package initialize
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"codeword/internal/repository"
|
"codeword/internal/repository"
|
||||||
mdb "codeword/pkg/mongo"
|
|
||||||
"context"
|
"context"
|
||||||
"go.mongodb.org/mongo-driver/mongo"
|
"go.mongodb.org/mongo-driver/mongo"
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
|
mdb "penahub.gitlab.yandexcloud.net/backend/penahub_common/mongo"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
func MongoDB(ctx context.Context, cfg Config) (*mongo.Database, error) {
|
func MongoDB(ctx context.Context, cfg Config) (*mongo.Database, error) {
|
||||||
dbConfig := &mdb.Configuration{
|
dbConfig := &mdb.Configuration{
|
||||||
MongoHost: cfg.MongoHost,
|
Host: cfg.MongoHost,
|
||||||
MongoPort: cfg.MongoPort,
|
Port: cfg.MongoPort,
|
||||||
MongoUser: cfg.MongoUser,
|
User: cfg.MongoUser,
|
||||||
MongoPassword: cfg.MongoPassword,
|
Password: cfg.MongoPassword,
|
||||||
MongoDatabase: cfg.MongoDatabase,
|
DatabaseName: cfg.MongoDatabase,
|
||||||
MongoAuth: cfg.MongoAuth,
|
Auth: cfg.MongoAuth,
|
||||||
}
|
}
|
||||||
|
|
||||||
newCtx, cancel := context.WithTimeout(ctx, 10*time.Second)
|
newCtx, cancel := context.WithTimeout(ctx, 10*time.Second)
|
||||||
|
@ -1,22 +0,0 @@
|
|||||||
package mongo
|
|
||||||
|
|
||||||
import (
|
|
||||||
"go.mongodb.org/mongo-driver/bson/primitive"
|
|
||||||
"go.mongodb.org/mongo-driver/mongo"
|
|
||||||
"go.mongodb.org/mongo-driver/mongo/options"
|
|
||||||
)
|
|
||||||
|
|
||||||
type Configuration struct {
|
|
||||||
MongoHost string `env:"MONGO_HOST" envDefault:"127.0.0.1"`
|
|
||||||
MongoPort string `env:"MONGO_PORT" envDefault:"27020"`
|
|
||||||
MongoUser string `env:"MONGO_USER" envDefault:"test"`
|
|
||||||
MongoPassword string `env:"MONGO_PASSWORD" envDefault:"test"`
|
|
||||||
MongoDatabase string `env:"MONGO_DB" envDefault:"admin"`
|
|
||||||
MongoAuth string `env:"MONGO_AUTH" envDefault:"admin"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type RequestSettings struct {
|
|
||||||
Driver *mongo.Collection
|
|
||||||
Options *options.FindOptions
|
|
||||||
Filter primitive.M
|
|
||||||
}
|
|
@ -1,59 +0,0 @@
|
|||||||
package mongo
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
"fmt"
|
|
||||||
"log"
|
|
||||||
"net"
|
|
||||||
"net/url"
|
|
||||||
"time"
|
|
||||||
|
|
||||||
"go.mongodb.org/mongo-driver/mongo"
|
|
||||||
"go.mongodb.org/mongo-driver/mongo/options"
|
|
||||||
)
|
|
||||||
|
|
||||||
type ConnectDeps struct {
|
|
||||||
Configuration *Configuration
|
|
||||||
Timeout time.Duration
|
|
||||||
}
|
|
||||||
|
|
||||||
func Connect(ctx context.Context, deps *ConnectDeps) (*mongo.Database, error) {
|
|
||||||
if deps == nil {
|
|
||||||
return nil, ErrEmptyArgs
|
|
||||||
}
|
|
||||||
|
|
||||||
mongoURI := &url.URL{
|
|
||||||
Scheme: "mongodb",
|
|
||||||
Host: net.JoinHostPort(deps.Configuration.MongoHost, deps.Configuration.MongoPort),
|
|
||||||
}
|
|
||||||
|
|
||||||
connectionOptions := options.Client().
|
|
||||||
ApplyURI(mongoURI.String()).
|
|
||||||
SetAuth(options.Credential{
|
|
||||||
AuthMechanism: "SCRAM-SHA-256",
|
|
||||||
AuthSource: deps.Configuration.MongoAuth,
|
|
||||||
Username: deps.Configuration.MongoUser,
|
|
||||||
Password: deps.Configuration.MongoPassword,
|
|
||||||
})
|
|
||||||
|
|
||||||
ticker := time.NewTicker(1 * time.Second)
|
|
||||||
timeoutExceeded := time.After(deps.Timeout)
|
|
||||||
|
|
||||||
defer ticker.Stop()
|
|
||||||
|
|
||||||
for {
|
|
||||||
select {
|
|
||||||
case <-ticker.C:
|
|
||||||
connection, err := mongo.Connect(ctx, connectionOptions)
|
|
||||||
if err == nil {
|
|
||||||
return connection.Database(deps.Configuration.MongoDatabase), nil
|
|
||||||
}
|
|
||||||
|
|
||||||
log.Printf("failed to connect to db <%s>: %s", mongoURI.String(), err.Error())
|
|
||||||
case <-timeoutExceeded:
|
|
||||||
return nil, fmt.Errorf("db connection <%s> failed after %d timeout", mongoURI.String(), deps.Timeout)
|
|
||||||
default:
|
|
||||||
time.Sleep(1 * time.Second)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,7 +0,0 @@
|
|||||||
package mongo
|
|
||||||
|
|
||||||
import "errors"
|
|
||||||
|
|
||||||
var (
|
|
||||||
ErrEmptyArgs = errors.New("arguments are empty")
|
|
||||||
)
|
|
Loading…
Reference in New Issue
Block a user