Create `extensions_marketplace_opt_in_status` field in database

MR: Create 'extensions_marketplace_opt_in_status' f... (!149178 - merged)

Description

Based on Create User-Level Extension Marketplace settings (#451875 - closed)

There already exists a user.use_web_ide_extensions_marketplace field which is a boolean DEFAULT false NOT NULL but we need a ternary field 😬

Let's deprecate the unused user.use_web_ide_extensions_marketplace field and add a new one for user.extensions_marketplace_opt_in. This should be a smallint on the db side with enum values like:

  • ExtensionsMarketplaceOptInStatus::Unset
  • ExtensionsMarketplaceOptInStatus::Enabled
  • ExtensionsMarketplaceOptInStatus::Disabled

Acceptance Criteria

Example queries

mutation userPreferencesUpdate {
  userPreferencesUpdate(
    input: {
      extensionsMarketplaceOptInStatus: DISABLED
    }
  )
  {
    userPreferences {
      extensionsMarketplaceOptInStatus
    }
    errors
  }
}
mutation userPreferencesUpdate {
  userPreferencesUpdate(
    input: {
      extensionsMarketplaceOptInStatus: ENABLED
    }
  )
  {
    userPreferences {
      extensionsMarketplaceOptInStatus
    }
    errors
  }
}
mutation userPreferencesUpdate {
  userPreferencesUpdate(
    input: {
      extensionsMarketplaceOptInStatus: UNSET
    }
  )
  {
    userPreferences {
      extensionsMarketplaceOptInStatus
    }
    errors
  }
}

Screenshots

Screenshot_2024-04-10_at_2.03.40_PM

Screenshot_2024-04-10_at_2.04.27_PM

Screenshot_2024-04-10_at_2.04.08_PM

Edited by Chad Woolley