feat(controlplane-api): GraphQL model changes#303
Merged
BjoernKarma merged 4 commits intomainfrom Apr 2, 2026
Merged
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
This PR updates the controlplane-api GraphQL/Ent model to remove the dedicated Environment / TeamEnvironment entities and instead attach environment and namespace fields directly to core entities, while also relaxing some previously-required fields/edges.
Changes:
- Add
environmentandnamespacefields across entities via new Ent mixins. - Remove
EnvironmentandTeamEnvironmentschemas, generated code, and related filtering/tests. - Make several “status” and other attributes optional/nillable, and allow
ApiSubscriptionwithout a requiredApiExposuretarget edge.
Reviewed changes
Copilot reviewed 94 out of 105 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| controlplane-api/internal/interceptor/team_filter_test.go | Removes tests that referenced deleted Environment/TeamEnvironment entities. |
| controlplane-api/internal/interceptor/team_filter.go | Drops filtering branches for removed query types. |
| controlplane-api/ent/zone_update.go | Adds environment/namespace support to Zone update builders and SQL specs. |
| controlplane-api/ent/zone_query.go | Updates generated query examples to reference environment field. |
| controlplane-api/ent/zone_create.go | Adds environment/namespace to Zone create/upsert builders and specs. |
| controlplane-api/ent/zone/zone.go | Adds Zone field constants and order helpers for environment/namespace. |
| controlplane-api/ent/zone/where.go | Adds predicates for Zone environment/namespace. |
| controlplane-api/ent/zone.go | Adds Environment/Namespace fields to Zone model and scan/assign/string logic. |
| controlplane-api/ent/tx.go | Removes transaction clients for deleted entities. |
| controlplane-api/ent/teamenvironment_delete.go | Deletes generated TeamEnvironment delete builders. |
| controlplane-api/ent/teamenvironment/where.go | Deletes generated TeamEnvironment predicates. |
| controlplane-api/ent/teamenvironment/teamenvironment.go | Deletes TeamEnvironment constants and helpers. |
| controlplane-api/ent/teamenvironment.go | Deletes TeamEnvironment model and edge helpers. |
| controlplane-api/ent/team_query.go | Removes Team ↔ TeamEnvironment traversal/eager-loading. |
| controlplane-api/ent/team/where.go | Adds team predicates for environment/namespace and rover_token_ref; adds nil checks for optional status_phase. |
| controlplane-api/ent/team/team.go | Adds team field constants/order helpers for environment/namespace/rover_token_ref; removes TeamEnvironment edge artifacts; removes default status phase constant. |
| controlplane-api/ent/team.go | Makes status_phase optional pointer; adds environment/namespace/rover_token_ref; removes TeamEnvironment edges. |
| controlplane-api/ent/schema/zone.go | Applies environment/namespace mixins to Zone schema. |
| controlplane-api/ent/schema/team_environment.go | Removes TeamEnvironment schema. |
| controlplane-api/ent/schema/team.go | Applies environment/namespace mixins; adds rover_token_ref; removes TeamEnvironment edge. |
| controlplane-api/ent/schema/mixin/status.go | Makes status_phase optional/nillable instead of defaulted. |
| controlplane-api/ent/schema/mixin/namespace.go | Introduces NamespaceMixin (optional/nillable namespace text field). |
| controlplane-api/ent/schema/mixin/environment.go | Introduces EnvironmentMixin (optional/nillable environment text field). |
| controlplane-api/ent/schema/mixin/approval.go | Makes available_transitions optional (no default). |
| controlplane-api/ent/schema/member.go | Applies environment/namespace mixins to Member schema. |
| controlplane-api/ent/schema/group.go | Applies environment/namespace mixins to Group schema. |
| controlplane-api/ent/schema/environment.go | Removes Environment schema. |
| controlplane-api/ent/schema/approval_request.go | Applies environment/namespace mixins to ApprovalRequest schema. |
| controlplane-api/ent/schema/approval.go | Applies environment/namespace mixins to Approval schema. |
| controlplane-api/ent/schema/application.go | Applies environment/namespace mixins; makes client_id optional/nillable. |
| controlplane-api/ent/schema/api_subscription.go | Applies environment/namespace mixins; makes target edge non-required. |
| controlplane-api/ent/schema/api_exposure.go | Applies environment/namespace mixins; makes active optional/nillable. |
| controlplane-api/ent/runtime/runtime.go | Removes runtime initialization for deleted schemas; updates defaults/validator wiring to match optional fields. |
| controlplane-api/ent/privacy/privacy.go | Removes privacy rule adapters for deleted schemas. |
| controlplane-api/ent/predicate/predicate.go | Removes predicate function types for deleted schemas. |
| controlplane-api/ent/member_update.go | Adds environment/namespace setters/clearers and SQL spec updates for Member updates. |
| controlplane-api/ent/member_query.go | Updates generated query examples to reference environment field. |
| controlplane-api/ent/member_create.go | Adds environment/namespace to Member create/upsert builders and specs. |
| controlplane-api/ent/member/where.go | Adds predicates for Member environment/namespace. |
| controlplane-api/ent/member/member.go | Adds Member field constants and order helpers for environment/namespace. |
| controlplane-api/ent/member.go | Adds Environment/Namespace fields to Member model and scan/assign/string logic. |
| controlplane-api/ent/hook/hook.go | Removes hook adapters for deleted schemas. |
| controlplane-api/ent/group_update.go | Adds environment/namespace setters/clearers and SQL spec updates for Group updates. |
| controlplane-api/ent/group_query.go | Updates generated query examples to reference environment field. |
| controlplane-api/ent/group_create.go | Adds environment/namespace to Group create/upsert builders and specs. |
| controlplane-api/ent/group/where.go | Adds predicates for Group environment/namespace. |
| controlplane-api/ent/group/group.go | Adds Group field constants and order helpers for environment/namespace. |
| controlplane-api/ent/group.go | Adds Environment/Namespace fields to Group model and scan/assign/string logic. |
| controlplane-api/ent/gql_node.go | Removes Node implementors and loaders for deleted entities. |
| controlplane-api/ent/gql_edge.go | Removes GraphQL edge resolvers for deleted TeamEnvironment/Environment relationships; adjusts edge bookkeeping indexes. |
| controlplane-api/ent/environment_delete.go | Deletes generated Environment delete builders. |
| controlplane-api/ent/environment/where.go | Deletes generated Environment predicates. |
| controlplane-api/ent/environment/environment.go | Deletes Environment constants and helpers. |
| controlplane-api/ent/environment.go | Deletes Environment model and edge helpers. |
| controlplane-api/ent/ent.go | Removes column-validation entries for deleted tables. |
| controlplane-api/ent/approvalrequest_update.go | Adds clear methods for optional fields; adds environment/namespace updates; supports clearing JSON fields. |
| controlplane-api/ent/approvalrequest/where.go | Adds predicates for environment/namespace + nil checks for optional fields. |
| controlplane-api/ent/approvalrequest/approvalrequest.go | Adds field constants/order helpers for environment/namespace; removes defaults for optional fields. |
| controlplane-api/ent/approvalrequest.go | Makes status_phase optional pointer; adds environment/namespace; updates scan/assign/string. |
| controlplane-api/ent/approval_update.go | Adds clear methods for optional fields; adds environment/namespace updates; supports clearing JSON fields. |
| controlplane-api/ent/approval/where.go | Adds predicates for environment/namespace + nil checks for optional fields. |
| controlplane-api/ent/approval/approval.go | Adds field constants/order helpers for environment/namespace; removes defaults for optional fields. |
| controlplane-api/ent/approval.go | Makes status_phase optional pointer; adds environment/namespace; updates scan/assign/string. |
| controlplane-api/ent/application_update.go | Adds clear methods for optional fields; adds environment/namespace; allows clearing client_id; removes client_id validation. |
| controlplane-api/ent/application/where.go | Adds predicates for environment/namespace + nil checks for optional fields. |
| controlplane-api/ent/application/application.go | Adds field constants/order helpers for environment/namespace; removes default status phase and client_id validator hookup. |
| controlplane-api/ent/application.go | Makes status_phase and client_id optional pointers; adds environment/namespace; updates scan/assign/string. |
| controlplane-api/ent/apisubscription_update.go | Adds clear methods for optional fields; adds environment/namespace; makes target edge optional (removes required-edge clearing checks). |
| controlplane-api/ent/apisubscription/where.go | Adds predicates for environment/namespace + nil checks for optional fields. |
| controlplane-api/ent/apisubscription/apisubscription.go | Adds field constants/order helpers for environment/namespace; removes default status phase. |
| controlplane-api/ent/apisubscription.go | Makes status_phase optional pointer; adds environment/namespace; updates scan/assign/string. |
| controlplane-api/ent/apiexposure_update.go | Adds clear methods for optional fields; adds environment/namespace; supports clearing active. |
| controlplane-api/ent/apiexposure/where.go | Adds predicates for environment/namespace + nil checks for optional fields, including active. |
| controlplane-api/ent/apiexposure/apiexposure.go | Adds field constants/order helpers for environment/namespace; removes default active and default status phase. |
| controlplane-api/ent/apiexposure.go | Makes status_phase and active optional pointers; adds environment/namespace; updates scan/assign/string. |
Comments suppressed due to low confidence (1)
controlplane-api/ent/team.go:1
- Now that
StatusPhaseis optional, theString()method can emit dangling separators (e.g.,..., , status_message=...) becausebuilder.WriteString(\", \")is unconditional even when the field is nil. Consider building the string from a slice ofkey=valueparts that are appended only when present (or always printing the field with an explicit<nil>value) so the output remains well-formed. The same pattern appears for optionalenvironment/namespace/rover_token_reffields in thisString()and other generatedString()methods updated in this PR.
// SPDX-FileCopyrightText: 2025 Deutsche Telekom IT GmbH
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
ron96g
reviewed
Mar 31, 2026
bc035bf to
8747acd
Compare
…espace - Add environment and namespace for every entity - Remove TeamEnvironment and Environment entity - Allow ApiSubscription without ApiExposure
…es optional - ent/schema/mixin/status.go (status_phase) - ent/schema/application.go (client_id) - ent/schema/api_exposure.go (active) - ent/schema/mixin/approval.go (available_transitions)
…t defaults to false so callers don't need nil checks in the common case.
8747acd to
38b7e50
Compare
ron96g
approved these changes
Apr 2, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Modifications for the GraphQL model
Changes for environment and namespace
Changes for ApiSubscription
Make status attributes optional