feat: implement web serving

This commit is contained in:
2024-11-29 23:51:21 +00:00
parent 981f43c8ff
commit db03db3b83

View File

@@ -2,12 +2,11 @@ package main
import (
"context"
"embed"
"errors"
"flag"
"fmt"
"github.com/golang-migrate/migrate/v4"
"github.com/labstack/echo/v4"
"github.com/labstack/echo/v4/middleware"
"io/fs"
"log"
"net/http"
"os"
@@ -16,8 +15,15 @@ import (
"tesseract/internal/service"
"tesseract/internal/template"
"tesseract/internal/workspace"
"github.com/golang-migrate/migrate/v4"
"github.com/labstack/echo/v4"
"github.com/labstack/echo/v4/middleware"
)
//go:embed web/dist/*
var web embed.FS
func main() {
execPath, err := os.Executable()
if err != nil {
@@ -62,21 +68,20 @@ func main() {
cancel()
apiServer := echo.New()
apiServer.Use(services.Middleware())
webFS, err := fs.Sub(web, "web/dist")
if err != nil {
log.Fatalln(err)
}
apiServer.GET("/*", echo.WrapHandler(http.FileServer(http.FS(webFS))))
apiServer.Use(services.ReverseProxy.Middleware(), services.Middleware(), middleware.CORS())
g := apiServer.Group("/api")
workspace.DefineRoutes(g, services)
template.DefineRoutes(g)
root := echo.New()
root.Use(services.ReverseProxy.Middleware(), middleware.CORS())
root.Any("/*", func(c echo.Context) error {
req := c.Request()
res := c.Response()
apiServer.ServeHTTP(res, req)
return nil
})
apiServer.HTTPErrorHandler = func(err error, c echo.Context) {
var he *echo.HTTPError
if errors.As(err, &he) {
@@ -90,5 +95,5 @@ func main() {
}
}
root.Logger.Fatal(root.Start(":8080"))
apiServer.Logger.Fatal(apiServer.Start(":8080"))
}