feat: implement web serving
This commit is contained in:
@@ -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"))
|
||||||
}
|
}
|
Reference in New Issue
Block a user