Skip to content

feat(controlplane-api): GraphQL model changes#303

Merged
BjoernKarma merged 4 commits intomainfrom
feat/cpapi-model
Apr 2, 2026
Merged

feat(controlplane-api): GraphQL model changes#303
BjoernKarma merged 4 commits intomainfrom
feat/cpapi-model

Conversation

@BjoernKarma
Copy link
Copy Markdown
Contributor

Modifications for the GraphQL model

Changes for environment and namespace

  • Add environment and namespace for every entity
  • Remove TeamEnvironment and Environment entity

Changes for ApiSubscription

  • Allow ApiSubscription without ApiExposure

Make status attributes 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)

Copilot AI review requested due to automatic review settings March 31, 2026 07:27
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 environment and namespace fields across entities via new Ent mixins.
  • Remove Environment and TeamEnvironment schemas, generated code, and related filtering/tests.
  • Make several “status” and other attributes optional/nillable, and allow ApiSubscription without a required ApiExposure target 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 StatusPhase is optional, the String() method can emit dangling separators (e.g., ..., , status_message=...) because builder.WriteString(\", \") is unconditional even when the field is nil. Consider building the string from a slice of key=value parts 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 optional environment/namespace/rover_token_ref fields in this String() and other generated String() 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.

@BjoernKarma BjoernKarma added enhancement New feature or request go Pull requests that update go code controlplane-api Anything related to controlplane-api labels Mar 31, 2026
…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.
@BjoernKarma BjoernKarma merged commit eb5b316 into main Apr 2, 2026
137 checks passed
@BjoernKarma BjoernKarma deleted the feat/cpapi-model branch April 2, 2026 09:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

controlplane-api Anything related to controlplane-api enhancement New feature or request go Pull requests that update go code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants