From fb9915759ba7dc066719dbc5caa7fe3d5b3471f1 Mon Sep 17 00:00:00 2001 From: Adnan Zahir Date: Thu, 23 Apr 2026 22:52:44 +0700 Subject: [PATCH] cmd: add flag to bypass strict repointment --- .../main.go | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/cmd/consolidate-kandang-to-farm-stocks/main.go b/cmd/consolidate-kandang-to-farm-stocks/main.go index 84b7f4d9..1c656604 100644 --- a/cmd/consolidate-kandang-to-farm-stocks/main.go +++ b/cmd/consolidate-kandang-to-farm-stocks/main.go @@ -26,12 +26,13 @@ const ( ) type options struct { - Apply bool - Output string - AreaName string - KandangLocationName string - DBSSLMode string + Apply bool + Output string + AreaName string + KandangLocationName string + DBSSLMode string DeleteKandangWarehouses bool + SkipBlockedRefsCheck bool } type consolidateRow struct { @@ -132,7 +133,7 @@ func main() { log.Fatalf("failed to inspect warehouse references: %v", err) } - if err := runPrechecks(ctx, db, rows, refs); err != nil { + if err := runPrechecks(ctx, db, rows, refs, opts); err != nil { log.Fatalf("precheck failed: %v", err) } @@ -157,6 +158,7 @@ func parseFlags() (*options, error) { flag.StringVar(&opts.KandangLocationName, "kandang-location-name", "", "Optional exact canonical kandang location filter") flag.StringVar(&opts.DBSSLMode, "db-sslmode", "", "Optional database sslmode override, for example: require") flag.BoolVar(&opts.DeleteKandangWarehouses, "delete-kandang-warehouses", true, "Soft delete kandang warehouse rows after all stocks have been moved") + flag.BoolVar(&opts.SkipBlockedRefsCheck, "skip-blocked-refs-check", false, "Skip blocked references check (use with caution - only if you understand the stock_transfers references)") flag.Parse() opts.Output = strings.ToLower(strings.TrimSpace(opts.Output)) @@ -300,9 +302,11 @@ func buildReferencePlan(ctx context.Context, db *gorm.DB) (*referencePlan, error }, nil } -func runPrechecks(ctx context.Context, db *gorm.DB, rows []consolidateRow, refs *referencePlan) error { - if err := ensureNoBlockedWarehouseRefsConsolidate(ctx, db, rows, refs.BlockedWarehouseRefs); err != nil { - return err +func runPrechecks(ctx context.Context, db *gorm.DB, rows []consolidateRow, refs *referencePlan, opts *options) error { + if !opts.SkipBlockedRefsCheck { + if err := ensureNoBlockedWarehouseRefsConsolidate(ctx, db, rows, refs.BlockedWarehouseRefs); err != nil { + return err + } } if err := ensureNoPurchaseItemWarehouseConflictsConsolidate(ctx, db, rows); err != nil { return err