Files
trpic/main.go
Hubert Chen 30468714a1 refactor
sqlite WAL journal mode
refactor API endpoints
2026-07-06 23:42:41 +08:00

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")
}
}