Files
backend_fiesta/routes/productroutes.go
Suriya fab06bb33e Bridge global catalogue DB to per-store product catalogue
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>
2026-07-16 17:34:20 +05:30

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)
}