mirror of
https://github.com/tenrok/event-scheduling.git
synced 2026-05-15 11:59:41 +03:00
49 lines
965 B
Go
49 lines
965 B
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"log"
|
|
"os"
|
|
"os/signal"
|
|
"time"
|
|
|
|
"github.com/joho/godotenv"
|
|
|
|
"github.com/dipeshdulal/event-scheduling/customevents"
|
|
)
|
|
|
|
var eventListeners = Listeners{
|
|
"SendEmail": customevents.SendEmail,
|
|
"PayBills": customevents.PayBills,
|
|
}
|
|
|
|
func main() {
|
|
ctx, cancel := context.WithCancel(context.Background())
|
|
|
|
interrupt := make(chan os.Signal, 1)
|
|
signal.Notify(interrupt, os.Interrupt)
|
|
|
|
if err := godotenv.Load(); err != nil {
|
|
log.Fatal("Error loading .env file ", err)
|
|
}
|
|
|
|
db := initDBConnection()
|
|
seedDB(db)
|
|
|
|
scheduler := NewScheduler(db, eventListeners)
|
|
|
|
scheduler.CheckEventsInInterval(ctx, time.Minute)
|
|
|
|
scheduler.Schedule("SendEmail", "mail: nilkantha.dipesh@gmail.com", time.Now().Add(1*time.Minute))
|
|
scheduler.Schedule("PayBills", "paybills: $4,000 bill", time.Now().Add(2*time.Minute))
|
|
|
|
go func() {
|
|
for range interrupt {
|
|
log.Println("\n❌ Interrupt received closing...")
|
|
cancel()
|
|
}
|
|
}()
|
|
|
|
<-ctx.Done()
|
|
}
|