62 lines
1.2 KiB
Go
62 lines
1.2 KiB
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"log"
|
|
"net/http"
|
|
"os"
|
|
"os/signal"
|
|
|
|
"trle5.xyz/trpic/src/configs"
|
|
"trle5.xyz/trpic/src/database"
|
|
"trle5.xyz/trpic/src/fetch_artworks/pixiv"
|
|
"trle5.xyz/trpic/src/utils/auth"
|
|
"trle5.xyz/trpic/src/utils/telegram"
|
|
"trle5.xyz/trpic/src/web"
|
|
"trle5.xyz/trpic/src/web/router"
|
|
)
|
|
|
|
func main() {
|
|
ctx, cancel := signal.NotifyContext(context.Background(), os.Interrupt, os.Kill)
|
|
defer cancel()
|
|
|
|
configs.LoadConfig()
|
|
database.Init(ctx)
|
|
auth.CheckRegister(ctx)
|
|
web.Init()
|
|
router.Init()
|
|
|
|
pixiv.InitApp()
|
|
telegram.InitBot(ctx)
|
|
|
|
srv := &http.Server{
|
|
Addr: configs.Config.ListenAddr,
|
|
Handler: router.ChiMux,
|
|
}
|
|
|
|
go func () {
|
|
log.Printf("ListenAddress: [%s]", configs.Config.ListenAddr)
|
|
err := srv.ListenAndServe()
|
|
if err != nil && err != http.ErrServerClosed {
|
|
log.Println("failed to start server:", err)
|
|
cancel()
|
|
}
|
|
}()
|
|
|
|
<- ctx.Done()
|
|
|
|
err := srv.Shutdown(ctx)
|
|
if err != nil {
|
|
log.Println("Failed to shutdown server:", err)
|
|
} else {
|
|
log.Println("Server shutdown")
|
|
}
|
|
|
|
err = database.Close()
|
|
if err != nil {
|
|
log.Println("failed to close database connection:", err)
|
|
} else {
|
|
log.Println("Database closed")
|
|
}
|
|
}
|