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