exports.up = async function (knex) { const dupLogin = await knex("usuarios") .select("Login") .count({ c: "*" }) .groupBy("Login") .having(knex.raw("count(*) > 1")); const dupEmail = await knex("usuarios") .select("Email") .count({ c: "*" }) .groupBy("Email") .having(knex.raw("count(*) > 1")); if (dupLogin.length || dupEmail.length) { throw new Error( `[migration] Não é possível aplicar UNIQUE: Logins duplicados=${dupLogin .map((d) => d.Login) .join(",")} Emails duplicados=${dupEmail.map((d) => d.Email).join(",")}. Resolva manualmente antes de migrar.` ); } return knex.schema.alterTable("usuarios", (t) => { t.unique("Login"); t.unique("Email"); }); }; exports.down = function (knex) { return knex.schema.alterTable("usuarios", (t) => { t.dropUnique("Login"); t.dropUnique("Email"); }); };