cmd: add flag to bypass strict repointment

This commit is contained in:
Adnan Zahir
2026-04-23 22:52:44 +07:00
parent 65299d7913
commit fb9915759b
+13 -9
View File
@@ -26,12 +26,13 @@ const (
) )
type options struct { type options struct {
Apply bool Apply bool
Output string Output string
AreaName string AreaName string
KandangLocationName string KandangLocationName string
DBSSLMode string DBSSLMode string
DeleteKandangWarehouses bool DeleteKandangWarehouses bool
SkipBlockedRefsCheck bool
} }
type consolidateRow struct { type consolidateRow struct {
@@ -132,7 +133,7 @@ func main() {
log.Fatalf("failed to inspect warehouse references: %v", err) 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) 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.KandangLocationName, "kandang-location-name", "", "Optional exact canonical kandang location filter")
flag.StringVar(&opts.DBSSLMode, "db-sslmode", "", "Optional database sslmode override, for example: require") 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.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() flag.Parse()
opts.Output = strings.ToLower(strings.TrimSpace(opts.Output)) opts.Output = strings.ToLower(strings.TrimSpace(opts.Output))
@@ -300,9 +302,11 @@ func buildReferencePlan(ctx context.Context, db *gorm.DB) (*referencePlan, error
}, nil }, nil
} }
func runPrechecks(ctx context.Context, db *gorm.DB, rows []consolidateRow, refs *referencePlan) error { func runPrechecks(ctx context.Context, db *gorm.DB, rows []consolidateRow, refs *referencePlan, opts *options) error {
if err := ensureNoBlockedWarehouseRefsConsolidate(ctx, db, rows, refs.BlockedWarehouseRefs); err != nil { if !opts.SkipBlockedRefsCheck {
return err if err := ensureNoBlockedWarehouseRefsConsolidate(ctx, db, rows, refs.BlockedWarehouseRefs); err != nil {
return err
}
} }
if err := ensureNoPurchaseItemWarehouseConflictsConsolidate(ctx, db, rows); err != nil { if err := ensureNoPurchaseItemWarehouseConflictsConsolidate(ctx, db, rows); err != nil {
return err return err