Value Services implementiert Teil 1

This commit is contained in:
2026-08-15 16:58:12 +02:00
parent 8c5ad6ceec
commit 58de339be8
7778 changed files with 868356 additions and 124 deletions
+26
View File
@@ -0,0 +1,26 @@
package server
import (
"log"
"database/sql"
"github.com/spf13/viper"
_ "github.com/lib/pq"
)
func InitDatabase(config *viper.Viper) *sql.DB {
connectionString := config.GetString("database.connection_string")
driverName := config.GetString("database.driver_name")
if connectionString == "" {
log.Fatalf("Database connection string is missing")
}
dbHandler, err := sql.Open(driverName, connectionString)
if err != nil {
log.Fatalf("Error while initializing database: %v", err)
}
err = dbHandler.Ping()
if err != nil {
dbHandler.Close()
log.Fatalf("Error while validating database: %v", err)
}
return dbHandler
}
+79
View File
@@ -0,0 +1,79 @@
package server
import (
"database/sql"
"log"
"net/http"
"github.com/gin-contrib/cors"
"github.com/gin-gonic/gin"
"github.com/spf13/viper"
"simplycpq/controller"
"simplycpq/repositories"
"simplycpq/services"
)
type HttpServer struct {
config *viper.Viper
router *gin.Engine
dbHandler *sql.DB
valueController *controller.ValueController
}
func InitHttpServer(config *viper.Viper, dbHandler *sql.DB) HttpServer {
// repository initialisation:
valueRepository := repositories.NewValueRepository(dbHandler)
// service initialisation:
valueService := services.NewValueService(valueRepository)
// controller initialisation:
valueController := controller.NewValueController(valueService)
// Service API
router := gin.Default()
router.Use(cors.Default())
router.GET("/test", Test)
// Value centric routing
router.POST("/createPropertyTypeGroup", valueController.CreatePropertyTypeGroup) // create PropertyTypeGroup
router.PUT("/updatePropertyTypeGroup", valueController.UpdatePropertyTypeGroup) // update PropertyTypeGroup
router.DELETE("/deletePropertyTypeGroup/:id", valueController.DeletePropertyTypeGroup) // delete PropertyTypeGroup
router.GET("/getPropertyTypeGroup/:id", valueController.GetPropertyTypeGroup) // get PropertyTypeGroup by id
router.GET("/getPropertyTypeGroupsByParentId/:parentId", valueController.GetPropertyTypeGroupsByParentId) // get all PropertyTypeGroups by parent ID
router.DELETE("/deletePropertyTypeFromPropertyTypeGroupId/:propertyTypeGroupId", valueController.DeletePropertyTypeFromPropertyTypeGroupId) // delete PropertyType from PropertyTypeGroup by ID
router.POST("/createPropertyType", valueController.CreatePropertyType) // create PropertyType
router.PUT("/updatePropertyType", valueController.UpdatePropertyType) // update PropertyType
router.DELETE("/deletePropertyType/:id", valueController.DeletePropertyType) // delete PropertyType
router.GET("/getPropertyType/:id", valueController.GetPropertyType) // get PropertyType by id
router.GET("/getPropertyTypesByGroupId/:groupId", valueController.GetPropertyTypesByGroupId) // get all PropertyTypes by group ID
router.POST("/createValueForPropertyTypeId/:propertyTypeId", valueController.CreateValueForPropertyTypeId) // create Value for PropertyType by ID
router.DELETE("/deleteValueFromPropertyTypeId/:propertyTypeId", valueController.DeleteValueFromPropertyTypeId) // delete Value from PropertyType by ID
router.GET("/getValuesFromPropertyTypeId/:propertyTypeId", valueController.GetValuesFromPropertyTypeId) // get all Values from PropertyType by ID
router.GET("/getValuesFromPropertyId/:propertyId", valueController.GetValuesFromPropertyId) // get all Values from Property by ID
router.DELETE("/deleteValueFromPropertyId/:propertyId", valueController.DeleteValueFromPropertyId) // delete Value from Property by ID
router.GET("/getValue/:id", valueController.GetValue) // get Value by id
// Product centric routing
// server
return HttpServer{
config: config,
router: router,
dbHandler: dbHandler,
valueController: valueController,
}
}
func (hs HttpServer) Start() {
err := hs.router.Run(hs.config.GetString("http.server_address"))
if err != nil {
log.Fatalf("Error while starting HTTP server: %v", err)
}
}
func Test(ctx *gin.Context) {
ctx.JSON(http.StatusOK, gin.H{
"message": "Test",
})
}