69 lines
1.9 KiB
Go
69 lines
1.9 KiB
Go
package app
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"os"
|
|
"steam_analyzer/internal/config"
|
|
"steam_analyzer/internal/handler"
|
|
"steam_analyzer/internal/repository"
|
|
"steam_analyzer/internal/service"
|
|
"steam_analyzer/internal/steamreq"
|
|
"steam_analyzer/internal/utils"
|
|
"steam_analyzer/internal/utils/slogutils"
|
|
"steam_analyzer/pkg/logger"
|
|
"steam_analyzer/pkg/postgresql"
|
|
"steam_analyzer/pkg/server"
|
|
|
|
"github.com/gorilla/mux"
|
|
)
|
|
|
|
var steamItemURL = `https://steamcommunity.com/market/search/render/`
|
|
|
|
func Run() {
|
|
cfg := config.MustLoadYaml("./config/config.dev.yaml")
|
|
logger := logger.New(cfg.Enviroment)
|
|
|
|
// db := repository.ConnectOrCreateDatabase()
|
|
// repo := repository.NewSQLLiteDatabase(db)
|
|
ctx := context.Background()
|
|
|
|
pool, err := postgresql.NewPGXPool(ctx, postgresql.CreateDBConnectionString(cfg.Database))
|
|
if err != nil {
|
|
logger.Error("Error while creating pool", slogutils.Error(err))
|
|
os.Exit(1)
|
|
}
|
|
repo := repository.NewPostgresDB(pool)
|
|
err = repo.InitDatabaseTables(ctx)
|
|
if err != nil {
|
|
logger.Error("Error while init tables", slogutils.Error(err))
|
|
os.Exit(1)
|
|
}
|
|
|
|
itemService := service.NewItemService(logger, repo)
|
|
requester := steamreq.NewRequester(steamItemURL, cfg.SteamRequester.RequestPerTime, cfg.SteamRequester.CountPerTime)
|
|
|
|
steamWorker := steamreq.NewSteamWorker(logger, requester, itemService, cfg.SteamWorker.RequestPerTime)
|
|
steamItems := []steamreq.SteamItems{
|
|
{
|
|
Query: "case",
|
|
ItemType: "case",
|
|
},
|
|
}
|
|
go steamWorker.Start(ctx, steamItems)
|
|
|
|
router := mux.NewRouter()
|
|
steamHandler := handler.NewSteamHandler(itemService)
|
|
steamHandler.RegisterRoutes(router, "/steam")
|
|
|
|
server := server.New(cfg.Server, logger, router)
|
|
server.Run()
|
|
}
|
|
|
|
func PrintItems(items []steamreq.SteamMarketItem) {
|
|
for _, item := range items {
|
|
item.SellPrice = float64(item.SellPrice) / 100.0 * utils.CURRENCY_RUB
|
|
fmt.Println(item.Name, item.HashName, item.SellPrice, item.SellListings, item.AssetDescription.Classid)
|
|
}
|
|
}
|