| 1234567891011121314151617181920212223242526272829303132 |
- 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");
- });
- };
|