Skip to content
Snippets Groups Projects
1700129852-unique-email-per-provider.js 881 B
Newer Older
const logger = require('@pubsweet/logger')

exports.up = async knex => {
  try {
    await knex.schema.alterTable('identities', table => {
      table.dropUnique(['email'], 'unique_email')
    })
    await knex.raw(
      'ALTER TABLE identities ADD CONSTRAINT unique_provider_email UNIQUE (provider, email);',
    )
    return true
  } catch (e) {
    logger.error(e)
    throw new Error(
      'Migration: Identity: require unique email per provider failed',
    )
  }
}

exports.down = async knex => {
  try {
    await knex.schema.alterTable('identities', table => {
      table.dropUnique(['provider', 'email'], 'unique_provider_email')
    })
    await knex.raw(
      'ALTER TABLE identities ADD CONSTRAINT unique_email UNIQUE (email);',
    )
    return true
  } catch (e) {
    logger.error(e)
    throw new Error('Migration: Identity: require unique email failed')
  }
}