gopay/cmd/main.go

54 lines
1.1 KiB
Go

package main
import (
_ "embed"
"fmt"
"net/http"
"time"
"git.supernets.org/perp/gopay/internal/config"
"git.supernets.org/perp/gopay/internal/context"
"git.supernets.org/perp/gopay/internal/database"
"git.supernets.org/perp/gopay/internal/jwt"
"git.supernets.org/perp/gopay/internal/router"
"github.com/rs/zerolog/log"
)
//go:embed config.toml
var content []byte
// Current version
const version = "0.0.0"
func main() {
// Parse config & setup logger
cfg := config.Parse(content)
config.SetupLogger(cfg.Log)
// Create JWT
jwt.New(cfg.Auth.Secret)
// Create database
db := database.New(cfg.Database)
// Create context
ctx := context.New(db, cfg)
// Create router
rtr := router.New(ctx)
// Create server
server := &http.Server{
Handler: rtr,
Addr: fmt.Sprintf("%s:%d", cfg.Server.Host, cfg.Server.Port),
ReadTimeout: time.Second * time.Duration(cfg.Server.ReadTimeout),
WriteTimeout: time.Second * time.Duration(cfg.Server.WriteTimeout),
}
// Run server
err := server.ListenAndServe()
if err != nil {
log.Panic().Msg(err.Error())
}
}