package main import ( "fmt" "kng_feed_api/controller" cronjob "kng_feed_api/cron-job" "kng_feed_api/database" "kng_feed_api/model" "log" "os" "github.com/gin-gonic/gin" "github.com/joho/godotenv" "github.com/robfig/cron" ) func main() { loadEnv() loadDatabase() startCronJob() serveApplication() } func startCronJob() { cron := cron.New() fmt.Println(os.Getenv("CRON_XML_FEED")) fmt.Println(os.Getenv("CRON_CSV_DELTA")) cron.AddFunc(os.Getenv("CRON_XML_FEED"), cronjob.CreateXMLFeed) cron.AddFunc(os.Getenv("CRON_CSV_DELTA"), cronjob.CreateCSVDeltaFeed) cron.Start() } func loadDatabase() { database.Connect() database.Database.AutoMigrate(&model.User{}) database.Database.AutoMigrate(&model.Product{}) database.Database.AutoMigrate(&model.Category{}) database.Database.AutoMigrate(&model.Availability{}) } func loadEnv() { err := godotenv.Load(".env.local") if err != nil { log.Fatal("Error loading .env file") } } func serveApplication() { router := gin.Default() router.StaticFile("/feed.xml", "./feed.xml") //filepath.Join(helper.RootDir())) router.StaticFile("/delta.csv", "./delta.csv") //filepath.Join(helper.RootDir())) publicRoutes := router.Group("/auth") publicRoutes.POST("/register", controller.Register) publicRoutes.POST("/login", controller.Login) feedRoutes := router.Group("/feed") feedRoutes.POST("/products", controller.LoadProductsInfo) feedRoutes.POST("/categories", controller.CreateUpdateCategories) feedRoutes.GET("/", controller.SendXmlFeedToClient) deltaRoutes := router.Group("/delta") deltaRoutes.POST("/availability", controller.LoadAvailabilityInfo) deltaRoutes.GET("/availability", controller.SendCsvDeltaToClient) serviceRoutes := router.Group("/service") serviceRoutes.GET("/working", controller.HealthCheck) router.Run(":3005") fmt.Println("Server running on port 3005") }