Database migration script documentation

AI-generated summary

The discussion revolves around documenting database migration scripts in Discourse, specifically for migrating data from the deprecated Multilingual plugin. Honeyxilia seeks guidance on using Discourse’s migration scripts (db/migrate) to transfer data to newer versions, clarifying that they mean ActiveRecord-based migrations, not import scripts. ToddZ shares past difficulty in finding documentation for such migrations, while pfaffman suggests that if the data is already in Discourse, the focus should be on adapting the database structure. merefield confirms these are standard Rails migrations and points to Rails documentation for further details. The thread highlights a gap in accessible documentation for custom database migrations in Discourse.

Hello there - as a plugin used in our Discourse instance is no longer updates (Multilingual), and some of its features are supported in the newer versions of Discourse, we wished to use a migration script in order to move values in the database to new places.

However, while researching the wiki articles from this site, or the git repository of Discourse, I haven’t found any documentation to write a migration script (what class to inherit, what methods to use…)

Is there any documentation which I missed ? Aside from looking at migration code, is there any tips to acknowledge myself around migration scripts ?

Ty in advance!

When I had content to migrate from a platform with no available Discourse script, I had no luck finding real documentation about these things. Existing scripts were beyond me to reverse-engineer. I ended up manually importing a topic at a time via the Rails console – not very scalable.

If I’d had a bigger project (and a budget) I’d have probably have contracted @pfaffman for his migration service.

What are you trying to do? If you’re still by to use discourse then it’s not a migration. What do you want to move where?

If you just want to move to an up to date discourse then you can likely just remove the plugin and upgrade.

If you’re not using Discourse anymore then it’s not a Discourse migration script you want.

Honeyxilia, the way I read your question, it sounds like you did a bunch of work with the Pavilion Multilingual Plugin and would like to “migrate” that data to the newer Discourse Content Localization features. Is that right? (I’m not sure where I’d start with that either.)

What I mean by migration script is the database migration scripts ( db/migrate ) inheriting from ActiveRecord::Migration which are used to adapt the database to the Discourse changes.

For instance, we have the SQL commands to transfer a Multilingual-plugin locale into a native Discourse locale.

My question would be mostly about the database migrate scripts, in order to automate the SQL commands when migrating the database to a newer version

I changed the title of the topic to precise what I meant

These are just standard Rails migrations. Take a look at:

If you are going to add some, recommend you do this in a plugin, not fork core :slight_smile: