discourse/migrations
Selase Krakani a48f33fda0
FIX: Ensure copy_data callbacks run even when all rows are skipped (#33002)
Currently, if a batch "copy" of an import step results in all rows being
skipped, the `after_commit_of_skipped_rows` callback is never triggered.
This happens because the callback is nested inside a block that only
runs when at least one row is inserted.

This change ensures the DB copy operation returns both inserted and
skipped rows, allowing the caller to respond appropriately in either
case.

---------

Co-authored-by: Gerhard Schlager <gerhard.schlager@discourse.org>
2025-06-02 23:07:28 +02:00
..
bin REFACTOR: Code generator for migrations IntemerdiateDB 2025-04-07 17:22:36 +02:00
config DEV: Require created_at on users (#33033) 2025-06-02 14:08:38 +00:00
db DEV: Require created_at on users (#33033) 2025-06-02 14:08:38 +00:00
docs
lib FIX: Ensure copy_data callbacks run even when all rows are skipped (#33002) 2025-06-02 23:07:28 +02:00
scripts/benchmarks REFACTOR: Code generator for migrations IntemerdiateDB 2025-04-07 17:22:36 +02:00
spec DEV: Add converter & importer for permalink_normalizations 2025-05-31 22:17:44 +02:00
.gitignore DEV: Adds a new converter for migrating from Discourse 2025-04-07 17:22:36 +02:00
.rubocop.yml DEV: Refactor migrations-tooling 2025-04-07 17:22:36 +02:00
migrations.rb DEV: Refactor migrations-tooling 2025-04-07 17:22:36 +02:00
README.md DEV: Add converter framework for migrations-tooling (#28540) 2024-09-09 17:14:39 +02:00

Migrations Tooling

Command line interface

./bin/cli help

Converters

Public converters are stored in lib/converters/. If you need to run a private converter, put its code into a subdirectory of private/converters/

Development

Installing gems

bundle config set --local with migrations
bundle install

Updating gems

bundle update --group migrations

Running tests

You need to execute rspec in the root of the project.

bin/rspec --default-path migrations/spec