backend api, swagger, tooling, frontend skeleton
This commit is contained in:
@@ -1,12 +1,25 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"log"
|
||||
"net/http"
|
||||
"os"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
_ "github.com/mattn/go-sqlite3"
|
||||
swaggerFiles "github.com/swaggo/files"
|
||||
ginSwagger "github.com/swaggo/gin-swagger"
|
||||
|
||||
"gitea.maison43.duckdns.org/gilles/matosbox/docs"
|
||||
"gitea.maison43.duckdns.org/gilles/matosbox/internal/data/ent"
|
||||
"gitea.maison43.duckdns.org/gilles/matosbox/internal/handlers"
|
||||
)
|
||||
|
||||
// @title MatosBox API
|
||||
// @version 0.1.0
|
||||
// @description API MatosBox pour la gestion d'inventaire.
|
||||
// @BasePath /v1
|
||||
func main() {
|
||||
// Config simple : port via PORT, defaut 8080.
|
||||
port := os.Getenv("PORT")
|
||||
@@ -16,10 +29,41 @@ func main() {
|
||||
|
||||
r := gin.Default()
|
||||
|
||||
// Connexion base de donnees.
|
||||
driver := os.Getenv("DATABASE_DRIVER")
|
||||
if driver == "" {
|
||||
driver = "sqlite3"
|
||||
}
|
||||
dsn := os.Getenv("DATABASE_URL")
|
||||
if dsn == "" {
|
||||
dsn = "file:./data/matosbox.db?_fk=1"
|
||||
}
|
||||
|
||||
client, err := ent.Open(driver, dsn)
|
||||
if err != nil {
|
||||
log.Fatalf("connexion base impossible: %v", err)
|
||||
}
|
||||
defer func() {
|
||||
if err := client.Close(); err != nil {
|
||||
log.Printf("fermeture base impossible: %v", err)
|
||||
}
|
||||
}()
|
||||
|
||||
// Auto-creation du schema en dev. A remplacer par migrations en prod.
|
||||
if err := client.Schema.Create(context.Background()); err != nil {
|
||||
log.Fatalf("creation schema impossible: %v", err)
|
||||
}
|
||||
|
||||
// Route de sante pour verifier que le backend repond.
|
||||
r.GET("/healthz", func(c *gin.Context) {
|
||||
c.JSON(http.StatusOK, gin.H{"status": "ok"})
|
||||
})
|
||||
|
||||
handlers.RegisterRoutes(r, client)
|
||||
|
||||
// Swagger (doc API).
|
||||
docs.SwaggerInfo.BasePath = "/v1"
|
||||
r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
|
||||
|
||||
_ = r.Run(":" + port)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user