2020-06-01 19:05:33 +00:00
|
|
|
package main
|
|
|
|
|
|
|
|
import (
|
|
|
|
"log"
|
|
|
|
"os"
|
|
|
|
"os/signal"
|
2020-07-27 15:16:13 +00:00
|
|
|
"runtime"
|
2020-06-01 19:05:33 +00:00
|
|
|
"syscall"
|
2020-06-02 06:02:04 +00:00
|
|
|
|
2020-06-02 06:26:51 +00:00
|
|
|
"github.com/tribalwarshelp/shared/mode"
|
|
|
|
|
2020-07-06 09:53:54 +00:00
|
|
|
_cron "github.com/tribalwarshelp/cron/cron"
|
2020-06-01 19:05:33 +00:00
|
|
|
|
|
|
|
"github.com/go-pg/pg/v10"
|
|
|
|
"github.com/joho/godotenv"
|
|
|
|
"github.com/robfig/cron/v3"
|
|
|
|
)
|
|
|
|
|
|
|
|
func init() {
|
|
|
|
os.Setenv("TZ", "UTC")
|
|
|
|
|
|
|
|
if mode.Get() == mode.DevelopmentMode {
|
|
|
|
godotenv.Load(".env.development")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func main() {
|
|
|
|
db := pg.Connect(&pg.Options{
|
2020-06-02 15:47:36 +00:00
|
|
|
User: os.Getenv("DB_USER"),
|
|
|
|
Password: os.Getenv("DB_PASSWORD"),
|
|
|
|
Database: os.Getenv("DB_NAME"),
|
|
|
|
Addr: os.Getenv("DB_HOST") + ":" + os.Getenv("DB_PORT"),
|
2020-07-27 15:16:13 +00:00
|
|
|
PoolSize: runtime.NumCPU() * 5,
|
2020-06-01 19:05:33 +00:00
|
|
|
})
|
|
|
|
defer func() {
|
|
|
|
if err := db.Close(); err != nil {
|
|
|
|
log.Fatal(err)
|
|
|
|
}
|
|
|
|
}()
|
|
|
|
|
|
|
|
c := cron.New(cron.WithChain(
|
|
|
|
cron.SkipIfStillRunning(cron.VerbosePrintfLogger(log.New(os.Stdout, "cron: ", log.LstdFlags))),
|
|
|
|
))
|
2020-07-28 10:41:45 +00:00
|
|
|
if err := _cron.Attach(c, _cron.Config{
|
2020-08-07 08:21:19 +00:00
|
|
|
DB: db,
|
2020-07-28 10:41:45 +00:00
|
|
|
}); err != nil {
|
2020-06-01 19:05:33 +00:00
|
|
|
log.Fatal(err)
|
|
|
|
}
|
|
|
|
c.Start()
|
|
|
|
defer c.Stop()
|
|
|
|
|
|
|
|
log.Print("Cron is running!")
|
|
|
|
|
|
|
|
channel := make(chan os.Signal, 1)
|
|
|
|
signal.Notify(channel, os.Interrupt, os.Kill, syscall.SIGTERM, syscall.SIGINT)
|
|
|
|
<-channel
|
|
|
|
|
|
|
|
log.Print("shutting down")
|
|
|
|
}
|