1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- package main
- import (
- "fmt"
- "log"
- "net/http"
- "os"
- "time"
- "github.com/gorilla/handlers"
- "github.com/jinzhu/gorm"
- "github.com/robfig/cron"
- "gogs.carducci-dante.gov.it/karmen/core/config"
- "gogs.carducci-dante.gov.it/karmen/core/cron/sync"
- karmen_handlers "gogs.carducci-dante.gov.it/karmen/core/handlers"
- "gogs.carducci-dante.gov.it/karmen/core/orm"
- )
- const (
- MaxNumRetries = 20
- RetryTimeInterval = 5
- )
- func main() {
- var (
- db *gorm.DB
- err error
- )
- log.Println("Loading config file...")
- err = config.ReadFile("config/config.yaml", config.Config)
- if err != nil {
- panic(err)
- }
- log.Println(config.Config)
- log.Println("Starting karmen and waiting for the DB...")
- count := MaxNumRetries
- wait := true
- for wait && count > 0 {
- db, err = orm.New(fmt.Sprintf("%s?%s", config.Config.Orm.Connection, config.Config.Orm.Options))
- if err != nil {
- count--
- log.Println(err)
- log.Printf("Remaining retries: %d", count)
- time.Sleep(time.Second * RetryTimeInterval)
- continue
- }
- wait = false
- }
- orm.Use(db)
- if config.Config.Orm.AutoMigrate {
- log.Print("Automigrating...")
- orm.AutoMigrate()
- }
- log.Println("Starting cron jobs...")
- c := cron.New()
- syncJob := sync.NewSyncJob(config.Config)
- c.AddJob("@every 1m", syncJob)
- c.Start()
- for _, entry := range c.Entries() {
- log.Println(entry)
- }
- log.Println("karmen is listening to port 3000...")
- if err := http.ListenAndServe(":3000", handlers.LoggingHandler(os.Stdout, karmen_handlers.Handlers())); err != nil {
- panic(err)
- }
- }
|