Produkte und Properties im Server

This commit is contained in:
2026-08-16 18:22:05 +02:00
parent 5b60189b07
commit 5060fe5a2e
10 changed files with 818 additions and 14 deletions
+39 -8
View File
@@ -15,20 +15,30 @@ import (
)
type HttpServer struct {
config *viper.Viper
router *gin.Engine
dbHandler *sql.DB
valueController *controller.ValueController
config *viper.Viper
router *gin.Engine
dbHandler *sql.DB
valueController *controller.ValueController
productGroupController *controller.ProductGroupController
productController *controller.ProductController
}
func InitHttpServer(config *viper.Viper, dbHandler *sql.DB) HttpServer {
// repository initialisation:
valueRepository := repositories.NewValueRepository(dbHandler)
productGroupRepository := repositories.NewProductGroupRepository(dbHandler, valueRepository)
productRepository := repositories.NewProductRepository(dbHandler, productGroupRepository, valueRepository)
// service initialisation:
valueService := services.NewValueService(valueRepository)
productGroupService := services.NewProductGroupService(productGroupRepository)
productService := services.NewProductService(productRepository)
// controller initialisation:
valueController := controller.NewValueController(valueService)
productGroupController := controller.NewProductGroupController(productGroupService, valueService)
productController := controller.NewProductController(productService, productGroupService, valueService)
// Service API
router := gin.Default()
@@ -55,13 +65,34 @@ func InitHttpServer(config *viper.Viper, dbHandler *sql.DB) HttpServer {
router.GET("/getValue/:id", valueController.GetValue) // get Value by id
// Product centric routing
// ProductGroup
router.POST("/createProductGroup", productGroupController.CreateProductGroup) // create ProductGroup
router.PUT("/updateProductGroup", productGroupController.UpdateProductGroup) // update ProductGroup
router.DELETE("/deleteProductGroup/:id", productGroupController.DeleteProductGroup) // delete ProductGroup
router.GET("/getProductGroup/:id", productGroupController.GetProductGroup) // get ProductGroup by id
router.GET("/getProductGroupsByParentId/:parentId", productGroupController.GetProductGroupsByParentId) // get all ProductGroups by parent ID
router.DELETE("/deleteProductFromProductGroupId/:productId", productGroupController.DeleteProductFromProductGroupId) // delete Product from ProductGroup by ID
router.POST("/getPropertiesFromProductGroupId/:productGroupId", productGroupController.GetPropertiesFromProductGroupId) // get Properties from ProductGroup by ID
router.DELETE("/deletePropertyFromProductGroupId/:propertyId/:productGroupId", productGroupController.DeletePropertyFromProductGroupId) // delete Property from ProductGroup by ID
router.POST("/createPropertyToProductGroupId/:propertyTypeId/:productGroupId", productGroupController.CreatePropertyToProductGroupId) // add Property to ProductGroup by ID
// Product
router.POST("/createProduct", productController.CreateProduct) // create Product
router.PUT("/updateProduct", productController.UpdateProduct) // update Product
router.DELETE("/deleteProduct/:id", productController.DeleteProduct) // delete Product
router.GET("/getProduct/:id", productController.GetProduct) // get Product by id
router.GET("/getProductsByGroupId/:groupId", productController.GetProductsByGroupId) // get all Products by group ID
router.POST("/addPropertyToProductId/:productId", productController.AddPropertyToProductId) // add Property to Product by ID
router.DELETE("/deletePropertyFromProductId/:productId", productController.DeletePropertyFromProductId) // delete Property from Product by ID
// server
return HttpServer{
config: config,
router: router,
dbHandler: dbHandler,
valueController: valueController,
config: config,
router: router,
dbHandler: dbHandler,
valueController: valueController,
productGroupController: productGroupController,
productController: productController,
}
}