mtg-price-bot/cmd/vk/main.go
Artyom Belousov a33680d527 Redis -> YDB
2023-05-27 22:10:31 +03:00

73 lines
1.6 KiB
Go

package main
import (
"context"
"fmt"
"log"
"math/rand"
"os"
"strconv"
"time"
"gitlab.com/flygrounder/go-mtg-vk/internal/caching"
"gitlab.com/flygrounder/go-mtg-vk/internal/cardsinfo"
"gitlab.com/flygrounder/go-mtg-vk/internal/scenario"
"github.com/gin-gonic/gin"
environ "github.com/ydb-platform/ydb-go-sdk-auth-environ"
"github.com/ydb-platform/ydb-go-sdk/v3"
"gitlab.com/flygrounder/go-mtg-vk/internal/vk"
)
func main() {
rand.Seed(time.Now().UTC().UnixNano())
r := gin.Default()
ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
defer cancel()
dsn, exists := os.LookupEnv("YDB_CONNECTION_STRING")
if !exists {
panic("YDB_CONNECTION_STRING environment variable not defined")
}
db, err := ydb.Open(ctx,
dsn,
environ.WithEnvironCredentials(ctx),
)
if err != nil {
panic(fmt.Errorf("connect error: %w", err))
}
defer func() { _ = db.Close(ctx) }()
cache := &caching.CacheClient{
Storage: db.Table(),
Expiration: 12 * time.Hour,
Prefix: db.Name(),
}
err = cache.Init(context.Background())
if err != nil {
panic(fmt.Errorf("init error: %w", err))
}
groupId, _ := strconv.ParseInt(os.Getenv("VK_GROUP_ID"), 10, 64)
logger := log.New(os.Stdout, "", 0)
handler := vk.Handler{
Scenario: &scenario.Scenario{
Sender: &vk.ApiSender{
Token: os.Getenv("VK_TOKEN"),
Logger: logger,
},
Logger: logger,
InfoFetcher: &cardsinfo.Fetcher{},
Cache: cache,
},
SecretKey: os.Getenv("VK_SECRET_KEY"),
GroupId: groupId,
ConfirmationString: os.Getenv("VK_CONFIRMATION_STRING"),
}
r.POST("callback/message", handler.HandleMessage)
_ = r.Run(":8000")
}