diff --git a/app/app.go b/app/app.go deleted file mode 100644 index 70aa0a8..0000000 --- a/app/app.go +++ /dev/null @@ -1,259 +0,0 @@ -package app - -import ( - "context" - "errors" - "fmt" - "github.com/go-redis/redis/v8" - "github.com/gofiber/fiber/v2" - "github.com/skeris/appInit" - "github.com/themakers/hlog" - "go.uber.org/zap" - "go.uber.org/zap/zapcore" - "penahub.gitlab.yandexcloud.net/backend/penahub_common/log_mw" - "penahub.gitlab.yandexcloud.net/backend/penahub_common/privilege" - "penahub.gitlab.yandexcloud.net/backend/quiz/common.git/dal" - "penahub.gitlab.yandexcloud.net/backend/quiz/common.git/healthchecks" - "penahub.gitlab.yandexcloud.net/backend/quiz/common.git/middleware" - "penahub.gitlab.yandexcloud.net/backend/quiz/common.git/model" - "penahub.gitlab.yandexcloud.net/backend/quiz/core/brokers" - "penahub.gitlab.yandexcloud.net/backend/quiz/core/clients/auth" - //"penahub.gitlab.yandexcloud.net/backend/quiz/core/clients/telegram" - "penahub.gitlab.yandexcloud.net/backend/quiz/core/initialize" - "penahub.gitlab.yandexcloud.net/backend/quiz/core/models" - "penahub.gitlab.yandexcloud.net/backend/quiz/core/server" - "penahub.gitlab.yandexcloud.net/backend/quiz/core/service" - "penahub.gitlab.yandexcloud.net/backend/quiz/core/tools" - //"penahub.gitlab.yandexcloud.net/backend/quiz/core/workers" - "penahub.gitlab.yandexcloud.net/external/trashlog/wrappers/zaptrashlog" - "time" -) - -type App struct { - logger *zap.Logger - err chan error -} - -func (a App) GetLogger() *zap.Logger { - return a.logger -} - -func (a App) GetErr() chan error { - return a.err -} - -var ( - errInvalidOptions = errors.New("invalid options") -) - -var zapOptions = []zap.Option{ - zap.AddCaller(), - zap.AddCallerSkip(2), - zap.AddStacktrace(zap.ErrorLevel), -} - -var _ appInit.CommonApp = (*App)(nil) - -type Options struct { - LoggerProdMode bool `env:"IS_PROD_LOG" default:"false"` - IsProd bool `env:"IS_PROD" default:"false"` - NumberPort string `env:"PORT" default:"1488"` - CrtFile string `env:"CRT" default:"server.crt"` - KeyFile string `env:"KEY" default:"server.key"` - PostgresCredentials string `env:"PG_CRED" default:"host=localhost port=35432 user=squiz password=Redalert2 dbname=squiz sslmode=disable"` - HubAdminUrl string `env:"HUB_ADMIN_URL" default:"http://localhost:8001/"` - ServiceName string `env:"SERVICE_NAME" default:"squiz"` - AuthServiceURL string `env:"AUTH_URL" default:"http://localhost:8000/"` - GrpcHost string `env:"GRPC_HOST" default:"localhost"` - GrpcPort string `env:"GRPC_PORT" default:"9000"` - KafkaBrokers string `env:"KAFKA_BROKERS" default:"localhost:9092"` - KafkaTopic string `env:"KAFKA_TOPIC" default:"test-topic"` - KafkaGroup string `env:"KAFKA_GROUP" default:"mailnotifier"` - TrashLogHost string `env:"TRASH_LOG_HOST" default:"localhost:7113"` - ModuleLogger string `env:"MODULE_LOGGER" default:"core-local"` - ClickHouseCred string `env:"CLICK_HOUSE_CRED" default:"tcp://10.8.0.15:9000/default?sslmode=disable"` - RedisHost string `env:"REDIS_HOST" default:"localhost:6379"` - RedisPassword string `env:"REDIS_PASSWORD" default:"admin"` - RedisDB uint64 `env:"REDIS_DB" default:"2"` - S3Prefix string `env:"S3_PREFIX"` -} - -func New(ctx context.Context, opts interface{}, ver appInit.Version) (appInit.CommonApp, error) { - var ( - err, workerErr error - zapLogger *zap.Logger - errChan = make(chan error) - options Options - ok bool - ) - - if options, ok = opts.(Options); !ok { - return App{}, errInvalidOptions - } - - if options.LoggerProdMode { - zapLogger, err = zap.NewProduction(zapOptions...) - if err != nil { - return nil, err - } - } else { - zapLogger, err = zap.NewDevelopment(zapOptions...) - if err != nil { - return nil, err - } - } - - zapLogger = zapLogger.With( - zap.String("SvcCommit", ver.Commit), - zap.String("SvcVersion", ver.Release), - zap.String("SvcBuildTime", ver.BuildTime), - ) - - clickHouseLogger, err := zaptrashlog.NewCore(ctx, zap.InfoLevel, options.TrashLogHost, ver.Release, ver.Commit, time.Now().Unix()) - if err != nil { - panic(err) - } - - loggerForHlog := zapLogger.WithOptions(zap.WrapCore(func(core zapcore.Core) zapcore.Core { - return zapcore.NewTee(core, clickHouseLogger) - })) - - loggerHlog := hlog.New(loggerForHlog).Module(options.ModuleLogger) - loggerHlog.With(models.AllFields{}) - loggerHlog.Emit(InfoSvcStarted{}) - - authClient := auth.NewAuthClient(options.AuthServiceURL) - - pgdal, err := dal.New(ctx, options.PostgresCredentials, nil) - if err != nil { - fmt.Println("NEW", err) - return nil, err - } - - chDal, err := dal.NewClickHouseDAL(ctx, options.ClickHouseCred) - if err != nil { - fmt.Println("failed init clickhouse", err) - return nil, err - } - - kafkaClient, err := initialize.KafkaInit(ctx, initialize.KafkaDeps{ - KafkaGroup: options.KafkaGroup, - KafkaBrokers: options.KafkaBrokers, - KafkaTopic: options.KafkaTopic, - }) - if err != nil { - return nil, err - } - - producer := brokers.NewProducer(brokers.ProducerDeps{ - KafkaClient: kafkaClient, - Logger: zapLogger, - }) - - redisClient := redis.NewClient(&redis.Options{ - Addr: options.RedisHost, - Password: options.RedisPassword, - DB: int(options.RedisDB), - }) - err = redisClient.Ping(ctx).Err() - if err != nil { - panic(fmt.Sprintf("error ping to redis db %v", err)) - } - - clientData := privilege.Client{ - URL: options.HubAdminUrl, - ServiceName: options.ServiceName, - Privileges: model.Privileges, - } - fiberClient := &fiber.Client{} - privilegeController := privilege.NewPrivilege(clientData, fiberClient) - go tools.PublishPrivilege(privilegeController, 10, 5*time.Minute) - - // tgClient, err := telegram.NewTelegramClient(ctx, pgdal) - // if err != nil { - // panic(fmt.Sprintf("failed init tg clietns: %v", err)) - // } - // - // tgWC := workers.NewTgListenerWC(workers.Deps{ - // BotID: int64(6712573453), // todo убрать - // Redis: redisClient, - // Dal: pgdal, - // TgClient: tgClient, - // }) - // - // go tgWC.Start(ctx) - - // todo подумать над реализацией всего а то пока мне кажется что немного каша получается такой предикт что через некоторое время - // сложно будет разобраться что есть где - grpcControllers := initialize.InitRpcControllers(pgdal) - grpc, err := server.NewGRPC(zapLogger) - if err != nil { - fmt.Println("error:", err) - panic("err init grpc server") - } - grpc.Register(grpcControllers) - go grpc.Run(server.DepsGrpcRun{ - Host: options.GrpcHost, - Port: options.GrpcPort, - }) - - app := fiber.New() - app.Use(middleware.JWTAuth()) - app.Use(log_mw.ContextLogger(loggerHlog)) - app.Get("/liveness", healthchecks.Liveness) - app.Get("/readiness", healthchecks.Readiness(&workerErr)) //todo parametrized readiness. should discuss ready reason - - svc := service.New(service.Deps{ - Dal: pgdal, - AuthClient: authClient, - Producer: producer, - ServiceName: options.ServiceName, - ChDAL: chDal, - // TelegramClient: tgClient, - RedisClient: redisClient, - S3Prefix: options.S3Prefix, - }) - - svc.Register(app) - - loggerHlog.Emit(InfoSvcReady{}) - - go func() { - defer func() { - if pgdal != nil { - pgdal.Close() - } - if chDal != nil { - if derr := chDal.Close(ctx); derr != nil { - fmt.Printf("error closing clickhouse: %v", derr) - } - } - err := grpc.Stop(ctx) - err = app.Shutdown() - loggerHlog.Emit(InfoSvcShutdown{Signal: err.Error()}) - }() - - if options.IsProd { - if err := app.ListenTLS(fmt.Sprintf(":%s", options.NumberPort), options.CrtFile, options.KeyFile); err != nil { - loggerHlog.Emit(ErrorCanNotServe{ - Err: err, - }) - errChan <- err - } - } else { - if err := app.Listen(fmt.Sprintf(":%s", options.NumberPort)); err != nil { - loggerHlog.Emit(ErrorCanNotServe{ - Err: err, - }) - errChan <- err - } - } - - errChan <- nil - }() - // todo implement helper func for service app type. such as server preparing, logger preparing, healthchecks and etc. - return &App{ - logger: zapLogger, - err: errChan, - }, err -} diff --git a/cmd/main.go b/cmd/main.go index 70d5e62..ef2dd8a 100644 --- a/cmd/main.go +++ b/cmd/main.go @@ -6,8 +6,8 @@ import ( "log" "os" "os/signal" - "penahub.gitlab.yandexcloud.net/backend/quiz/core/internal/app" - "penahub.gitlab.yandexcloud.net/backend/quiz/core/internal/initialize" + "gitea.pena/SQuiz/core/internal/app" + "gitea.pena/SQuiz/core/internal/initialize" "syscall" ) diff --git a/go.mod b/go.mod index 1ed5126..4850040 100644 --- a/go.mod +++ b/go.mod @@ -1,10 +1,12 @@ -module penahub.gitlab.yandexcloud.net/backend/quiz/core +module gitea.pena/SQuiz/core -go 1.22.0 +go 1.23.2 + +toolchain go1.23.4 require ( github.com/go-redis/redis/v8 v8.11.5 - github.com/gofiber/fiber/v2 v2.52.4 + github.com/gofiber/fiber/v2 v2.52.5 github.com/golang-jwt/jwt/v5 v5.2.1 github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 github.com/joho/godotenv v1.5.1 @@ -14,18 +16,19 @@ require ( github.com/skeris/appInit v1.0.2 github.com/stretchr/testify v1.9.0 github.com/themakers/hlog v0.0.0-20191205140925-235e0e4baddf - github.com/twmb/franz-go v1.16.1 + github.com/twmb/franz-go v1.18.0 github.com/xuri/excelize/v2 v2.8.1 go.uber.org/zap v1.27.0 google.golang.org/grpc v1.66.0 google.golang.org/protobuf v1.34.2 - penahub.gitlab.yandexcloud.net/backend/penahub_common v0.0.0-20240607202348-efe5f2bf3e8c - penahub.gitlab.yandexcloud.net/backend/quiz/worker.git v0.0.0-20240421230341-0e086fcbb990 - penahub.gitlab.yandexcloud.net/devops/linters/golang.git v0.0.0-20240829220549-d35409b619a3 - penahub.gitlab.yandexcloud.net/external/trashlog v0.1.6-0.20240827173635-78ce9878c387 ) require ( + gitea.pena/PenaSide/common v0.0.0-20250103085335-91ea31fee517 // indirect + gitea.pena/PenaSide/hlog v0.0.0-20241125221102-a54c29c002a9 // indirect + gitea.pena/PenaSide/linters-golang v0.0.0-20241207122018-933207374735 // indirect + gitea.pena/PenaSide/trashlog v0.0.0-20250222101337-a43552caae6f // indirect + gitea.pena/SQuiz/common v0.0.0-20250221135056-f98c45e04909 // indirect github.com/ClickHouse/clickhouse-go v1.5.4 // indirect github.com/andybalholm/brotli v1.1.0 // indirect github.com/caarlos0/env/v8 v8.0.0 // indirect @@ -34,25 +37,26 @@ require ( github.com/davecgh/go-spew v1.1.1 // indirect github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect github.com/dustin/go-humanize v1.0.1 // indirect - github.com/goccy/go-json v0.10.2 // indirect + github.com/goccy/go-json v0.10.3 // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/google/uuid v1.6.0 // indirect - github.com/klauspost/compress v1.17.8 // indirect - github.com/klauspost/cpuid/v2 v2.2.7 // indirect + github.com/klauspost/compress v1.17.11 // indirect + github.com/klauspost/cpuid/v2 v2.2.8 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-runewidth v0.0.15 // indirect github.com/minio/md5-simd v1.1.2 // indirect - github.com/minio/minio-go/v7 v7.0.70 // indirect + github.com/minio/minio-go/v7 v7.0.81 // indirect github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 // indirect github.com/pierrec/lz4/v4 v4.1.21 // indirect + github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/richardlehane/mscfb v1.0.4 // indirect github.com/richardlehane/msoleps v1.0.3 // indirect github.com/rivo/uniseg v0.4.7 // indirect github.com/tealeg/xlsx v1.0.5 // indirect - github.com/twmb/franz-go/pkg/kmsg v1.8.0 // indirect + github.com/twmb/franz-go/pkg/kmsg v1.9.0 // indirect github.com/valyala/bytebufferpool v1.0.0 // indirect github.com/valyala/fasthttp v1.53.0 // indirect github.com/valyala/tcplisten v1.0.0 // indirect @@ -60,12 +64,13 @@ require ( github.com/xuri/nfp v0.0.0-20240318013403-ab9948c2c4a7 // indirect go.etcd.io/bbolt v1.3.11 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.27.0 // indirect - golang.org/x/net v0.29.0 // indirect - golang.org/x/sys v0.25.0 // indirect - golang.org/x/text v0.18.0 // indirect + golang.org/x/crypto v0.28.0 // indirect + golang.org/x/net v0.30.0 // indirect + golang.org/x/sys v0.26.0 // indirect + golang.org/x/text v0.19.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 // indirect gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect gopkg.in/ini.v1 v1.67.0 // indirect + gopkg.in/tucnak/telebot.v2 v2.5.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index ca9557a..31b3348 100644 --- a/go.sum +++ b/go.sum @@ -1,4 +1,16 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +gitea.pena/PenaSide/common v0.0.0-20250103085335-91ea31fee517 h1:EgBe8VcdPwmxbSzYLndncP+NmR73uYuXxkTeDlEttEE= +gitea.pena/PenaSide/common v0.0.0-20250103085335-91ea31fee517/go.mod h1:91EuBCgcqgJ6mG36n2pds8sPwwfaJytLWOzY3h2YFKU= +gitea.pena/PenaSide/hlog v0.0.0-20241125221102-a54c29c002a9 h1:tBkXWNIt8icmkMMnq8MA421RWkUy4OZh5P7C3q8uCu4= +gitea.pena/PenaSide/hlog v0.0.0-20241125221102-a54c29c002a9/go.mod h1:sanhSL8aEsfcq21P+eItYiAnKAre+B67nGJmDfk2cf0= +gitea.pena/PenaSide/linters-golang v0.0.0-20241119212350-2759fa93724a h1:UySqMgaOKNsR42Y6GQXoM2wn/waYNc9cakMUSvbEEAg= +gitea.pena/PenaSide/linters-golang v0.0.0-20241119212350-2759fa93724a/go.mod h1:gdd+vOT6up9STkEbxa2qESLIMZFjCmRbkcheFQCVgZU= +gitea.pena/PenaSide/linters-golang v0.0.0-20241207122018-933207374735 h1:jDVeUhGBTXBibmW5dmtJg2m2+z5z2Rf6J4G0LpjVoJ0= +gitea.pena/PenaSide/linters-golang v0.0.0-20241207122018-933207374735/go.mod h1:gdd+vOT6up9STkEbxa2qESLIMZFjCmRbkcheFQCVgZU= +gitea.pena/PenaSide/trashlog v0.0.0-20250222101337-a43552caae6f h1:KbZU49A8tGnqWZiDwerKx2LVT7LD69Y13bwHkuyIjrM= +gitea.pena/PenaSide/trashlog v0.0.0-20250222101337-a43552caae6f/go.mod h1:GRfWJerTUlgy82CiYAxE4tVYSVV54zEJJQy17Fx46E4= +gitea.pena/SQuiz/common v0.0.0-20250221135056-f98c45e04909 h1:iCiqaJ6a7rGESAEUgtVA9IqhVn0oKiwRk7bryTWPV5w= +gitea.pena/SQuiz/common v0.0.0-20250221135056-f98c45e04909/go.mod h1:rQRjqLlLyM71FZcvbM95Nv3ciq44F9DFtUHPZmDK3T8= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/ClickHouse/clickhouse-go v1.5.4 h1:cKjXeYLNWVJIx2J1K6H2CqyRmfwVJVY1OV1coaaFcI0= github.com/ClickHouse/clickhouse-go v1.5.4/go.mod h1:EaI/sW7Azgz9UATzd5ZdZHRUhHgv5+JMS9NSr2smCJI= @@ -40,8 +52,11 @@ github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU= github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= +github.com/goccy/go-json v0.10.3/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= github.com/gofiber/fiber/v2 v2.52.4 h1:P+T+4iK7VaqUsq2PALYEfBBo6bJZ4q3FP8cZ84EggTM= github.com/gofiber/fiber/v2 v2.52.4/go.mod h1:KEOE+cXMhXG0zHc9d8+E38hoX+ZN7bhOtgeF2oT6jrQ= +github.com/gofiber/fiber/v2 v2.52.5 h1:tWoP1MJQjGEe4GB5TUGOi7P2E0ZMMRx5ZTG4rT+yGMo= +github.com/gofiber/fiber/v2 v2.52.5/go.mod h1:KEOE+cXMhXG0zHc9d8+E38hoX+ZN7bhOtgeF2oT6jrQ= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang-jwt/jwt/v5 v5.2.1 h1:OuVbFODueb089Lh128TAcimifWaLhJwVflnrgM17wHk= @@ -68,9 +83,12 @@ github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.17.8 h1:YcnTYrq7MikUT7k0Yb5eceMmALQPYBW/Xltxn0NAMnU= github.com/klauspost/compress v1.17.8/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= +github.com/klauspost/compress v1.17.11 h1:In6xLpyWOi1+C7tXUUWv2ot1QvBjxevKAaI6IXrJmUc= +github.com/klauspost/compress v1.17.11/go.mod h1:pMDklpSncoRMuLFrf1W9Ss9KT+0rH90U12bZKk7uwG0= github.com/klauspost/cpuid/v2 v2.0.1/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= github.com/klauspost/cpuid/v2 v2.2.7 h1:ZWSB3igEs+d0qvnxR/ZBzXVmxkgt8DdzP6m9pfuVLDM= github.com/klauspost/cpuid/v2 v2.2.7/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= +github.com/klauspost/cpuid/v2 v2.2.8/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= @@ -95,6 +113,7 @@ github.com/minio/md5-simd v1.1.2 h1:Gdi1DZK69+ZVMoNHRXJyNcxrMA4dSxoYHZSQbirFg34= github.com/minio/md5-simd v1.1.2/go.mod h1:MzdKDxYpY2BT9XQFocsiZf/NKVtR7nkE4RoEpN+20RM= github.com/minio/minio-go/v7 v7.0.70 h1:1u9NtMgfK1U42kUxcsl5v0yj6TEOPR497OAQxpJnn2g= github.com/minio/minio-go/v7 v7.0.70/go.mod h1:4yBA8v80xGA30cfM3fz0DKYMXunWl/AV/6tWEs9ryzo= +github.com/minio/minio-go/v7 v7.0.81/go.mod h1:84gmIilaX4zcvAWWzJ5Z1WI5axN+hAbM5w25xf8xvC0= github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 h1:RWengNIwukTxcDr9M+97sNutRR1RKhG96O6jWumTTnw= github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8= github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= @@ -138,6 +157,7 @@ github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+ github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= @@ -149,8 +169,10 @@ github.com/themakers/hlog v0.0.0-20191205140925-235e0e4baddf h1:TJJm6KcBssmbWzpl github.com/themakers/hlog v0.0.0-20191205140925-235e0e4baddf/go.mod h1:1FsorU3vnXO9xS9SrhUp8fRb/6H/Zfll0rPt1i4GWaA= github.com/twmb/franz-go v1.16.1 h1:rpWc7fB9jd7TgmCyfxzenBI+QbgS8ZfJOUQE+tzPtbE= github.com/twmb/franz-go v1.16.1/go.mod h1:/pER254UPPGp/4WfGqRi+SIRGE50RSQzVubQp6+N4FA= +github.com/twmb/franz-go v1.18.0/go.mod h1:zXCGy74M0p5FbXsLeASdyvfLFsBvTubVqctIaa5wQ+I= github.com/twmb/franz-go/pkg/kmsg v1.8.0 h1:lAQB9Z3aMrIP9qF9288XcFf/ccaSxEitNA1CDTEIeTA= github.com/twmb/franz-go/pkg/kmsg v1.8.0/go.mod h1:HzYEb8G3uu5XevZbtU0dVbkphaKTHk0X68N5ka4q6mU= +github.com/twmb/franz-go/pkg/kmsg v1.9.0/go.mod h1:CMbfazviCyY6HM0SXuG5t9vOwYDHRCSrJJyBAe5paqg= github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= github.com/valyala/fasthttp v1.53.0 h1:lW/+SUkOxCx2vlIu0iaImv4JLrVRnbbkpCoaawvA4zc= @@ -187,6 +209,7 @@ golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.27.0 h1:GXm2NjJrPaiv/h1tb2UH8QfgC/hOf/+z0p6PT8o1w7A= golang.org/x/crypto v0.27.0/go.mod h1:1Xngt8kV6Dvbssa53Ziq6Eqn0HqbZi5Z6R0ZpwQzt70= +golang.org/x/crypto v0.28.0/go.mod h1:rmgy+3RHxRZMyY0jjAJShp2zgEdOqj2AO7U0pYmeQ7U= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/image v0.14.0 h1:tNgSxAFe3jC4uYqvZdTr84SZoM1KfwdC9SKIFrLjFn4= golang.org/x/image v0.14.0/go.mod h1:HUYqC05R2ZcZ3ejNQsIHQDQiwWM4JBqmm6MKANTp4LE= @@ -207,6 +230,8 @@ golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.29.0 h1:5ORfpBpCs4HzDYoodCDBbwHzdR5UrLBZ3sOnUJmFoHo= golang.org/x/net v0.29.0/go.mod h1:gLkgy8jTGERgjzMic6DS9+SP0ajcu6Xu3Orq/SpETg0= +golang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4= +golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -226,10 +251,14 @@ golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.25.0 h1:r+8e+loiHxRqhXVl6ML1nO3l1+oFoWbnlu2Ehimmi34= golang.org/x/sys v0.25.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.26.0 h1:KHjCJyddX0LoSTb3J+vWpupP9p0oznkqVk/IfjymZbo= +golang.org/x/sys v0.26.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.18.0 h1:XvMDiNzPAl0jr17s6W9lcaIhGUfUORdGCNsuLmPG224= golang.org/x/text v0.18.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= +golang.org/x/text v0.19.0 h1:kTxAhCbGbxhK0IwgSKiMO5awPoDQ0RpfiVYBfK860YM= +golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= diff --git a/internal/app/app.go b/internal/app/app.go index 80d4b67..ed4f786 100644 --- a/internal/app/app.go +++ b/internal/app/app.go @@ -3,22 +3,22 @@ package app import ( "context" "errors" + "gitea.pena/PenaSide/common/privilege" + "gitea.pena/PenaSide/hlog" + "gitea.pena/PenaSide/trashlog/wrappers/zaptrashlog" + "gitea.pena/SQuiz/common/model" + "gitea.pena/SQuiz/core/internal/brokers" + "gitea.pena/SQuiz/core/internal/initialize" + "gitea.pena/SQuiz/core/internal/models" + server "gitea.pena/SQuiz/core/internal/server/grpc" + "gitea.pena/SQuiz/core/internal/server/http" + "gitea.pena/SQuiz/core/internal/tools" + "gitea.pena/SQuiz/core/internal/workers" + "gitea.pena/SQuiz/core/pkg/closer" "github.com/gofiber/fiber/v2" "github.com/gofiber/fiber/v2/log" - "github.com/themakers/hlog" "go.uber.org/zap" "go.uber.org/zap/zapcore" - "penahub.gitlab.yandexcloud.net/backend/penahub_common/privilege" - "penahub.gitlab.yandexcloud.net/backend/quiz/common.git/model" - "penahub.gitlab.yandexcloud.net/backend/quiz/core/internal/brokers" - "penahub.gitlab.yandexcloud.net/backend/quiz/core/internal/initialize" - "penahub.gitlab.yandexcloud.net/backend/quiz/core/internal/models" - server "penahub.gitlab.yandexcloud.net/backend/quiz/core/internal/server/grpc" - "penahub.gitlab.yandexcloud.net/backend/quiz/core/internal/server/http" - "penahub.gitlab.yandexcloud.net/backend/quiz/core/internal/tools" - "penahub.gitlab.yandexcloud.net/backend/quiz/core/internal/workers" - "penahub.gitlab.yandexcloud.net/backend/quiz/core/pkg/closer" - "penahub.gitlab.yandexcloud.net/external/trashlog/wrappers/zaptrashlog" "time" ) @@ -75,7 +75,7 @@ func Run(ctx context.Context, cfg initialize.Config, build Build) error { return zapcore.NewTee(core, clickHouseLogger) })) - loggerHlog := hlog.New(loggerForHlog).Module(cfg.ModuleLogger) + loggerHlog := hlog.New(loggerForHlog).Module(initialize.ModuleLogger) loggerHlog.With(models.AllFields{}) loggerHlog.Emit(InfoSvcStarted{}) @@ -90,7 +90,7 @@ func Run(ctx context.Context, cfg initialize.Config, build Build) error { kafkaClient, err := initialize.KafkaInit(ctx, initialize.KafkaDeps{ KafkaGroup: cfg.KafkaGroup, KafkaBrokers: cfg.KafkaBrokers, - KafkaTopic: cfg.KafkaTopic, + KafkaTopic: cfg.KafkaTopicNotifyer, }) if err != nil { zapLogger.Error("Error initializing kafka", zap.Error(err)) @@ -109,7 +109,7 @@ func Run(ctx context.Context, cfg initialize.Config, build Build) error { } go tools.PublishPrivilege(privilege.NewPrivilege(privilege.Client{ - URL: cfg.HubAdminUrl, + URL: cfg.HubadminMicroserviceURL, ServiceName: cfg.ServiceName, Privileges: model.Privileges, }, &fiber.Client{}), 10, 5*time.Minute) @@ -121,10 +121,10 @@ func Run(ctx context.Context, cfg initialize.Config, build Build) error { } tgWC := workers.NewTgListenerWC(workers.Deps{ - BotID: int64(6712573453), // todo убрать - Redis: redisClient, - Dal: dalS.PgDAL, - TgClient: clients.TgClient, + BotID: int64(6712573453), // todo убрать + Redis: redisClient, + Dal: dalS.PgDAL, + //TgClient: clients.TgClient, }) go tgWC.Start(ctx) @@ -152,16 +152,13 @@ func Run(ctx context.Context, cfg initialize.Config, build Build) error { }) go func() { - if err := srv.Start(cfg.HttpHost + ":" + cfg.NumberPort); err != nil { + if err := srv.Start(cfg.ClientHttpURL); err != nil { zapLogger.Error("HTTP server startup error", zap.Error(err)) cancel() } }() - go grpc.Run(server.DepsGrpcRun{ - Host: cfg.GrpcHost, - Port: cfg.GrpcPort, - }) + go grpc.Run(cfg.GrpcURL) srv.ListRoutes() diff --git a/internal/controllers/http_controllers/account/account.go b/internal/controllers/http_controllers/account/account.go index 0ae231c..6ca1b07 100644 --- a/internal/controllers/http_controllers/account/account.go +++ b/internal/controllers/http_controllers/account/account.go @@ -5,16 +5,16 @@ import ( "encoding/json" "errors" "fmt" + "gitea.pena/PenaSide/common/log_mw" + "gitea.pena/SQuiz/common/dal" + "gitea.pena/SQuiz/common/middleware" + "gitea.pena/SQuiz/common/model" + "gitea.pena/SQuiz/common/pj_errors" + "gitea.pena/SQuiz/core/internal/brokers" + "gitea.pena/SQuiz/core/internal/clients/auth" + "gitea.pena/SQuiz/core/internal/models" "github.com/go-redis/redis/v8" "github.com/gofiber/fiber/v2" - "penahub.gitlab.yandexcloud.net/backend/penahub_common/log_mw" - "penahub.gitlab.yandexcloud.net/backend/quiz/common.git/dal" - "penahub.gitlab.yandexcloud.net/backend/quiz/common.git/middleware" - "penahub.gitlab.yandexcloud.net/backend/quiz/common.git/model" - "penahub.gitlab.yandexcloud.net/backend/quiz/common.git/pj_errors" - "penahub.gitlab.yandexcloud.net/backend/quiz/core/internal/brokers" - "penahub.gitlab.yandexcloud.net/backend/quiz/core/internal/clients/auth" - "penahub.gitlab.yandexcloud.net/backend/quiz/core/internal/models" "strconv" "time" ) diff --git a/internal/controllers/http_controllers/question/question.go b/internal/controllers/http_controllers/question/question.go index fb76581..e177cf1 100644 --- a/internal/controllers/http_controllers/question/question.go +++ b/internal/controllers/http_controllers/question/question.go @@ -1,13 +1,13 @@ package question import ( + "gitea.pena/PenaSide/common/log_mw" + "gitea.pena/SQuiz/common/dal" + "gitea.pena/SQuiz/common/middleware" + "gitea.pena/SQuiz/common/model" + "gitea.pena/SQuiz/core/internal/models" "github.com/gofiber/fiber/v2" "github.com/lib/pq" - "penahub.gitlab.yandexcloud.net/backend/penahub_common/log_mw" - "penahub.gitlab.yandexcloud.net/backend/quiz/common.git/dal" - "penahub.gitlab.yandexcloud.net/backend/quiz/common.git/middleware" - "penahub.gitlab.yandexcloud.net/backend/quiz/common.git/model" - "penahub.gitlab.yandexcloud.net/backend/quiz/core/internal/models" "unicode/utf8" ) diff --git a/internal/controllers/http_controllers/quiz/quiz.go b/internal/controllers/http_controllers/quiz/quiz.go index 21e6736..d1a15ce 100644 --- a/internal/controllers/http_controllers/quiz/quiz.go +++ b/internal/controllers/http_controllers/quiz/quiz.go @@ -2,13 +2,13 @@ package quiz import ( "fmt" + "gitea.pena/PenaSide/common/log_mw" + "gitea.pena/SQuiz/common/dal" + "gitea.pena/SQuiz/common/middleware" + "gitea.pena/SQuiz/common/model" + "gitea.pena/SQuiz/common/repository/quiz" + "gitea.pena/SQuiz/core/internal/models" "github.com/gofiber/fiber/v2" - "penahub.gitlab.yandexcloud.net/backend/penahub_common/log_mw" - "penahub.gitlab.yandexcloud.net/backend/quiz/common.git/dal" - "penahub.gitlab.yandexcloud.net/backend/quiz/common.git/middleware" - "penahub.gitlab.yandexcloud.net/backend/quiz/common.git/model" - "penahub.gitlab.yandexcloud.net/backend/quiz/common.git/repository/quiz" - "penahub.gitlab.yandexcloud.net/backend/quiz/core/internal/models" "time" "unicode/utf8" ) diff --git a/internal/controllers/http_controllers/result/result.go b/internal/controllers/http_controllers/result/result.go index 5902b30..5b8f930 100644 --- a/internal/controllers/http_controllers/result/result.go +++ b/internal/controllers/http_controllers/result/result.go @@ -2,12 +2,12 @@ package result import ( "bytes" + "gitea.pena/SQuiz/common/dal" + "gitea.pena/SQuiz/common/middleware" + "gitea.pena/SQuiz/common/model" + "gitea.pena/SQuiz/common/repository/result" "github.com/gofiber/fiber/v2" - "penahub.gitlab.yandexcloud.net/backend/quiz/common.git/dal" - "penahub.gitlab.yandexcloud.net/backend/quiz/common.git/middleware" - "penahub.gitlab.yandexcloud.net/backend/quiz/common.git/model" - "penahub.gitlab.yandexcloud.net/backend/quiz/common.git/repository/result" - "penahub.gitlab.yandexcloud.net/backend/quiz/core/internal/tools" + "gitea.pena/SQuiz/core/internal/tools" "strconv" "time" ) diff --git a/internal/controllers/http_controllers/statistic/statistic.go b/internal/controllers/http_controllers/statistic/statistic.go index e4c2572..59de503 100644 --- a/internal/controllers/http_controllers/statistic/statistic.go +++ b/internal/controllers/http_controllers/statistic/statistic.go @@ -1,9 +1,9 @@ package statistic import ( + "gitea.pena/SQuiz/common/dal" + "gitea.pena/SQuiz/common/repository/statistics" "github.com/gofiber/fiber/v2" - "penahub.gitlab.yandexcloud.net/backend/quiz/common.git/dal" - "penahub.gitlab.yandexcloud.net/backend/quiz/common.git/repository/statistics" "strconv" ) diff --git a/internal/controllers/http_controllers/telegram/telegram.go b/internal/controllers/http_controllers/telegram/telegram.go index d0989d0..5bf59d2 100644 --- a/internal/controllers/http_controllers/telegram/telegram.go +++ b/internal/controllers/http_controllers/telegram/telegram.go @@ -2,31 +2,33 @@ package telegram import ( "errors" + "gitea.pena/SQuiz/common/dal" + "gitea.pena/SQuiz/common/pj_errors" + //"fmt" "github.com/gofiber/fiber/v2" // "github.com/rs/xid" //"path/filepath" // "penahub.gitlab.yandexcloud.net/backend/quiz/common.git/model" - "penahub.gitlab.yandexcloud.net/backend/quiz/common.git/pj_errors" - // "penahub.gitlab.yandexcloud.net/backend/quiz/core/clients/telegram" + // "gitea.pena/SQuiz/core/clients/telegram" // "penahub.gitlab.yandexcloud.net/backend/tdlib/client" "strconv" ) type Deps struct { - DAL *dal.DAL - TelegramClient *telegram.TelegramClient + DAL *dal.DAL + //TelegramClient *telegram.TelegramClient } type Telegram struct { - dal *dal.DAL - telegramClient *telegram.TelegramClient + dal *dal.DAL + //telegramClient *telegram.TelegramClient } func NewTelegramController(deps Deps) *Telegram { return &Telegram{ - dal: deps.DAL, - telegramClient: deps.TelegramClient, + dal: deps.DAL, + //telegramClient: deps.TelegramClient, } } @@ -48,7 +50,7 @@ func (r *Telegram) GetPoolTgAccounts(ctx *fiber.Ctx) error { return ctx.Status(fiber.StatusOK).JSON(allAccounts) } -func (s *Service) AddingTgAccount(ctx *fiber.Ctx) error { +func (r *Telegram) AddingTgAccount(ctx *fiber.Ctx) error { // var req telegram.AuthTgUserReq // if err := ctx.BodyParser(&req); err != nil { // return ctx.Status(fiber.StatusBadRequest).SendString("Invalid request data") diff --git a/internal/controllers/rpc_controllers/mail_notify.go b/internal/controllers/rpc_controllers/mail_notify.go index 23f87bc..3d50faa 100644 --- a/internal/controllers/rpc_controllers/mail_notify.go +++ b/internal/controllers/rpc_controllers/mail_notify.go @@ -2,8 +2,8 @@ package rpc_controllers import ( "context" - "penahub.gitlab.yandexcloud.net/backend/quiz/common.git/dal" - notifyer2 "penahub.gitlab.yandexcloud.net/backend/quiz/core/internal/proto/notifyer" + "gitea.pena/SQuiz/common/dal" + notifyer2 "gitea.pena/SQuiz/core/internal/proto/notifyer" ) type MailNotify struct { diff --git a/internal/initialize/clients.go b/internal/initialize/clients.go index d792494..3450bd3 100644 --- a/internal/initialize/clients.go +++ b/internal/initialize/clients.go @@ -2,24 +2,23 @@ package initialize import ( "context" - "penahub.gitlab.yandexcloud.net/backend/quiz/common.git/dal" - "penahub.gitlab.yandexcloud.net/backend/quiz/core/internal/clients/auth" - "penahub.gitlab.yandexcloud.net/backend/quiz/core/internal/clients/telegram" + "gitea.pena/SQuiz/common/dal" + "gitea.pena/SQuiz/core/internal/clients/auth" ) type Clients struct { AuthClient *auth.AuthClient - TgClient *telegram.TelegramClient + //TgClient *telegram.TelegramClient } func NewClients(ctx context.Context, cfg Config, pgDAL *dal.DAL) (*Clients, error) { - tgClient, err := telegram.NewTelegramClient(ctx, pgDAL) - if err != nil { - return nil, err - } + //tgClient, err := telegram.NewTelegramClient(ctx, pgDAL) + //if err != nil { + // return nil, err + //} return &Clients{ - TgClient: tgClient, - AuthClient: auth.NewAuthClient(cfg.AuthServiceURL), + //TgClient: tgClient, + AuthClient: auth.NewAuthClient(cfg.AuthMicroserviceURL), }, nil } diff --git a/internal/initialize/config.go b/internal/initialize/config.go index c3d2af1..e960b3e 100644 --- a/internal/initialize/config.go +++ b/internal/initialize/config.go @@ -7,28 +7,26 @@ import ( ) type Config struct { - LoggerProdMode bool `env:"IS_PROD_LOG" envDefault:"false"` - IsProd bool `env:"IS_PROD" envDefault:"false"` - NumberPort string `env:"PORT" envDefault:"1488"` - HttpHost string `env:"HTTP_HOST" envDefault:"0.0.0.0"` - CrtFile string `env:"CRT" envDefault:"server.crt"` - KeyFile string `env:"KEY" envDefault:"server.key"` - PostgresCredentials string `env:"PG_CRED" envDefault:"host=localhost port=35432 user=squiz password=Redalert2 dbname=squiz sslmode=disable"` - HubAdminUrl string `env:"HUB_ADMIN_URL" envDefault:"http://localhost:8001/"` - ServiceName string `env:"SERVICE_NAME" envDefault:"squiz"` - AuthServiceURL string `env:"AUTH_URL" envDefault:"http://localhost:8000/"` - GrpcHost string `env:"GRPC_HOST" envDefault:"localhost"` - GrpcPort string `env:"GRPC_PORT" envDefault:"9000"` - KafkaBrokers string `env:"KAFKA_BROKERS" envDefault:"localhost:9092"` - KafkaTopic string `env:"KAFKA_TOPIC" envDefault:"test-topic"` - KafkaGroup string `env:"KAFKA_GROUP" envDefault:"mailnotifier"` - TrashLogHost string `env:"TRASH_LOG_HOST" envDefault:"localhost:7113"` - ModuleLogger string `env:"MODULE_LOGGER" envDefault:"core-local"` - ClickHouseCred string `env:"CLICK_HOUSE_CRED" envDefault:"tcp://10.8.0.15:9000/default?sslmode=disable"` - RedisHost string `env:"REDIS_HOST" envDefault:"localhost:6379"` - RedisPassword string `env:"REDIS_PASSWORD" envDefault:"admin"` - RedisDB uint64 `env:"REDIS_DB" envDefault:"2"` - S3Prefix string `env:"S3_PREFIX"` + LoggerProdMode bool `env:"IS_PROD_LOG" envDefault:"false"` + IsProd bool `env:"IS_PROD" envDefault:"false"` + ClientHttpURL string `env:"CLIENT_HTTP_URL" envDefault:"0.0.0.0:1488"` + GrpcURL string `env:"GRPC_URL" envDefault:"localhost:9000"` + PostgresURL string `env:"POSTGRES_URL" envDefault:"host=localhost port=35432 user=squiz password=Redalert2 dbname=squiz sslmode=disable"` + ClickhouseURL string `env:"CLICKHOUSE_URL" envDefault:"tcp://10.8.0.15:9000/default?sslmode=disable"` + HubadminMicroserviceURL string `env:"HUBADMIN_MICROSERVICE_URL" envDefault:"http://localhost:8001/"` + AuthMicroserviceURL string `env:"AUTH_MICROSERVICE_URL" envDefault:"http://localhost:8000/"` + KafkaBrokers string `env:"KAFKA_BROKERS" envDefault:"localhost:9092"` + KafkaGroup string `env:"KAFKA_GROUP" envDefault:"mailnotifier"` + KafkaTopicNotifyer string `env:"KAFKA_TOPIC" envDefault:"test-topic"` + TrashLogHost string `env:"TRASH_LOG_HOST" envDefault:"localhost:7113"` + S3Prefix string `env:"S3_PREFIX"` + RedisHost string `env:"REDIS_HOST" envDefault:"localhost:6379"` + RedisPassword string `env:"REDIS_PASSWORD" envDefault:"admin"` + RedisDB uint64 `env:"REDIS_DB" envDefault:"2"` + + CrtFile string `env:"CRT" envDefault:"server.crt"` + KeyFile string `env:"KEY" envDefault:"server.key"` + ServiceName string `env:"SERVICE_NAME" envDefault:"squiz"` } func LoadConfig() (*Config, error) { @@ -41,3 +39,5 @@ func LoadConfig() (*Config, error) { } return &config, nil } + +const ModuleLogger = "core" diff --git a/internal/initialize/controllers.go b/internal/initialize/controllers.go index 19879e1..9945ae1 100644 --- a/internal/initialize/controllers.go +++ b/internal/initialize/controllers.go @@ -2,14 +2,14 @@ package initialize import ( "github.com/go-redis/redis/v8" - "penahub.gitlab.yandexcloud.net/backend/quiz/core/internal/brokers" - "penahub.gitlab.yandexcloud.net/backend/quiz/core/internal/controllers/http_controllers/account" - "penahub.gitlab.yandexcloud.net/backend/quiz/core/internal/controllers/http_controllers/question" - "penahub.gitlab.yandexcloud.net/backend/quiz/core/internal/controllers/http_controllers/quiz" - "penahub.gitlab.yandexcloud.net/backend/quiz/core/internal/controllers/http_controllers/result" - "penahub.gitlab.yandexcloud.net/backend/quiz/core/internal/controllers/http_controllers/statistic" - "penahub.gitlab.yandexcloud.net/backend/quiz/core/internal/controllers/http_controllers/telegram" - "penahub.gitlab.yandexcloud.net/backend/quiz/core/internal/controllers/rpc_controllers" + "gitea.pena/SQuiz/core/internal/brokers" + "gitea.pena/SQuiz/core/internal/controllers/http_controllers/account" + "gitea.pena/SQuiz/core/internal/controllers/http_controllers/question" + "gitea.pena/SQuiz/core/internal/controllers/http_controllers/quiz" + "gitea.pena/SQuiz/core/internal/controllers/http_controllers/result" + "gitea.pena/SQuiz/core/internal/controllers/http_controllers/statistic" + "gitea.pena/SQuiz/core/internal/controllers/http_controllers/telegram" + "gitea.pena/SQuiz/core/internal/controllers/rpc_controllers" ) type ControllerDeps struct { @@ -65,8 +65,8 @@ func NewControllers(deps ControllerDeps) *Controller { ChDAL: deps.DALs.ChDAL, }), Telegram: telegram.NewTelegramController(telegram.Deps{ - DAL: deps.DALs.PgDAL, - TelegramClient: deps.Clients.TgClient, + DAL: deps.DALs.PgDAL, + //TelegramClient: deps.Clients.TgClient, }), }, } diff --git a/internal/initialize/dals.go b/internal/initialize/dals.go index 143e783..c1c342d 100644 --- a/internal/initialize/dals.go +++ b/internal/initialize/dals.go @@ -2,7 +2,7 @@ package initialize import ( "context" - "penahub.gitlab.yandexcloud.net/backend/quiz/common.git/dal" + "gitea.pena/SQuiz/common/dal" ) type DALs struct { @@ -11,12 +11,12 @@ type DALs struct { } func NewDALs(ctx context.Context, cfg Config) (*DALs, error) { - pgDal, err := dal.New(ctx, cfg.PostgresCredentials, nil) + pgDal, err := dal.New(ctx, cfg.PostgresURL, nil) if err != nil { return nil, err } - chDal, err := dal.NewClickHouseDAL(ctx, cfg.ClickHouseCred) + chDal, err := dal.NewClickHouseDAL(ctx, cfg.ClickhouseURL) if err != nil { return nil, err } diff --git a/internal/server/grpc/rpc_server.go b/internal/server/grpc/rpc_server.go index 69ff851..001139e 100644 --- a/internal/server/grpc/rpc_server.go +++ b/internal/server/grpc/rpc_server.go @@ -2,15 +2,14 @@ package server import ( "context" - "fmt" grpc_middleware "github.com/grpc-ecosystem/go-grpc-middleware" grpc_zap "github.com/grpc-ecosystem/go-grpc-middleware/logging/zap" grpc_recovery "github.com/grpc-ecosystem/go-grpc-middleware/recovery" "go.uber.org/zap" "google.golang.org/grpc" "net" - "penahub.gitlab.yandexcloud.net/backend/quiz/core/internal/initialize" - "penahub.gitlab.yandexcloud.net/backend/quiz/core/internal/proto/notifyer" + "gitea.pena/SQuiz/core/internal/initialize" + "gitea.pena/SQuiz/core/internal/proto/notifyer" "time" ) @@ -36,14 +35,7 @@ func NewGRPC(logger *zap.Logger) (*GRPC, error) { }, nil } -type DepsGrpcRun struct { - Host string - Port string -} - -func (g *GRPC) Run(config DepsGrpcRun) { - connectionString := fmt.Sprintf("%s:%s", config.Host, config.Port) - +func (g *GRPC) Run(connectionString string) { g.logger.Info("Starting GRPC Server", zap.String("host", connectionString)) if err := g.listen(connectionString); err != nil && err != grpc.ErrServerStopped { diff --git a/internal/server/http/http_server.go b/internal/server/http/http_server.go index be4ed40..121c9b1 100644 --- a/internal/server/http/http_server.go +++ b/internal/server/http/http_server.go @@ -3,11 +3,11 @@ package http import ( "context" "fmt" + "gitea.pena/PenaSide/common/log_mw" + "gitea.pena/PenaSide/hlog" + "gitea.pena/SQuiz/common/middleware" "github.com/gofiber/fiber/v2" - "github.com/themakers/hlog" "go.uber.org/zap" - "penahub.gitlab.yandexcloud.net/backend/penahub_common/log_mw" - "penahub.gitlab.yandexcloud.net/backend/quiz/common.git/middleware" ) type ServerConfig struct { diff --git a/internal/tools/publishPriv.go b/internal/tools/publishPriv.go index 6326e5b..fe899ff 100644 --- a/internal/tools/publishPriv.go +++ b/internal/tools/publishPriv.go @@ -2,7 +2,7 @@ package tools import ( "fmt" - "penahub.gitlab.yandexcloud.net/backend/penahub_common/privilege" + "gitea.pena/PenaSide/common/privilege" "time" ) diff --git a/internal/tools/tools.go b/internal/tools/tools.go index 88cbc68..7a1ef43 100644 --- a/internal/tools/tools.go +++ b/internal/tools/tools.go @@ -3,6 +3,7 @@ package tools import ( "encoding/json" "fmt" + "gitea.pena/SQuiz/common/model" "github.com/xuri/excelize/v2" _ "image/gif" _ "image/jpeg" @@ -12,7 +13,6 @@ import ( "net/http" "net/url" "path/filepath" - "penahub.gitlab.yandexcloud.net/backend/quiz/common.git/model" "regexp" "sort" "strconv" diff --git a/internal/workers/tg_worker.go b/internal/workers/tg_worker.go index 51d5894..ceac311 100644 --- a/internal/workers/tg_worker.go +++ b/internal/workers/tg_worker.go @@ -2,36 +2,31 @@ package workers import ( "context" - "encoding/json" - "fmt" + "gitea.pena/SQuiz/common/dal" "github.com/go-redis/redis/v8" - "penahub.gitlab.yandexcloud.net/backend/quiz/common.git/dal" - "penahub.gitlab.yandexcloud.net/backend/quiz/common.git/model" - "penahub.gitlab.yandexcloud.net/backend/quiz/core/internal/clients/telegram" - "strconv" "time" ) type Deps struct { - BotID int64 - Redis *redis.Client - Dal *dal.DAL - TgClient *telegram.TelegramClient + BotID int64 + Redis *redis.Client + Dal *dal.DAL + //TgClient *telegram.TelegramClient } type TgListenerWorker struct { - botID int64 - redis *redis.Client - dal *dal.DAL - tgClient *telegram.TelegramClient + botID int64 + redis *redis.Client + dal *dal.DAL + //tgClient *telegram.TelegramClient } func NewTgListenerWC(deps Deps) *TgListenerWorker { return &TgListenerWorker{ - botID: deps.BotID, - redis: deps.Redis, - dal: deps.Dal, - tgClient: deps.TgClient, + botID: deps.BotID, + redis: deps.Redis, + dal: deps.Dal, + //tgClient: deps.TgClient, } } @@ -50,63 +45,63 @@ func (wc *TgListenerWorker) Start(ctx context.Context) { } func (wc *TgListenerWorker) processTasks(ctx context.Context) { - var cursor uint64 - for { - var keys []string - var err error - keys, cursor, err = wc.redis.Scan(ctx, cursor, "telegram_task:*", 0).Result() - if err != nil { - fmt.Println("Failed scan for telegram tasks:", err) - break - } - - for _, key := range keys { - func() { - taskBytes, err := wc.redis.GetDel(ctx, key).Result() - if err == redis.Nil { - return - } else if err != nil { - fmt.Println("Failed getdel telegram task:", err) - return - } - // todo logging into tg with trashlog - var aimErr error - defer func() { - if r := recover(); r != nil || aimErr != nil { - fmt.Println("recovering from panic or error setting redis value:", r, aimErr) - _ = wc.redis.Set(ctx, key, taskBytes, 0).Err() - } - }() - - var task model.TgRedisTask - if err = json.Unmarshal([]byte(taskBytes), &task); err != nil { - fmt.Println("Failed unmarshal telegram task:", err) - return - } - - var inviteLink string - var chatID int64 - inviteLink, chatID, aimErr = wc.tgClient.CreateChannel(task.Name, wc.botID) - if aimErr != nil { - fmt.Println("Failed create tg channel:", aimErr) - return - } - - _, aimErr = wc.dal.AccountRepo.PostLeadTarget(ctx, model.LeadTarget{ - AccountID: task.AccountID, - Type: model.LeadTargetTg, - QuizID: task.QuizID, - Target: strconv.Itoa(int(chatID)), - InviteLink: inviteLink, - }) - if aimErr != nil { - fmt.Println("Failed create lead target in db:", aimErr) - return - } - }() - } - if cursor == 0 { - break - } - } + //var cursor uint64 + //for { + // var keys []string + // var err error + // keys, cursor, err = wc.redis.Scan(ctx, cursor, "telegram_task:*", 0).Result() + // if err != nil { + // fmt.Println("Failed scan for telegram tasks:", err) + // break + // } + // + // for _, key := range keys { + // func() { + // taskBytes, err := wc.redis.GetDel(ctx, key).Result() + // if err == redis.Nil { + // return + // } else if err != nil { + // fmt.Println("Failed getdel telegram task:", err) + // return + // } + // // todo logging into tg with trashlog + // var aimErr error + // defer func() { + // if r := recover(); r != nil || aimErr != nil { + // fmt.Println("recovering from panic or error setting redis value:", r, aimErr) + // _ = wc.redis.Set(ctx, key, taskBytes, 0).Err() + // } + // }() + // + // var task model.TgRedisTask + // if err = json.Unmarshal([]byte(taskBytes), &task); err != nil { + // fmt.Println("Failed unmarshal telegram task:", err) + // return + // } + // + // var inviteLink string + // var chatID int64 + // inviteLink, chatID, aimErr = wc.tgClient.CreateChannel(task.Name, wc.botID) + // if aimErr != nil { + // fmt.Println("Failed create tg channel:", aimErr) + // return + // } + // + // _, aimErr = wc.dal.AccountRepo.PostLeadTarget(ctx, model.LeadTarget{ + // AccountID: task.AccountID, + // Type: model.LeadTargetTg, + // QuizID: task.QuizID, + // Target: strconv.Itoa(int(chatID)), + // InviteLink: inviteLink, + // }) + // if aimErr != nil { + // fmt.Println("Failed create lead target in db:", aimErr) + // return + // } + // }() + // } + // if cursor == 0 { + // break + // } + //} } diff --git a/service/service.go b/service/service.go deleted file mode 100644 index 08c40df..0000000 --- a/service/service.go +++ /dev/null @@ -1,101 +0,0 @@ -package service - -import ( - "github.com/go-redis/redis/v8" - "github.com/gofiber/fiber/v2" - "penahub.gitlab.yandexcloud.net/backend/quiz/common.git/dal" - "penahub.gitlab.yandexcloud.net/backend/quiz/core/brokers" - "penahub.gitlab.yandexcloud.net/backend/quiz/core/clients/auth" -// "penahub.gitlab.yandexcloud.net/backend/quiz/core/clients/telegram" -) - -// Service is an entity for http requests handling -type Service struct { - dal *dal.DAL - authClient *auth.AuthClient - producer *brokers.Producer - serviceName string - chDAL *dal.ClickHouseDAL -// telegramClient *telegram.TelegramClient - redisClient *redis.Client - s3Prefix string -} - -type Deps struct { - Dal *dal.DAL - AuthClient *auth.AuthClient - Producer *brokers.Producer - ServiceName string - ChDAL *dal.ClickHouseDAL -// TelegramClient *telegram.TelegramClient - RedisClient *redis.Client - S3Prefix string -} - -func New(deps Deps) *Service { - return &Service{ - dal: deps.Dal, - authClient: deps.AuthClient, - producer: deps.Producer, - serviceName: deps.ServiceName, - chDAL: deps.ChDAL, -// telegramClient: deps.TelegramClient, - redisClient: deps.RedisClient, - s3Prefix: deps.S3Prefix, - } -} - -// Register is a function for add handlers of service to external multiplexer -func (s *Service) Register(app *fiber.App) { - // quiz manipulating handlers - app.Post("/quiz/create", s.CreateQuiz) - app.Post("/quiz/getList", s.GetQuizList) - app.Patch("/quiz/edit", s.UpdateQuiz) - app.Post("/quiz/copy", s.CopyQuiz) - app.Post("/quiz/history", s.GetQuizHistory) - app.Delete("/quiz/delete", s.DeleteQuiz) - app.Patch("/quiz/archive", s.ArchiveQuiz) - app.Post("/quiz/move", s.QuizMove) - app.Post("/quiz/template", s.TemplateCopy) - - // question manipulating handlers - app.Post("/question/create", s.CreateQuestion) - app.Post("/question/getList", s.GetQuestionList) - app.Patch("/question/edit", s.UpdateQuestion) - app.Post("/question/copy", s.CopyQuestion) - app.Post("/question/history", s.GetQuestionHistory) - app.Delete("/question/delete", s.DeleteQuestion) - - // account handlers - app.Get("/account/get", s.getCurrentAccount) - app.Post("/account/create", s.createAccount) - app.Delete("/account/delete", s.deleteAccount) - app.Get("/accounts", s.getAccounts) - app.Get("/privilege/:userId", s.getPrivilegeByUserID) - app.Delete("/account/:userId", s.deleteAccountByUserID) - app.Post("/account/manualdone", s.ManualDone) - app.Post("/account/leadtarget", s.PostLeadTarget) - app.Delete("/account/leadtarget/:id", s.DeleteLeadTarget) - app.Get("/account/leadtarget/:quizID", s.GetLeadTarget) - app.Put("/account/leadtarget", s.UpdateLeadTarget) - - // result handlers - app.Post("/results/getResults/:quizId", s.GetResultsByQuizID) - app.Delete("/results/delete/:resultId", s.DelResultByID) - app.Patch("/result/seen", s.SetStatus) - app.Post("/results/:quizID/export", s.ExportResultsToCSV) - app.Get("/result/:resultID", s.GetResultAnswers) - - // statistics handlers - app.Post("/statistic/:quizID/devices", s.GetDeviceStatistics) - app.Post("/statistic/:quizID/general", s.GetGeneralStatistics) - app.Post("/statistic/:quizID/questions", s.GetQuestionsStatistics) - app.Post("/statistic", s.AllServiceStatistics) - app.Get("/statistics/:quizID/pipelines", s.GetPipelinesStatistics) - - //telegram handlers - app.Get("/telegram/pool", s.GetPoolTgAccounts) - app.Post("/telegram/create", s.AddingTgAccount) - app.Delete("/telegram/:id", s.DeleteTgAccountByID) - app.Post("/telegram/setCode", s.SettingTgCode) -} diff --git a/tests/db_test.go b/tests/db_test.go index b408990..a9fb3b4 100644 --- a/tests/db_test.go +++ b/tests/db_test.go @@ -9,7 +9,7 @@ package tests // "penahub.gitlab.yandexcloud.net/backend/quiz/common.git/model" // "penahub.gitlab.yandexcloud.net/backend/quiz/common.git/repository/quiz" // "penahub.gitlab.yandexcloud.net/backend/quiz/common.git/repository/result" -// "penahub.gitlab.yandexcloud.net/backend/quiz/core.git/clients/auth" +// "gitea.pena/SQuiz/core.git/clients/auth" // // //"database/sql" // "fmt" diff --git a/tests/mailNotify_test.go b/tests/mailNotify_test.go index 2c76b14..4a7466e 100644 --- a/tests/mailNotify_test.go +++ b/tests/mailNotify_test.go @@ -2,11 +2,11 @@ package tests import ( "context" + "gitea.pena/SQuiz/core/internal/brokers" + "gitea.pena/SQuiz/core/internal/initialize" "github.com/pioz/faker" "go.uber.org/zap" "log" - "penahub.gitlab.yandexcloud.net/backend/quiz/core/initialize" - "penahub.gitlab.yandexcloud.net/backend/quiz/core/internal/brokers" "testing" "time" ) diff --git a/tests/publish_test.go b/tests/publish_test.go index dbbe308..87aa333 100644 --- a/tests/publish_test.go +++ b/tests/publish_test.go @@ -1,10 +1,10 @@ package tests import ( + "gitea.pena/PenaSide/common/privilege" + "gitea.pena/SQuiz/common/model" "github.com/gofiber/fiber/v2" "github.com/stretchr/testify/assert" - "penahub.gitlab.yandexcloud.net/backend/penahub_common/privilege" - "penahub.gitlab.yandexcloud.net/backend/quiz/common.git/model" "testing" ) diff --git a/tests/smtp_test.go b/tests/smtp_test.go index 1df738d..908b01b 100644 --- a/tests/smtp_test.go +++ b/tests/smtp_test.go @@ -2,12 +2,11 @@ package tests import ( _ "embed" + "gitea.pena/SQuiz/common/clients" + "gitea.pena/SQuiz/common/model" "github.com/gofiber/fiber/v2" "github.com/pioz/faker" "github.com/stretchr/testify/assert" - "penahub.gitlab.yandexcloud.net/backend/quiz/common.git/model" - "penahub.gitlab.yandexcloud.net/backend/quiz/worker.git/answerwc" - "penahub.gitlab.yandexcloud.net/backend/quiz/worker.git/clients/mailclient" "testing" "time" ) @@ -19,16 +18,16 @@ var toClientTemplate string var reminderTemplate string func TestProcessMessageToSMTP(t *testing.T) { - clientDeps := mailclient.ClientDeps{ - Host: "connect.mailclient.bz", - Port: "587", - Sender: "skeris@mailing.pena.digital", - Auth: &mailclient.PlainAuth{Username: "kotilion.95@gmail.com", Password: "vWwbCSg4bf0p"}, + clientDeps := clients.Deps{ + SmtpHost: "connect.mailclient.bz", + SmtpPort: "587", + SmtpSender: "skeris@mailing.pena.digital", ApiKey: "P0YsjUB137upXrr1NiJefHmXVKW1hmBWlpev", FiberClient: &fiber.Client{}, + SmtpApiUrl: "", } - client := mailclient.NewClient(clientDeps) + client := clients.NewSmtpClient(clientDeps) recipient := "mullinp@internet.ru" subject := "Test"