You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

49 lines
838 B

package main
import (
"log"
"net/http"
"os"
"path/filepath"
"teraclone/internal/routes"
"teraclone/internal/service"
)
func main() {
runServer()
}
func runServer() {
port := os.Getenv("PORT")
if port == "" {
port = "8080"
}
dbPath := os.Getenv("TERACLONE_DB_PATH")
if dbPath == "" {
dbPath = filepath.Join("data", "teraclone.db")
}
appService, err := service.NewAppService(dbPath)
if err != nil {
log.Fatal(err)
}
defer func() {
if closeErr := appService.Close(); closeErr != nil {
log.Printf("sqlite close error: %v", closeErr)
}
}()
mux := http.NewServeMux()
if err := routes.Register(mux, appService); err != nil {
log.Fatal(err)
}
addr := ":" + port
log.Printf("server listening on http://localhost%s", addr)
if err := http.ListenAndServe(addr, mux); err != nil {
log.Fatal(err)
}
}