Каждый плагин может определить схему базы данных и изменения к ней
class Schema extends DatabaseSchema
{
/**
* Database changes
*/
public static Vector changes() =>
[
/* Add table users */
new DatabaseChange
{
"name": "core:patch1",
"requires": [],
"up": void (DatabaseBuilder builder)
{
builder.create("users")
.description("Users table")
.add(new BigIntType{"name": "id"})
.add(new StringType{"name": "name"})
.add(new StringType{"name": "email"})
.add(new AutoIncrement{"name": "id"})
.add(new Primary{"keys": ["id"]})
.add(new Unique{"keys": ["name"]})
;
},
"down": void (DatabaseBuilder builder)
{
builder.drop("users");
},
},
/* Add table users_auth */
new DatabaseChange
{
"name": "core:patch2",
"requires": [
"core:patch1"
],
"up": void (DatabaseBuilder builder)
{
builder.create("users_auth")
.description("Users auth table")
.add(new BigIntType{"name": "user_id"})
.add(new StringType{"name": "password"})
.add(new Primary{"keys": ["user_id"]})
.add(new ForeignKey{
"name": "users_auth",
"table_name": "users",
"primary_key": ["id"],
"foreign_key": ["user_id"],
})
;
},
"down": void (DatabaseBuilder builder)
{
builder.drop("users_auth");
},
}
];
}
В настройках приложения нужно создать файл с патчами базы данных. Каждый патч содержит список названий и порядок изменений, которые нужно применить в базе данных. Например:
class Patch extends DatabasePatch
{
/**
* Returns patches names
*/
Collection patches() =>
[
{
"version": "v1",
"patch":
[
"core:patch1",
"core:patch2"
]
},
];
}
Каждый плагин может определить схему базы данных и изменения к ней
В настройках приложения нужно создать файл с патчами базы данных. Каждый патч содержит список названий и порядок изменений, которые нужно применить в базе данных. Например: