BOM start implementing basic CRUD operations for Bill of Materials and Variant Nodes

This commit is contained in:
2026-08-26 19:27:07 +02:00
parent 8591764ab3
commit adc4179747
4 changed files with 272 additions and 0 deletions
+17
View File
@@ -21,6 +21,7 @@ type HttpServer struct {
valueController *controller.ValueController
productGroupController *controller.ProductGroupController
productController *controller.ProductController
bomController *controller.BOMController
}
func InitHttpServer(config *viper.Viper, dbHandler *sql.DB) HttpServer {
@@ -30,17 +31,20 @@ func InitHttpServer(config *viper.Viper, dbHandler *sql.DB) HttpServer {
productGroupRepository := repositories.NewProductGroupRepository(dbHandler, valueRepository)
productRepository := repositories.NewProductRepository(dbHandler, productGroupRepository, valueRepository)
importRepository := repositories.NewImportRepository(dbHandler, productGroupRepository, productRepository, valueRepository)
bomRepository := repositories.NewBOMRepository(dbHandler, productRepository)
// service initialisation:
valueService := services.NewValueService(valueRepository)
productGroupService := services.NewProductGroupService(productGroupRepository)
productService := services.NewProductService(productRepository)
importService := services.NewImportService(importRepository)
bomService := services.NewBOMService(bomRepository)
// controller initialisation:
valueController := controller.NewValueController(valueService)
productGroupController := controller.NewProductGroupController(productGroupService, valueService)
productController := controller.NewProductController(productService, productGroupService, valueService)
bomController := controller.NewBOMController(bomService)
importController := controller.NewImportController(importService)
// Service API
@@ -92,6 +96,19 @@ func InitHttpServer(config *viper.Viper, dbHandler *sql.DB) HttpServer {
router.POST("/addPropertyToProductId/:productId", productController.AddPropertyToProductId) // add Property to Product by ID
router.DELETE("/deletePropertyFromProductId/:productId", productController.DeletePropertyFromProductId) // delete Property from Product by ID
// BOM centric routing
router.POST("/createBillOfMaterial", bomController.CreateBillOfMaterial)
router.PUT("/updateBillOfMaterial", bomController.UpdateBillOfMaterial)
router.DELETE("/deleteBillOfMaterial/:id", bomController.DeleteBillOfMaterial)
router.GET("/getBillOfMaterial/:id", bomController.GetBillOfMaterial)
router.GET("/getBOMProductsByBOMId/:bomId", bomController.GetBOMProductsByBOMId) // get all BOMContents by BOM ID
router.GET("/getBOMVariantNodesByBOMId/:bomId", bomController.GetBOMVariantNodesByBOMId) // get all VariantNodes by BOM ID
router.POST("/createVariantNode/:bomId", bomController.CreateVariantNode)
router.PUT("/updateVariantNode", bomController.UpdateVariantNode)
router.DELETE("/deleteVariantNode/:id", bomController.DeleteVariantNode)
router.GET("/getVariantNode/:id", bomController.GetVariantNode)
router.GET("/getVariantNodeProductsByVariantNodeId/:variantNodeId", bomController.GetVariantNodeProductsByVariantNodeId)
// Import functionality
router.POST("/importPropertyTypeGroups", importController.ImportPropertyTypeGroups) // import PropertyTypeGroups
router.POST("/importProductGroups", importController.ImportProductGroups) // import ProductGroups