Introduce enums into Workspace graphql type
<!--IssueSummary start--> <details> <summary> Everyone can contribute. [Help move this issue forward](https://handbook.gitlab.com/handbook/marketing/developer-relations/contributor-success/community-contributors-workflows/#contributor-links) while earning points, leveling up and collecting rewards. </summary> - [Work on this issue](https://contributors.gitlab.com/manage-issue?action=work&projectId=278964&issueIid=409772) - [Close this issue](https://contributors.gitlab.com/manage-issue?action=close&projectId=278964&issueIid=409772) </details> <!--IssueSummary end--> MR: Pending <!-- The first line of the MR must be one of the following: 1. `MR: Pending` 2. `MR: <MR link with trailing +>`, and the first description line of the MR should be `Issue: <Issue link with trailing +>` 3. `MR: No MR` For more context, see: https://about.gitlab.com/handbook/engineering/development/dev/create/ide/index.html#1-to-1-relationship-of-issues-to-mrs --> ## Description `As a GraphQL API user, I want to use enums where possible so that there is better type support, safety, autocompletion, etc. in GraphQL queries.` The following discussion from !105783 should be addressed: - [ ] @kassio started a [discussion](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/105783#note_1240941520): (+1 comment) > **suggestion** What do you think to use a type::enum here, based on `::RemoteDevelopment::States::VALID_DESIRED_STATES` (https://gitlab.com/gitlab-org/gitlab/blob/remote_dev/ee/lib/remote_development/states.rb#L16)? > > https://graphql-ruby.org/type_definitions/enums.html ## Acceptance Criteria Fix all related TODO for this issue for all enum types: - [ ] `ee/app/graphql/mutations/remote_development/workspaces/create.rb` - [ ] `ee/app/graphql/mutations/remote_development/workspaces/update.rb` - [ ] `ee/app/graphql/types/remote_development/workspace_type.rb` - [ ] Any other new mutations/types that have been added to the remote development domain. - [ ] ~~Note that we do **_NOT_** want to use `enums` in the ActiveRecord models, because they break the `ActiveRecord#save` contract by throwing an `ArgumentError` on `#save`, instead of `#save!`. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/129708#note_1538946504 for more context.~~ - **UPDATE: This has been fixed in Rails as of https://github.com/rails/rails/pull/49100. If we are on a version of Rails which includes that, then we can use enums in the ActiveRecord models** ## Technical Requirements Use enums where possible, and update relevant specs, docs, and queries. ## Design Requirements N/A ## Impact Assessment More efficient, user friendly, and safe usage of the GraphQL API for the remote development feature. <!-- Replace with other type, e.g. bug or maintenance, if appropriate --> <!-- Replace with other subtype if appropriate --> <!-- By default, all issues start in the unprioritized status. See https://about.gitlab.com/handbook/engineering/development/dev/create/ide/#-remote-development-planning-process --> <!-- For simplicity and to avoid triage bot warnings about missing workflow labels, we will default to issues starting at the refinement phase -->
issue