package main import ( "CatsOfMastodonBotGo/internal/config" "CatsOfMastodonBotGo/internal/database" "CatsOfMastodonBotGo/internal/domain" "CatsOfMastodonBotGo/internal/server" "CatsOfMastodonBotGo/internal/services" "context" "log" "time" ) func main() { // Setup config config.Init() var config = config.Load() // Initialize database database.Init() services.InitPostService() ticker := time.NewTicker(10 * time.Minute) runFetchPosts := func() { // Get posts ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) defer cancel() var posts []domain.Post = nil err, posts := services.PostServiceInstance.GetPostsFromApi(ctx, config.Tag, config.Instance) if err != nil { log.Println(err) return } var existingPostIds = services.PostServiceInstance.GetExistingPostIds() var existingAccountIds = services.PostServiceInstance.GetExistingAccountIds() var newPosts = services.PostServiceInstance.GetNewPosts(existingPostIds, posts) var newAccounts = services.PostServiceInstance.GetNewAccounts(existingAccountIds, newPosts) // Save to database log.Printf("Fetched %d posts; %d existing posts; %d new posts and %d new accounts\n", len(posts), len(existingPostIds), len(newPosts), len(newAccounts)) // Additional logging if newAccounts != nil { log.Printf("Inserted %d accounts\n", services.PostServiceInstance.InsertNewAccounts(newAccounts)) } if newPosts != nil { log.Printf("Inserted %d posts\n", services.PostServiceInstance.InsertNewPosts(newPosts)) } } go func() { for range ticker.C { runFetchPosts() } }() // Run initial fetch on startup go func() { runFetchPosts() }() // https://seefnasrul.medium.com/create-your-first-go-rest-api-with-jwt-authentication-in-gin-framework-dbe5bda72817 r := server.SetupRouter() err := r.Run(":8080") if err != nil { log.Fatal(err) } }