package main import ( "flag" "log" "os" "os/signal" "syscall" "time" "git.nemunai.re/lectures/adlin/libadlin" ) func main() { var dsn = flag.String("dsn", adlin.DSNGenerator(), "DSN to connect to the MySQL server") flag.BoolVar(&verbose, "verbose", verbose, "Enable verbose mode") flag.Parse() // Initialize contents log.Println("Opening database...") if err := adlin.DBInit(*dsn); err != nil { log.Fatal("Cannot open the database: ", err) } defer adlin.DBClose() log.Println("Creating database...") if err := adlin.DBCreate(); err != nil { log.Fatal("Cannot create database: ", err) } // Prepare graceful shutdown interrupt := make(chan os.Signal, 1) signal.Notify(interrupt, os.Interrupt, syscall.SIGTERM) ticker := time.NewTicker(30 * time.Second) defer ticker.Stop() // Launch checker studentsChecker() loop: for { select { case <-interrupt: break loop case <-ticker.C: studentsChecker() } } }