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 ( import (
"context" "context"
"embed"
"errors" "errors"
"flag" "flag"
"fmt" "fmt"
"github.com/golang-migrate/migrate/v4" "io/fs"
"github.com/labstack/echo/v4"
"github.com/labstack/echo/v4/middleware"
"log" "log"
"net/http" "net/http"
"os" "os"
@@ -16,8 +15,15 @@ import (
"tesseract/internal/service" "tesseract/internal/service"
"tesseract/internal/template" "tesseract/internal/template"
"tesseract/internal/workspace" "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() { func main() {
execPath, err := os.Executable() execPath, err := os.Executable()
if err != nil { if err != nil {
@@ -62,21 +68,20 @@ func main() {
cancel() cancel()
apiServer := echo.New() 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") g := apiServer.Group("/api")
workspace.DefineRoutes(g, services) workspace.DefineRoutes(g, services)
template.DefineRoutes(g) 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) { apiServer.HTTPErrorHandler = func(err error, c echo.Context) {
var he *echo.HTTPError var he *echo.HTTPError
if errors.As(err, &he) { if errors.As(err, &he) {
@@ -90,5 +95,5 @@ func main() {
} }
} }
root.Logger.Fatal(root.Start(":8080")) apiServer.Logger.Fatal(apiServer.Start(":8080"))
} }