...
Codeblock | ||
---|---|---|
| ||
/// <reference path="../../../.vscode.js"/>
const SQL = UM.config.sql;
export default class DbSchemaMigration extends PluginSchemaMigration {
schemaUpdate_0_1(scr) {
// Create column for primary attribute "new_attribute":
this.primaryAddColumn(scr, UM.config.getAttribute('new_attribute');
// Alter primary attribute's column according to the current settings from *.attributes file:
this.primaryModifyColumn(scr, UM.config.getAttribute('altered_attribute'));
// Create column for new table attribute's column:
this.tableAddColumn(scr, UM.config.getAttribute('table_attribute->new_column'));
// Alter table attribute's column according to the current settings from *.attributes file:
this.tableModifyColumn(scr, UM.config.getAttribute('table_attribute->altered_column'));
// Issue SQL statement to create an INDEX:
const createIndex1 = new SqlQuery(`CREATE INDEX idx_users_new_attr ON ${SQL.qualifyTable('users')} (p_new_attribute)`);
scr.add(createIndex1);
// Issue SQL statemtent to mass-update some user entries:
const update1 = new SqlQuery(`UPDATE ${SQL.qualifyTable('users')} SET p_entrytype='user' WHERE p_entrytype IS NULL`);
scr.add(update1);
}
}
// Don't forget to export the class to the respective namespace:
de.acme.projectx.DbSchemaMigration = DbSchemaMigration; |
The method schemaUpdate_0_1
will be executed upon UM startup whenever the recorded schema level for the plugin de.acme.projectx
is below “1”.
To implement a second schema update, just increase the dbSchema
counter in your plugin descriptor file and implement the schemaUpdate_1_2
method.
There are several helper methods available to accomplish commonly needed tasks like adding or altering columns or executing custom SQL statements: