optimize cfg and applied renamer
This commit is contained in:
parent
4bf92cd14a
commit
02cd7b279c
259
app/app.go
259
app/app.go
@ -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
|
|
||||||
}
|
|
@ -6,8 +6,8 @@ import (
|
|||||||
"log"
|
"log"
|
||||||
"os"
|
"os"
|
||||||
"os/signal"
|
"os/signal"
|
||||||
"penahub.gitlab.yandexcloud.net/backend/quiz/core/internal/app"
|
"gitea.pena/SQuiz/core/internal/app"
|
||||||
"penahub.gitlab.yandexcloud.net/backend/quiz/core/internal/initialize"
|
"gitea.pena/SQuiz/core/internal/initialize"
|
||||||
"syscall"
|
"syscall"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
39
go.mod
39
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 (
|
require (
|
||||||
github.com/go-redis/redis/v8 v8.11.5
|
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/golang-jwt/jwt/v5 v5.2.1
|
||||||
github.com/grpc-ecosystem/go-grpc-middleware v1.4.0
|
github.com/grpc-ecosystem/go-grpc-middleware v1.4.0
|
||||||
github.com/joho/godotenv v1.5.1
|
github.com/joho/godotenv v1.5.1
|
||||||
@ -14,18 +16,19 @@ require (
|
|||||||
github.com/skeris/appInit v1.0.2
|
github.com/skeris/appInit v1.0.2
|
||||||
github.com/stretchr/testify v1.9.0
|
github.com/stretchr/testify v1.9.0
|
||||||
github.com/themakers/hlog v0.0.0-20191205140925-235e0e4baddf
|
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
|
github.com/xuri/excelize/v2 v2.8.1
|
||||||
go.uber.org/zap v1.27.0
|
go.uber.org/zap v1.27.0
|
||||||
google.golang.org/grpc v1.66.0
|
google.golang.org/grpc v1.66.0
|
||||||
google.golang.org/protobuf v1.34.2
|
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 (
|
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/ClickHouse/clickhouse-go v1.5.4 // indirect
|
||||||
github.com/andybalholm/brotli v1.1.0 // indirect
|
github.com/andybalholm/brotli v1.1.0 // indirect
|
||||||
github.com/caarlos0/env/v8 v8.0.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/davecgh/go-spew v1.1.1 // indirect
|
||||||
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect
|
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect
|
||||||
github.com/dustin/go-humanize v1.0.1 // 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/golang/protobuf v1.5.4 // indirect
|
||||||
github.com/google/uuid v1.6.0 // indirect
|
github.com/google/uuid v1.6.0 // indirect
|
||||||
github.com/klauspost/compress v1.17.8 // indirect
|
github.com/klauspost/compress v1.17.11 // indirect
|
||||||
github.com/klauspost/cpuid/v2 v2.2.7 // indirect
|
github.com/klauspost/cpuid/v2 v2.2.8 // indirect
|
||||||
github.com/kr/pretty v0.3.1 // indirect
|
github.com/kr/pretty v0.3.1 // indirect
|
||||||
github.com/mattn/go-colorable v0.1.13 // indirect
|
github.com/mattn/go-colorable v0.1.13 // indirect
|
||||||
github.com/mattn/go-isatty v0.0.20 // indirect
|
github.com/mattn/go-isatty v0.0.20 // indirect
|
||||||
github.com/mattn/go-runewidth v0.0.15 // indirect
|
github.com/mattn/go-runewidth v0.0.15 // indirect
|
||||||
github.com/minio/md5-simd v1.1.2 // 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/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 // indirect
|
||||||
github.com/pierrec/lz4/v4 v4.1.21 // 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/pmezard/go-difflib v1.0.0 // indirect
|
||||||
github.com/richardlehane/mscfb v1.0.4 // indirect
|
github.com/richardlehane/mscfb v1.0.4 // indirect
|
||||||
github.com/richardlehane/msoleps v1.0.3 // indirect
|
github.com/richardlehane/msoleps v1.0.3 // indirect
|
||||||
github.com/rivo/uniseg v0.4.7 // indirect
|
github.com/rivo/uniseg v0.4.7 // indirect
|
||||||
github.com/tealeg/xlsx v1.0.5 // 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/bytebufferpool v1.0.0 // indirect
|
||||||
github.com/valyala/fasthttp v1.53.0 // indirect
|
github.com/valyala/fasthttp v1.53.0 // indirect
|
||||||
github.com/valyala/tcplisten v1.0.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
|
github.com/xuri/nfp v0.0.0-20240318013403-ab9948c2c4a7 // indirect
|
||||||
go.etcd.io/bbolt v1.3.11 // indirect
|
go.etcd.io/bbolt v1.3.11 // indirect
|
||||||
go.uber.org/multierr v1.11.0 // indirect
|
go.uber.org/multierr v1.11.0 // indirect
|
||||||
golang.org/x/crypto v0.27.0 // indirect
|
golang.org/x/crypto v0.28.0 // indirect
|
||||||
golang.org/x/net v0.29.0 // indirect
|
golang.org/x/net v0.30.0 // indirect
|
||||||
golang.org/x/sys v0.25.0 // indirect
|
golang.org/x/sys v0.26.0 // indirect
|
||||||
golang.org/x/text v0.18.0 // indirect
|
golang.org/x/text v0.19.0 // indirect
|
||||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 // 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/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect
|
||||||
gopkg.in/ini.v1 v1.67.0 // 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
|
gopkg.in/yaml.v3 v3.0.1 // indirect
|
||||||
)
|
)
|
||||||
|
29
go.sum
29
go.sum
@ -1,4 +1,16 @@
|
|||||||
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
|
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/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 h1:cKjXeYLNWVJIx2J1K6H2CqyRmfwVJVY1OV1coaaFcI0=
|
||||||
github.com/ClickHouse/clickhouse-go v1.5.4/go.mod h1:EaI/sW7Azgz9UATzd5ZdZHRUhHgv5+JMS9NSr2smCJI=
|
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/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 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU=
|
||||||
github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
|
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 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.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 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
|
||||||
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
|
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
|
||||||
github.com/golang-jwt/jwt/v5 v5.2.1 h1:OuVbFODueb089Lh128TAcimifWaLhJwVflnrgM17wHk=
|
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/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 h1:YcnTYrq7MikUT7k0Yb5eceMmALQPYBW/Xltxn0NAMnU=
|
||||||
github.com/klauspost/compress v1.17.8/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw=
|
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.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 h1:ZWSB3igEs+d0qvnxR/ZBzXVmxkgt8DdzP6m9pfuVLDM=
|
||||||
github.com/klauspost/cpuid/v2 v2.2.7/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws=
|
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/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.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
|
||||||
github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
|
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/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 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.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 h1:RWengNIwukTxcDr9M+97sNutRR1RKhG96O6jWumTTnw=
|
||||||
github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8=
|
github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8=
|
||||||
github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE=
|
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.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
|
||||||
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
|
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.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.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.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||||
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
|
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/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 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.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 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.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 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
|
||||||
github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
|
github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
|
||||||
github.com/valyala/fasthttp v1.53.0 h1:lW/+SUkOxCx2vlIu0iaImv4JLrVRnbbkpCoaawvA4zc=
|
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.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 h1:GXm2NjJrPaiv/h1tb2UH8QfgC/hOf/+z0p6PT8o1w7A=
|
||||||
golang.org/x/crypto v0.27.0/go.mod h1:1Xngt8kV6Dvbssa53Ziq6Eqn0HqbZi5Z6R0ZpwQzt70=
|
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/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 h1:tNgSxAFe3jC4uYqvZdTr84SZoM1KfwdC9SKIFrLjFn4=
|
||||||
golang.org/x/image v0.14.0/go.mod h1:HUYqC05R2ZcZ3ejNQsIHQDQiwWM4JBqmm6MKANTp4LE=
|
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.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 h1:5ORfpBpCs4HzDYoodCDBbwHzdR5UrLBZ3sOnUJmFoHo=
|
||||||
golang.org/x/net v0.29.0/go.mod h1:gLkgy8jTGERgjzMic6DS9+SP0ajcu6Xu3Orq/SpETg0=
|
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/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-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/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.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 h1:r+8e+loiHxRqhXVl6ML1nO3l1+oFoWbnlu2Ehimmi34=
|
||||||
golang.org/x/sys v0.25.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
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.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
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 h1:XvMDiNzPAl0jr17s6W9lcaIhGUfUORdGCNsuLmPG224=
|
||||||
golang.org/x/text v0.18.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY=
|
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-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-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||||
golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
|
golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
|
||||||
|
@ -3,22 +3,22 @@ package app
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"errors"
|
"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"
|
||||||
"github.com/gofiber/fiber/v2/log"
|
"github.com/gofiber/fiber/v2/log"
|
||||||
"github.com/themakers/hlog"
|
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
"go.uber.org/zap/zapcore"
|
"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"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -75,7 +75,7 @@ func Run(ctx context.Context, cfg initialize.Config, build Build) error {
|
|||||||
return zapcore.NewTee(core, clickHouseLogger)
|
return zapcore.NewTee(core, clickHouseLogger)
|
||||||
}))
|
}))
|
||||||
|
|
||||||
loggerHlog := hlog.New(loggerForHlog).Module(cfg.ModuleLogger)
|
loggerHlog := hlog.New(loggerForHlog).Module(initialize.ModuleLogger)
|
||||||
loggerHlog.With(models.AllFields{})
|
loggerHlog.With(models.AllFields{})
|
||||||
loggerHlog.Emit(InfoSvcStarted{})
|
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{
|
kafkaClient, err := initialize.KafkaInit(ctx, initialize.KafkaDeps{
|
||||||
KafkaGroup: cfg.KafkaGroup,
|
KafkaGroup: cfg.KafkaGroup,
|
||||||
KafkaBrokers: cfg.KafkaBrokers,
|
KafkaBrokers: cfg.KafkaBrokers,
|
||||||
KafkaTopic: cfg.KafkaTopic,
|
KafkaTopic: cfg.KafkaTopicNotifyer,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
zapLogger.Error("Error initializing kafka", zap.Error(err))
|
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{
|
go tools.PublishPrivilege(privilege.NewPrivilege(privilege.Client{
|
||||||
URL: cfg.HubAdminUrl,
|
URL: cfg.HubadminMicroserviceURL,
|
||||||
ServiceName: cfg.ServiceName,
|
ServiceName: cfg.ServiceName,
|
||||||
Privileges: model.Privileges,
|
Privileges: model.Privileges,
|
||||||
}, &fiber.Client{}), 10, 5*time.Minute)
|
}, &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{
|
tgWC := workers.NewTgListenerWC(workers.Deps{
|
||||||
BotID: int64(6712573453), // todo убрать
|
BotID: int64(6712573453), // todo убрать
|
||||||
Redis: redisClient,
|
Redis: redisClient,
|
||||||
Dal: dalS.PgDAL,
|
Dal: dalS.PgDAL,
|
||||||
TgClient: clients.TgClient,
|
//TgClient: clients.TgClient,
|
||||||
})
|
})
|
||||||
|
|
||||||
go tgWC.Start(ctx)
|
go tgWC.Start(ctx)
|
||||||
@ -152,16 +152,13 @@ func Run(ctx context.Context, cfg initialize.Config, build Build) error {
|
|||||||
})
|
})
|
||||||
|
|
||||||
go func() {
|
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))
|
zapLogger.Error("HTTP server startup error", zap.Error(err))
|
||||||
cancel()
|
cancel()
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
go grpc.Run(server.DepsGrpcRun{
|
go grpc.Run(cfg.GrpcURL)
|
||||||
Host: cfg.GrpcHost,
|
|
||||||
Port: cfg.GrpcPort,
|
|
||||||
})
|
|
||||||
|
|
||||||
srv.ListRoutes()
|
srv.ListRoutes()
|
||||||
|
|
||||||
|
@ -5,16 +5,16 @@ import (
|
|||||||
"encoding/json"
|
"encoding/json"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"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/go-redis/redis/v8"
|
||||||
"github.com/gofiber/fiber/v2"
|
"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"
|
"strconv"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
@ -1,13 +1,13 @@
|
|||||||
package question
|
package question
|
||||||
|
|
||||||
import (
|
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/gofiber/fiber/v2"
|
||||||
"github.com/lib/pq"
|
"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"
|
"unicode/utf8"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -2,13 +2,13 @@ package quiz
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"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"
|
"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"
|
"time"
|
||||||
"unicode/utf8"
|
"unicode/utf8"
|
||||||
)
|
)
|
||||||
|
@ -2,12 +2,12 @@ package result
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"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"
|
"github.com/gofiber/fiber/v2"
|
||||||
"penahub.gitlab.yandexcloud.net/backend/quiz/common.git/dal"
|
"gitea.pena/SQuiz/core/internal/tools"
|
||||||
"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"
|
|
||||||
"strconv"
|
"strconv"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
package statistic
|
package statistic
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"gitea.pena/SQuiz/common/dal"
|
||||||
|
"gitea.pena/SQuiz/common/repository/statistics"
|
||||||
"github.com/gofiber/fiber/v2"
|
"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"
|
"strconv"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -2,31 +2,33 @@ package telegram
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
|
"gitea.pena/SQuiz/common/dal"
|
||||||
|
"gitea.pena/SQuiz/common/pj_errors"
|
||||||
|
|
||||||
//"fmt"
|
//"fmt"
|
||||||
"github.com/gofiber/fiber/v2"
|
"github.com/gofiber/fiber/v2"
|
||||||
// "github.com/rs/xid"
|
// "github.com/rs/xid"
|
||||||
//"path/filepath"
|
//"path/filepath"
|
||||||
// "penahub.gitlab.yandexcloud.net/backend/quiz/common.git/model"
|
// "penahub.gitlab.yandexcloud.net/backend/quiz/common.git/model"
|
||||||
"penahub.gitlab.yandexcloud.net/backend/quiz/common.git/pj_errors"
|
// "gitea.pena/SQuiz/core/clients/telegram"
|
||||||
// "penahub.gitlab.yandexcloud.net/backend/quiz/core/clients/telegram"
|
|
||||||
// "penahub.gitlab.yandexcloud.net/backend/tdlib/client"
|
// "penahub.gitlab.yandexcloud.net/backend/tdlib/client"
|
||||||
"strconv"
|
"strconv"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Deps struct {
|
type Deps struct {
|
||||||
DAL *dal.DAL
|
DAL *dal.DAL
|
||||||
TelegramClient *telegram.TelegramClient
|
//TelegramClient *telegram.TelegramClient
|
||||||
}
|
}
|
||||||
|
|
||||||
type Telegram struct {
|
type Telegram struct {
|
||||||
dal *dal.DAL
|
dal *dal.DAL
|
||||||
telegramClient *telegram.TelegramClient
|
//telegramClient *telegram.TelegramClient
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewTelegramController(deps Deps) *Telegram {
|
func NewTelegramController(deps Deps) *Telegram {
|
||||||
return &Telegram{
|
return &Telegram{
|
||||||
dal: deps.DAL,
|
dal: deps.DAL,
|
||||||
telegramClient: deps.TelegramClient,
|
//telegramClient: deps.TelegramClient,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -48,7 +50,7 @@ func (r *Telegram) GetPoolTgAccounts(ctx *fiber.Ctx) error {
|
|||||||
return ctx.Status(fiber.StatusOK).JSON(allAccounts)
|
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
|
// var req telegram.AuthTgUserReq
|
||||||
// if err := ctx.BodyParser(&req); err != nil {
|
// if err := ctx.BodyParser(&req); err != nil {
|
||||||
// return ctx.Status(fiber.StatusBadRequest).SendString("Invalid request data")
|
// return ctx.Status(fiber.StatusBadRequest).SendString("Invalid request data")
|
||||||
|
@ -2,8 +2,8 @@ package rpc_controllers
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"penahub.gitlab.yandexcloud.net/backend/quiz/common.git/dal"
|
"gitea.pena/SQuiz/common/dal"
|
||||||
notifyer2 "penahub.gitlab.yandexcloud.net/backend/quiz/core/internal/proto/notifyer"
|
notifyer2 "gitea.pena/SQuiz/core/internal/proto/notifyer"
|
||||||
)
|
)
|
||||||
|
|
||||||
type MailNotify struct {
|
type MailNotify struct {
|
||||||
|
@ -2,24 +2,23 @@ package initialize
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"penahub.gitlab.yandexcloud.net/backend/quiz/common.git/dal"
|
"gitea.pena/SQuiz/common/dal"
|
||||||
"penahub.gitlab.yandexcloud.net/backend/quiz/core/internal/clients/auth"
|
"gitea.pena/SQuiz/core/internal/clients/auth"
|
||||||
"penahub.gitlab.yandexcloud.net/backend/quiz/core/internal/clients/telegram"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type Clients struct {
|
type Clients struct {
|
||||||
AuthClient *auth.AuthClient
|
AuthClient *auth.AuthClient
|
||||||
TgClient *telegram.TelegramClient
|
//TgClient *telegram.TelegramClient
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewClients(ctx context.Context, cfg Config, pgDAL *dal.DAL) (*Clients, error) {
|
func NewClients(ctx context.Context, cfg Config, pgDAL *dal.DAL) (*Clients, error) {
|
||||||
tgClient, err := telegram.NewTelegramClient(ctx, pgDAL)
|
//tgClient, err := telegram.NewTelegramClient(ctx, pgDAL)
|
||||||
if err != nil {
|
//if err != nil {
|
||||||
return nil, err
|
// return nil, err
|
||||||
}
|
//}
|
||||||
|
|
||||||
return &Clients{
|
return &Clients{
|
||||||
TgClient: tgClient,
|
//TgClient: tgClient,
|
||||||
AuthClient: auth.NewAuthClient(cfg.AuthServiceURL),
|
AuthClient: auth.NewAuthClient(cfg.AuthMicroserviceURL),
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
@ -7,28 +7,26 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type Config struct {
|
type Config struct {
|
||||||
LoggerProdMode bool `env:"IS_PROD_LOG" envDefault:"false"`
|
LoggerProdMode bool `env:"IS_PROD_LOG" envDefault:"false"`
|
||||||
IsProd bool `env:"IS_PROD" envDefault:"false"`
|
IsProd bool `env:"IS_PROD" envDefault:"false"`
|
||||||
NumberPort string `env:"PORT" envDefault:"1488"`
|
ClientHttpURL string `env:"CLIENT_HTTP_URL" envDefault:"0.0.0.0:1488"`
|
||||||
HttpHost string `env:"HTTP_HOST" envDefault:"0.0.0.0"`
|
GrpcURL string `env:"GRPC_URL" envDefault:"localhost:9000"`
|
||||||
CrtFile string `env:"CRT" envDefault:"server.crt"`
|
PostgresURL string `env:"POSTGRES_URL" envDefault:"host=localhost port=35432 user=squiz password=Redalert2 dbname=squiz sslmode=disable"`
|
||||||
KeyFile string `env:"KEY" envDefault:"server.key"`
|
ClickhouseURL string `env:"CLICKHOUSE_URL" envDefault:"tcp://10.8.0.15:9000/default?sslmode=disable"`
|
||||||
PostgresCredentials string `env:"PG_CRED" envDefault:"host=localhost port=35432 user=squiz password=Redalert2 dbname=squiz sslmode=disable"`
|
HubadminMicroserviceURL string `env:"HUBADMIN_MICROSERVICE_URL" envDefault:"http://localhost:8001/"`
|
||||||
HubAdminUrl string `env:"HUB_ADMIN_URL" envDefault:"http://localhost:8001/"`
|
AuthMicroserviceURL string `env:"AUTH_MICROSERVICE_URL" envDefault:"http://localhost:8000/"`
|
||||||
ServiceName string `env:"SERVICE_NAME" envDefault:"squiz"`
|
KafkaBrokers string `env:"KAFKA_BROKERS" envDefault:"localhost:9092"`
|
||||||
AuthServiceURL string `env:"AUTH_URL" envDefault:"http://localhost:8000/"`
|
KafkaGroup string `env:"KAFKA_GROUP" envDefault:"mailnotifier"`
|
||||||
GrpcHost string `env:"GRPC_HOST" envDefault:"localhost"`
|
KafkaTopicNotifyer string `env:"KAFKA_TOPIC" envDefault:"test-topic"`
|
||||||
GrpcPort string `env:"GRPC_PORT" envDefault:"9000"`
|
TrashLogHost string `env:"TRASH_LOG_HOST" envDefault:"localhost:7113"`
|
||||||
KafkaBrokers string `env:"KAFKA_BROKERS" envDefault:"localhost:9092"`
|
S3Prefix string `env:"S3_PREFIX"`
|
||||||
KafkaTopic string `env:"KAFKA_TOPIC" envDefault:"test-topic"`
|
RedisHost string `env:"REDIS_HOST" envDefault:"localhost:6379"`
|
||||||
KafkaGroup string `env:"KAFKA_GROUP" envDefault:"mailnotifier"`
|
RedisPassword string `env:"REDIS_PASSWORD" envDefault:"admin"`
|
||||||
TrashLogHost string `env:"TRASH_LOG_HOST" envDefault:"localhost:7113"`
|
RedisDB uint64 `env:"REDIS_DB" envDefault:"2"`
|
||||||
ModuleLogger string `env:"MODULE_LOGGER" envDefault:"core-local"`
|
|
||||||
ClickHouseCred string `env:"CLICK_HOUSE_CRED" envDefault:"tcp://10.8.0.15:9000/default?sslmode=disable"`
|
CrtFile string `env:"CRT" envDefault:"server.crt"`
|
||||||
RedisHost string `env:"REDIS_HOST" envDefault:"localhost:6379"`
|
KeyFile string `env:"KEY" envDefault:"server.key"`
|
||||||
RedisPassword string `env:"REDIS_PASSWORD" envDefault:"admin"`
|
ServiceName string `env:"SERVICE_NAME" envDefault:"squiz"`
|
||||||
RedisDB uint64 `env:"REDIS_DB" envDefault:"2"`
|
|
||||||
S3Prefix string `env:"S3_PREFIX"`
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func LoadConfig() (*Config, error) {
|
func LoadConfig() (*Config, error) {
|
||||||
@ -41,3 +39,5 @@ func LoadConfig() (*Config, error) {
|
|||||||
}
|
}
|
||||||
return &config, nil
|
return &config, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const ModuleLogger = "core"
|
||||||
|
@ -2,14 +2,14 @@ package initialize
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/go-redis/redis/v8"
|
"github.com/go-redis/redis/v8"
|
||||||
"penahub.gitlab.yandexcloud.net/backend/quiz/core/internal/brokers"
|
"gitea.pena/SQuiz/core/internal/brokers"
|
||||||
"penahub.gitlab.yandexcloud.net/backend/quiz/core/internal/controllers/http_controllers/account"
|
"gitea.pena/SQuiz/core/internal/controllers/http_controllers/account"
|
||||||
"penahub.gitlab.yandexcloud.net/backend/quiz/core/internal/controllers/http_controllers/question"
|
"gitea.pena/SQuiz/core/internal/controllers/http_controllers/question"
|
||||||
"penahub.gitlab.yandexcloud.net/backend/quiz/core/internal/controllers/http_controllers/quiz"
|
"gitea.pena/SQuiz/core/internal/controllers/http_controllers/quiz"
|
||||||
"penahub.gitlab.yandexcloud.net/backend/quiz/core/internal/controllers/http_controllers/result"
|
"gitea.pena/SQuiz/core/internal/controllers/http_controllers/result"
|
||||||
"penahub.gitlab.yandexcloud.net/backend/quiz/core/internal/controllers/http_controllers/statistic"
|
"gitea.pena/SQuiz/core/internal/controllers/http_controllers/statistic"
|
||||||
"penahub.gitlab.yandexcloud.net/backend/quiz/core/internal/controllers/http_controllers/telegram"
|
"gitea.pena/SQuiz/core/internal/controllers/http_controllers/telegram"
|
||||||
"penahub.gitlab.yandexcloud.net/backend/quiz/core/internal/controllers/rpc_controllers"
|
"gitea.pena/SQuiz/core/internal/controllers/rpc_controllers"
|
||||||
)
|
)
|
||||||
|
|
||||||
type ControllerDeps struct {
|
type ControllerDeps struct {
|
||||||
@ -65,8 +65,8 @@ func NewControllers(deps ControllerDeps) *Controller {
|
|||||||
ChDAL: deps.DALs.ChDAL,
|
ChDAL: deps.DALs.ChDAL,
|
||||||
}),
|
}),
|
||||||
Telegram: telegram.NewTelegramController(telegram.Deps{
|
Telegram: telegram.NewTelegramController(telegram.Deps{
|
||||||
DAL: deps.DALs.PgDAL,
|
DAL: deps.DALs.PgDAL,
|
||||||
TelegramClient: deps.Clients.TgClient,
|
//TelegramClient: deps.Clients.TgClient,
|
||||||
}),
|
}),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,7 @@ package initialize
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"penahub.gitlab.yandexcloud.net/backend/quiz/common.git/dal"
|
"gitea.pena/SQuiz/common/dal"
|
||||||
)
|
)
|
||||||
|
|
||||||
type DALs struct {
|
type DALs struct {
|
||||||
@ -11,12 +11,12 @@ type DALs struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func NewDALs(ctx context.Context, cfg Config) (*DALs, error) {
|
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 {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
chDal, err := dal.NewClickHouseDAL(ctx, cfg.ClickHouseCred)
|
chDal, err := dal.NewClickHouseDAL(ctx, cfg.ClickhouseURL)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -2,15 +2,14 @@ package server
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
|
||||||
grpc_middleware "github.com/grpc-ecosystem/go-grpc-middleware"
|
grpc_middleware "github.com/grpc-ecosystem/go-grpc-middleware"
|
||||||
grpc_zap "github.com/grpc-ecosystem/go-grpc-middleware/logging/zap"
|
grpc_zap "github.com/grpc-ecosystem/go-grpc-middleware/logging/zap"
|
||||||
grpc_recovery "github.com/grpc-ecosystem/go-grpc-middleware/recovery"
|
grpc_recovery "github.com/grpc-ecosystem/go-grpc-middleware/recovery"
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
"google.golang.org/grpc"
|
"google.golang.org/grpc"
|
||||||
"net"
|
"net"
|
||||||
"penahub.gitlab.yandexcloud.net/backend/quiz/core/internal/initialize"
|
"gitea.pena/SQuiz/core/internal/initialize"
|
||||||
"penahub.gitlab.yandexcloud.net/backend/quiz/core/internal/proto/notifyer"
|
"gitea.pena/SQuiz/core/internal/proto/notifyer"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -36,14 +35,7 @@ func NewGRPC(logger *zap.Logger) (*GRPC, error) {
|
|||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
type DepsGrpcRun struct {
|
func (g *GRPC) Run(connectionString string) {
|
||||||
Host string
|
|
||||||
Port string
|
|
||||||
}
|
|
||||||
|
|
||||||
func (g *GRPC) Run(config DepsGrpcRun) {
|
|
||||||
connectionString := fmt.Sprintf("%s:%s", config.Host, config.Port)
|
|
||||||
|
|
||||||
g.logger.Info("Starting GRPC Server", zap.String("host", connectionString))
|
g.logger.Info("Starting GRPC Server", zap.String("host", connectionString))
|
||||||
|
|
||||||
if err := g.listen(connectionString); err != nil && err != grpc.ErrServerStopped {
|
if err := g.listen(connectionString); err != nil && err != grpc.ErrServerStopped {
|
||||||
|
@ -3,11 +3,11 @@ package http
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"gitea.pena/PenaSide/common/log_mw"
|
||||||
|
"gitea.pena/PenaSide/hlog"
|
||||||
|
"gitea.pena/SQuiz/common/middleware"
|
||||||
"github.com/gofiber/fiber/v2"
|
"github.com/gofiber/fiber/v2"
|
||||||
"github.com/themakers/hlog"
|
|
||||||
"go.uber.org/zap"
|
"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 {
|
type ServerConfig struct {
|
||||||
|
@ -2,7 +2,7 @@ package tools
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"penahub.gitlab.yandexcloud.net/backend/penahub_common/privilege"
|
"gitea.pena/PenaSide/common/privilege"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -3,6 +3,7 @@ package tools
|
|||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"gitea.pena/SQuiz/common/model"
|
||||||
"github.com/xuri/excelize/v2"
|
"github.com/xuri/excelize/v2"
|
||||||
_ "image/gif"
|
_ "image/gif"
|
||||||
_ "image/jpeg"
|
_ "image/jpeg"
|
||||||
@ -12,7 +13,6 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
"net/url"
|
"net/url"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"penahub.gitlab.yandexcloud.net/backend/quiz/common.git/model"
|
|
||||||
"regexp"
|
"regexp"
|
||||||
"sort"
|
"sort"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
@ -2,36 +2,31 @@ package workers
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"encoding/json"
|
"gitea.pena/SQuiz/common/dal"
|
||||||
"fmt"
|
|
||||||
"github.com/go-redis/redis/v8"
|
"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"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Deps struct {
|
type Deps struct {
|
||||||
BotID int64
|
BotID int64
|
||||||
Redis *redis.Client
|
Redis *redis.Client
|
||||||
Dal *dal.DAL
|
Dal *dal.DAL
|
||||||
TgClient *telegram.TelegramClient
|
//TgClient *telegram.TelegramClient
|
||||||
}
|
}
|
||||||
|
|
||||||
type TgListenerWorker struct {
|
type TgListenerWorker struct {
|
||||||
botID int64
|
botID int64
|
||||||
redis *redis.Client
|
redis *redis.Client
|
||||||
dal *dal.DAL
|
dal *dal.DAL
|
||||||
tgClient *telegram.TelegramClient
|
//tgClient *telegram.TelegramClient
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewTgListenerWC(deps Deps) *TgListenerWorker {
|
func NewTgListenerWC(deps Deps) *TgListenerWorker {
|
||||||
return &TgListenerWorker{
|
return &TgListenerWorker{
|
||||||
botID: deps.BotID,
|
botID: deps.BotID,
|
||||||
redis: deps.Redis,
|
redis: deps.Redis,
|
||||||
dal: deps.Dal,
|
dal: deps.Dal,
|
||||||
tgClient: deps.TgClient,
|
//tgClient: deps.TgClient,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -50,63 +45,63 @@ func (wc *TgListenerWorker) Start(ctx context.Context) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (wc *TgListenerWorker) processTasks(ctx context.Context) {
|
func (wc *TgListenerWorker) processTasks(ctx context.Context) {
|
||||||
var cursor uint64
|
//var cursor uint64
|
||||||
for {
|
//for {
|
||||||
var keys []string
|
// var keys []string
|
||||||
var err error
|
// var err error
|
||||||
keys, cursor, err = wc.redis.Scan(ctx, cursor, "telegram_task:*", 0).Result()
|
// keys, cursor, err = wc.redis.Scan(ctx, cursor, "telegram_task:*", 0).Result()
|
||||||
if err != nil {
|
// if err != nil {
|
||||||
fmt.Println("Failed scan for telegram tasks:", err)
|
// fmt.Println("Failed scan for telegram tasks:", err)
|
||||||
break
|
// break
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
for _, key := range keys {
|
// for _, key := range keys {
|
||||||
func() {
|
// func() {
|
||||||
taskBytes, err := wc.redis.GetDel(ctx, key).Result()
|
// taskBytes, err := wc.redis.GetDel(ctx, key).Result()
|
||||||
if err == redis.Nil {
|
// if err == redis.Nil {
|
||||||
return
|
// return
|
||||||
} else if err != nil {
|
// } else if err != nil {
|
||||||
fmt.Println("Failed getdel telegram task:", err)
|
// fmt.Println("Failed getdel telegram task:", err)
|
||||||
return
|
// return
|
||||||
}
|
// }
|
||||||
// todo logging into tg with trashlog
|
// // todo logging into tg with trashlog
|
||||||
var aimErr error
|
// var aimErr error
|
||||||
defer func() {
|
// defer func() {
|
||||||
if r := recover(); r != nil || aimErr != nil {
|
// if r := recover(); r != nil || aimErr != nil {
|
||||||
fmt.Println("recovering from panic or error setting redis value:", r, aimErr)
|
// fmt.Println("recovering from panic or error setting redis value:", r, aimErr)
|
||||||
_ = wc.redis.Set(ctx, key, taskBytes, 0).Err()
|
// _ = wc.redis.Set(ctx, key, taskBytes, 0).Err()
|
||||||
}
|
// }
|
||||||
}()
|
// }()
|
||||||
|
//
|
||||||
var task model.TgRedisTask
|
// var task model.TgRedisTask
|
||||||
if err = json.Unmarshal([]byte(taskBytes), &task); err != nil {
|
// if err = json.Unmarshal([]byte(taskBytes), &task); err != nil {
|
||||||
fmt.Println("Failed unmarshal telegram task:", err)
|
// fmt.Println("Failed unmarshal telegram task:", err)
|
||||||
return
|
// return
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
var inviteLink string
|
// var inviteLink string
|
||||||
var chatID int64
|
// var chatID int64
|
||||||
inviteLink, chatID, aimErr = wc.tgClient.CreateChannel(task.Name, wc.botID)
|
// inviteLink, chatID, aimErr = wc.tgClient.CreateChannel(task.Name, wc.botID)
|
||||||
if aimErr != nil {
|
// if aimErr != nil {
|
||||||
fmt.Println("Failed create tg channel:", aimErr)
|
// fmt.Println("Failed create tg channel:", aimErr)
|
||||||
return
|
// return
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
_, aimErr = wc.dal.AccountRepo.PostLeadTarget(ctx, model.LeadTarget{
|
// _, aimErr = wc.dal.AccountRepo.PostLeadTarget(ctx, model.LeadTarget{
|
||||||
AccountID: task.AccountID,
|
// AccountID: task.AccountID,
|
||||||
Type: model.LeadTargetTg,
|
// Type: model.LeadTargetTg,
|
||||||
QuizID: task.QuizID,
|
// QuizID: task.QuizID,
|
||||||
Target: strconv.Itoa(int(chatID)),
|
// Target: strconv.Itoa(int(chatID)),
|
||||||
InviteLink: inviteLink,
|
// InviteLink: inviteLink,
|
||||||
})
|
// })
|
||||||
if aimErr != nil {
|
// if aimErr != nil {
|
||||||
fmt.Println("Failed create lead target in db:", aimErr)
|
// fmt.Println("Failed create lead target in db:", aimErr)
|
||||||
return
|
// return
|
||||||
}
|
// }
|
||||||
}()
|
// }()
|
||||||
}
|
// }
|
||||||
if cursor == 0 {
|
// if cursor == 0 {
|
||||||
break
|
// break
|
||||||
}
|
// }
|
||||||
}
|
//}
|
||||||
}
|
}
|
||||||
|
@ -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)
|
|
||||||
}
|
|
@ -9,7 +9,7 @@ package tests
|
|||||||
// "penahub.gitlab.yandexcloud.net/backend/quiz/common.git/model"
|
// "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/quiz"
|
||||||
// "penahub.gitlab.yandexcloud.net/backend/quiz/common.git/repository/result"
|
// "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"
|
// //"database/sql"
|
||||||
// "fmt"
|
// "fmt"
|
||||||
|
@ -2,11 +2,11 @@ package tests
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"gitea.pena/SQuiz/core/internal/brokers"
|
||||||
|
"gitea.pena/SQuiz/core/internal/initialize"
|
||||||
"github.com/pioz/faker"
|
"github.com/pioz/faker"
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
"log"
|
"log"
|
||||||
"penahub.gitlab.yandexcloud.net/backend/quiz/core/initialize"
|
|
||||||
"penahub.gitlab.yandexcloud.net/backend/quiz/core/internal/brokers"
|
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
package tests
|
package tests
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"gitea.pena/PenaSide/common/privilege"
|
||||||
|
"gitea.pena/SQuiz/common/model"
|
||||||
"github.com/gofiber/fiber/v2"
|
"github.com/gofiber/fiber/v2"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
"penahub.gitlab.yandexcloud.net/backend/penahub_common/privilege"
|
|
||||||
"penahub.gitlab.yandexcloud.net/backend/quiz/common.git/model"
|
|
||||||
"testing"
|
"testing"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -2,12 +2,11 @@ package tests
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
_ "embed"
|
_ "embed"
|
||||||
|
"gitea.pena/SQuiz/common/clients"
|
||||||
|
"gitea.pena/SQuiz/common/model"
|
||||||
"github.com/gofiber/fiber/v2"
|
"github.com/gofiber/fiber/v2"
|
||||||
"github.com/pioz/faker"
|
"github.com/pioz/faker"
|
||||||
"github.com/stretchr/testify/assert"
|
"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"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
@ -19,16 +18,16 @@ var toClientTemplate string
|
|||||||
var reminderTemplate string
|
var reminderTemplate string
|
||||||
|
|
||||||
func TestProcessMessageToSMTP(t *testing.T) {
|
func TestProcessMessageToSMTP(t *testing.T) {
|
||||||
clientDeps := mailclient.ClientDeps{
|
clientDeps := clients.Deps{
|
||||||
Host: "connect.mailclient.bz",
|
SmtpHost: "connect.mailclient.bz",
|
||||||
Port: "587",
|
SmtpPort: "587",
|
||||||
Sender: "skeris@mailing.pena.digital",
|
SmtpSender: "skeris@mailing.pena.digital",
|
||||||
Auth: &mailclient.PlainAuth{Username: "kotilion.95@gmail.com", Password: "vWwbCSg4bf0p"},
|
|
||||||
ApiKey: "P0YsjUB137upXrr1NiJefHmXVKW1hmBWlpev",
|
ApiKey: "P0YsjUB137upXrr1NiJefHmXVKW1hmBWlpev",
|
||||||
FiberClient: &fiber.Client{},
|
FiberClient: &fiber.Client{},
|
||||||
|
SmtpApiUrl: "",
|
||||||
}
|
}
|
||||||
|
|
||||||
client := mailclient.NewClient(clientDeps)
|
client := clients.NewSmtpClient(clientDeps)
|
||||||
|
|
||||||
recipient := "mullinp@internet.ru"
|
recipient := "mullinp@internet.ru"
|
||||||
subject := "Test"
|
subject := "Test"
|
||||||
|
Loading…
Reference in New Issue
Block a user