Merge remote-tracking branch 'origin/master'

This commit is contained in:
M_Kececi
2026-03-04 17:59:14 +03:00
parent b1150c5ef7
commit 94244b194a
7 changed files with 506 additions and 46 deletions

View File

@@ -10,6 +10,7 @@ import (
"bssapp-backend/routes"
"database/sql"
"log"
"log/slog"
"net/http"
"os"
"path"
@@ -164,6 +165,7 @@ InitRoutes — FULL V3 (Method-aware) PERMISSION EDITION
func InitRoutes(pgDB *sql.DB, mssql *sql.DB, ml *mailer.GraphMailer) *mux.Router {
r := mux.NewRouter()
mountUploads(r)
mountSPA(r)
/*
@@ -582,7 +584,7 @@ func InitRoutes(pgDB *sql.DB, mssql *sql.DB, ml *mailer.GraphMailer) *mux.Router
bindV3(r, pgDB,
"/api/product-images/{id}/content", "GET",
"order", "view",
wrapV3(routes.GetProductImageContentHandler(pgDB)),
http.HandlerFunc(routes.GetProductImageContentHandler(pgDB)),
)
// ============================================================
@@ -642,7 +644,35 @@ func InitRoutes(pgDB *sql.DB, mssql *sql.DB, ml *mailer.GraphMailer) *mux.Router
return r
}
func setupSlog() {
level := new(slog.LevelVar)
switch strings.ToLower(strings.TrimSpace(os.Getenv("LOG_LEVEL"))) {
case "debug":
level.Set(slog.LevelDebug)
case "warn", "warning":
level.Set(slog.LevelWarn)
case "error":
level.Set(slog.LevelError)
default:
level.Set(slog.LevelInfo)
}
handler := slog.NewJSONHandler(os.Stdout, &slog.HandlerOptions{
Level: level,
})
slog.SetDefault(slog.New(handler))
}
func mountUploads(r *mux.Router) {
root := uploadsRootDir()
log.Printf("🖼️ uploads root: %s", root)
r.PathPrefix("/uploads/").Handler(
http.StripPrefix("/uploads/", http.FileServer(http.Dir(root))),
)
}
func main() {
setupSlog()
log.Println("🔥🔥🔥 BSSAPP BACKEND STARTED — LOGIN ROUTE SHOULD EXIST 🔥🔥🔥")
// -------------------------------------------------------
@@ -807,3 +837,30 @@ func uiRootDir() string {
return "../ui/dist/spa"
}
func uploadsRootDir() string {
if root := strings.TrimSpace(os.Getenv("BLOB_ROOT")); root != "" {
candidates := []string{
root,
filepath.Join(root, "uploads"),
}
for _, d := range candidates {
if fi, err := os.Stat(d); err == nil && fi.IsDir() {
return d
}
}
}
candidates := []string{
"./uploads",
"../uploads",
"../../uploads",
}
for _, d := range candidates {
if fi, err := os.Stat(d); err == nil && fi.IsDir() {
return d
}
}
return "./uploads"
}