35 lines
1.2 KiB
JavaScript
35 lines
1.2 KiB
JavaScript
/**
|
|
* Migration to add owner_user_id to WireGuard tables for user-based data isolation
|
|
*/
|
|
export async function up(knex) {
|
|
// 1. Add owner_user_id to wg_interface
|
|
await knex.schema.alterTable("wg_interface", (table) => {
|
|
table.integer("owner_user_id").unsigned().nullable();
|
|
});
|
|
|
|
// 2. Add owner_user_id to wg_client
|
|
await knex.schema.alterTable("wg_client", (table) => {
|
|
table.integer("owner_user_id").unsigned().nullable();
|
|
});
|
|
|
|
// 3. Backfill existing rows with admin user (id=1)
|
|
await knex("wg_interface").whereNull("owner_user_id").update({ owner_user_id: 1 });
|
|
await knex("wg_client").whereNull("owner_user_id").update({ owner_user_id: 1 });
|
|
|
|
// 4. Make columns not nullable
|
|
await knex.schema.alterTable("wg_interface", (table) => {
|
|
table.integer("owner_user_id").unsigned().notNullable().defaultTo(1).alter();
|
|
});
|
|
await knex.schema.alterTable("wg_client", (table) => {
|
|
table.integer("owner_user_id").unsigned().notNullable().defaultTo(1).alter();
|
|
});
|
|
}
|
|
|
|
export async function down(knex) {
|
|
await knex.schema.alterTable("wg_client", (table) => {
|
|
table.dropColumn("owner_user_id");
|
|
});
|
|
await knex.schema.alterTable("wg_interface", (table) => {
|
|
table.dropColumn("owner_user_id");
|
|
});
|
|
}
|