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) } }