product images added to the catalogue
This commit is contained in:
25
main.go
25
main.go
@@ -7,6 +7,7 @@ import (
|
||||
"nearle/facade"
|
||||
"nearle/messaging"
|
||||
"nearle/models"
|
||||
"nearle/repositories"
|
||||
"nearle/routes"
|
||||
"os"
|
||||
"os/signal"
|
||||
@@ -62,6 +63,21 @@ func main() {
|
||||
log.Fatal("staff shift schema migration failed:", err)
|
||||
}
|
||||
|
||||
// The rest of a product's photos.
|
||||
//
|
||||
// An explicit ALTER rather than AutoMigrate on `models.Products`: that model
|
||||
// has drifted from the live table over time, and letting GORM reconcile the
|
||||
// whole thing to add one column would rewrite far more than anyone asked
|
||||
// for. `IF NOT EXISTS` makes it a no-op on every boot after the first.
|
||||
//
|
||||
// Not fatal on failure. A missing column costs the extra images and nothing
|
||||
// else — `productimage` still carries the first — and refusing to start the
|
||||
// API over a gallery would be the worse trade.
|
||||
if err := db.DB.Exec(
|
||||
`ALTER TABLE products ADD COLUMN IF NOT EXISTS productimages jsonb`).Error; err != nil {
|
||||
log.Println("⚠️ could not add products.productimages, extra photos will not be stored:", err)
|
||||
}
|
||||
|
||||
f := facade.NewFacade(db.DB, db.CatalogueDB)
|
||||
|
||||
routes.RegisterRoutes(app, f)
|
||||
@@ -72,10 +88,19 @@ func main() {
|
||||
//
|
||||
// A broker that is configured but unreachable is fatal on purpose: coming
|
||||
// up healthy while every till quietly queues is the worse failure.
|
||||
// The consumer is also the publisher for `nearle/pos/{loc}/catalogue`.
|
||||
// Registering it here inverts the dependency: the repositories that move
|
||||
// stock cannot import `messaging` — wiring runs this way and the reverse
|
||||
// would be a cycle — so they hold an interface and this supplies it. Left
|
||||
// unset the notification is simply skipped, which is what happens when the
|
||||
// broker is unavailable and must not stop the API booting.
|
||||
posMqtt, err := messaging.StartPosMqttConsumer(f.PosService())
|
||||
if err != nil {
|
||||
log.Fatal("POS MQTT consumer failed to start:", err)
|
||||
}
|
||||
if posMqtt != nil {
|
||||
repositories.SetCatalogueNotifier(posMqtt)
|
||||
}
|
||||
|
||||
// Start server
|
||||
go func() {
|
||||
|
||||
Reference in New Issue
Block a user