refactor: aggiunta documentazione sull'architettura e varie migliorie qua e là

This commit is contained in:
2023-03-03 20:17:44 +01:00
parent 7100009ab1
commit 396729adf7
10 changed files with 103 additions and 52 deletions
+18 -13
View File
@@ -5,6 +5,7 @@ import (
"fmt"
"io"
"log"
"os"
"path"
"git.phc.dm.unipi.it/phc/website/services/config"
@@ -15,6 +16,9 @@ import (
"github.com/gofiber/fiber/v2"
)
// Logger is the debug logger, in the future this will be disabled and discard by default.
var Logger *log.Logger = log.New(os.Stderr, "[services/server/dev] ", log.Lmsgprefix)
// slot represents a private "write only" service
var slot = sl.NewSlot[*devService]()
@@ -26,7 +30,7 @@ func InjectInto(l *sl.ServiceLocator) {
func UseRoutesMetadata(l *sl.ServiceLocator) map[string]any {
dev, err := sl.Use(l, slot)
if err != nil {
log.Fatal(err)
Logger.Fatal(err)
}
return map[string]any{
@@ -100,9 +104,9 @@ func Configure(l *sl.ServiceLocator) (*devService, error) {
r.Post("/api/development/render", func(c *fiber.Ctx) error {
var data struct {
Route string `json:"route"`
Page string `json:"page"`
Request struct {
Route string `json:"route"`
HtmlPage string `json:"page"`
Request struct {
ParamsMap map[string]string `json:"params"`
QueryMap map[string]string `json:"query"`
} `json:"request"`
@@ -112,7 +116,9 @@ func Configure(l *sl.ServiceLocator) (*devService, error) {
return err
}
repr.Print(data)
Logger.Printf(`server rendering route "%s"`, data.Route)
Logger.Printf(`- params: %s`, repr.String(data.Request.ParamsMap))
Logger.Printf(`- query: %s`, repr.String(data.Request.QueryMap))
handler, ok := d.dynamicRoutesHandlers[data.Route]
if !ok {
@@ -121,7 +127,7 @@ func Configure(l *sl.ServiceLocator) (*devService, error) {
var buf bytes.Buffer
if err := handler(&buf, devServerRequest{
[]byte(data.Page),
[]byte(data.HtmlPage),
data.Request.ParamsMap,
data.Request.QueryMap,
}); err != nil {
@@ -136,27 +142,26 @@ func Configure(l *sl.ServiceLocator) (*devService, error) {
// RegisterRoute will register the provided "mountPoint" to the "frontendHtml" page
func RegisterRoute(l *sl.ServiceLocator, mountPoint, frontendFile string) {
log.Printf(`registering vite route %q for %q`, frontendFile, mountPoint)
dev, err := sl.Use(l, slot)
if err != nil {
log.Fatal(err)
Logger.Fatal(err)
}
dev.staticRoutes[mountPoint] = frontendFile
log.Print(dev)
Logger.Printf(`registered vite route "%v" for "%v"`, frontendFile, mountPoint)
}
func RegisterDynamicRoute(l *sl.ServiceLocator, mountPoint, frontendFile string, handler Handler) {
log.Printf(`registering vite route %q for %q`, frontendFile, mountPoint)
dev, err := sl.Use(l, slot)
if err != nil {
log.Fatal(err)
Logger.Fatal(err)
}
dev.dynamicRoutes[mountPoint] = frontendFile
dev.dynamicRoutesHandlers[mountPoint] = handler
Logger.Printf(`registered vite route "%v" for "%v"`, frontendFile, mountPoint)
}
func GetArtifactPath(frontendFile string) string {