Adds a separate CatalogueDB (pgvector) connection alongside the main nearledb, plus a new catalogue module (repository/service/controller/ routes) to browse it by brand, category, and keyword, with brand optional so the whole ~237-product catalogue can be browsed unfiltered. Adds the actual bridge: importing a catalogue product snapshots it into the tenant's own products table (keyed on brand+catalogueid, since a catalogue row's bare id is only unique within its own brand table), then links it via the existing productlocations upsert. Re-importing tops up stock and refreshes price instead of duplicating. Also adds an imported-refs endpoint so the frontend can badge already-imported items without diffing full product lists, and wires the new AWS S3 image store used to resolve catalogue product photos. Bumps Go/Docker to 1.24 for the AWS SDK dependency this needs. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
51 lines
2.7 KiB
Go
51 lines
2.7 KiB
Go
package routes
|
|
|
|
import (
|
|
"nearle/facade"
|
|
|
|
"github.com/gofiber/fiber/v2"
|
|
)
|
|
|
|
func RegisterProductRoutes(api fiber.Router, f *facade.Facade) {
|
|
|
|
products := api.Group("/v1/web/products")
|
|
|
|
products.Get("/getproductsubcategories", f.ProductController.GetProductSubCategory)
|
|
products.Get("/getproductscount", f.ProductController.GetProductCount)
|
|
products.Get("/getproductcategories", f.ProductController.GetProductCategory)
|
|
products.Get("/getproductvariants", f.ProductController.GetProductVariants)
|
|
products.Get("/getcatalougeproducts", f.ProductController.GetCatalougeProducts)
|
|
products.Get("/getproductstocks", f.ProductController.GetProductStocks)
|
|
products.Post("/createproductstock", f.ProductController.CreateProductStock)
|
|
products.Post("/create", f.ProductController.CreateProduct)
|
|
products.Put("/update", f.ProductController.UpdateProduct)
|
|
products.Delete("/delete", f.ProductController.DeleteProduct)
|
|
products.Get("/getstockstatement", f.ProductController.GetStockStatement)
|
|
products.Get("/getlocationproducts", f.ProductController.GetLocationProducts)
|
|
products.Get("/getlocationproductsummary", f.ProductController.GetLocationProductSummary)
|
|
products.Get("/getallproducts", f.ProductController.GetAllProducts)
|
|
products.Put("/updateproductlocation", f.ProductController.UpdateProductLocation)
|
|
products.Post("/createproductlocation", f.ProductController.CreateProductLocation)
|
|
products.Post("/importcatalogueproduct", f.ProductController.ImportCatalogueProduct)
|
|
products.Get("/getimportedcatalogueproducts", f.ProductController.GetImportedCatalogueProducts)
|
|
products.Delete("/deleteproductlocation", f.ProductController.DeleteProductLocation)
|
|
products.Post("/createproductvariant", f.ProductController.CreateProductVariant)
|
|
|
|
products.Post("/createstockrequest", f.StockRequestController.CreateStockRequest)
|
|
products.Get("/getstockrequests", f.StockRequestController.GetStockRequests)
|
|
products.Put("/updatestockrequest", f.StockRequestController.UpdateStockRequest)
|
|
|
|
products = api.Group("/v1/mob/products")
|
|
|
|
products.Get("/getproductbyvariant", f.ProductController.GetProductByVariant)
|
|
products.Get("/getproductsubcategories", f.ProductController.GetProductSubCategory)
|
|
products.Get("/getallproducts", f.ProductController.GetAllProducts)
|
|
products.Get("/getproductsbysubcategory", f.ProductController.GetProductsBySubcategory)
|
|
products.Put("/update", f.ProductController.UpdateProduct)
|
|
products.Get("/getlocationproducts", f.ProductController.GetLocationProducts)
|
|
products.Put("/updateproductlocation", f.ProductController.UpdateProductLocation)
|
|
products.Post("/importcatalogueproduct", f.ProductController.ImportCatalogueProduct)
|
|
products.Get("/getimportedcatalogueproducts", f.ProductController.GetImportedCatalogueProducts)
|
|
|
|
}
|