package main import ( "context" "flag" "fmt" "log" "net/http" "github.com/prometheus/client_golang/prometheus/promhttp" "github.com/redis/go-redis/v9" "sunshine.industries/some-automoderation/rooms" "sunshine.industries/some-automoderation/routes" "sunshine.industries/some-automoderation/sessions" ) var ctx = context.Background() func main() { var port int flag.IntVar(&port, "port", 8080, "Port on which the server should start") var metricsPort int flag.IntVar(&metricsPort, "metricsPort", 8081, "Port on which the server expose metrics") var redisPort int flag.IntVar(&redisPort, "redisPort", 7777, "Port on which server should connect to redis db") flag.Parse() promHandler := promhttp.Handler() promMux := http.NewServeMux() promMux.Handle("/metrics", promHandler) go func() { log.Fatal(http.ListenAndServe(fmt.Sprintf(":%d", metricsPort), promMux)) }() rdb := redis.NewClient(&redis.Options{ Addr: fmt.Sprintf("localhost:%d", redisPort), Password: "", DB: 0, }) roomsM := rooms.RedisRM { Rdb: rdb, } sessions := sessions.RedisSM{ Rdb: rdb, } log.Printf("Server will start on port: %d; /metrics on %d; listening to redis on: %d\n", port, metricsPort, redisPort) routes.RegisterRoutes(sessions, roomsM) log.Fatal(http.ListenAndServe(fmt.Sprintf(":%d", port), nil)) }