diff --git a/pkg/server/api/console/v1/base.resolvers.go b/pkg/server/api/console/v1/base.resolvers.go index d32d4efef..2147d6a8c 100644 --- a/pkg/server/api/console/v1/base.resolvers.go +++ b/pkg/server/api/console/v1/base.resolvers.go @@ -19,40 +19,8 @@ import ( "go.probo.inc/probo/pkg/server/api/console/v1/schema" "go.probo.inc/probo/pkg/server/api/console/v1/types" "go.probo.inc/probo/pkg/server/gqlutils" - "go.probo.inc/probo/pkg/validator" ) -// UpdateOrganizationContext is the resolver for the updateOrganizationContext field. -func (r *mutationResolver) UpdateOrganizationContext(ctx context.Context, input types.UpdateOrganizationContextInput) (*types.UpdateOrganizationContextPayload, error) { - if err := r.authorize(ctx, input.OrganizationID, probo.ActionOrganizationContextUpdate); err != nil { - return nil, err - } - - prb := r.ProboService(ctx, input.OrganizationID.TenantID()) - - req := probo.UpdateOrganizationContextRequest{ - OrganizationID: input.OrganizationID, - Product: gqlutils.UnwrapOmittable(input.Product), - Architecture: gqlutils.UnwrapOmittable(input.Architecture), - Team: gqlutils.UnwrapOmittable(input.Team), - Processes: gqlutils.UnwrapOmittable(input.Processes), - Customers: gqlutils.UnwrapOmittable(input.Customers), - } - - organizationContext, err := prb.Organizations.UpdateContext(ctx, req) - if err != nil { - if validationErrors, ok := errors.AsType[validator.ValidationErrors](err); ok { - return nil, gqlutils.InvalidValidationErrors(ctx, validationErrors) - } - r.logger.ErrorCtx(ctx, "cannot update organization context", log.Error(err)) - return nil, gqlutils.Internal(ctx) - } - - return &types.UpdateOrganizationContextPayload{ - Context: types.NewOrganizationContext(organizationContext), - }, nil -} - // Node is the resolver for the node field. func (r *queryResolver) Node(ctx context.Context, id gid.GID) (types.Node, error) { var ( diff --git a/pkg/server/api/console/v1/graphql/base.graphql b/pkg/server/api/console/v1/graphql/base.graphql index 1a46793a2..3b5c092d2 100644 --- a/pkg/server/api/console/v1/graphql/base.graphql +++ b/pkg/server/api/console/v1/graphql/base.graphql @@ -27,8 +27,4 @@ type Query { viewer: Viewer! } -type Mutation { - updateOrganizationContext( - input: UpdateOrganizationContextInput! - ): UpdateOrganizationContextPayload! -} +type Mutation diff --git a/pkg/server/api/console/v1/graphql/organization.graphql b/pkg/server/api/console/v1/graphql/organization.graphql index b8150e14b..5d3f3b8ed 100644 --- a/pkg/server/api/console/v1/graphql/organization.graphql +++ b/pkg/server/api/console/v1/graphql/organization.graphql @@ -336,3 +336,9 @@ type Organization implements Node { permission(action: String!): Boolean! @goField(forceResolver: true) } + +extend type Mutation { + updateOrganizationContext( + input: UpdateOrganizationContextInput! + ): UpdateOrganizationContextPayload! +} diff --git a/pkg/server/api/console/v1/organization.resolvers.go b/pkg/server/api/console/v1/organization.resolvers.go index 462d2941c..1cc6df8d0 100644 --- a/pkg/server/api/console/v1/organization.resolvers.go +++ b/pkg/server/api/console/v1/organization.resolvers.go @@ -7,6 +7,7 @@ package console_v1 import ( "context" + "errors" "fmt" "time" @@ -22,8 +23,40 @@ import ( "go.probo.inc/probo/pkg/server/gqlutils" "go.probo.inc/probo/pkg/server/gqlutils/types/cursor" "go.probo.inc/probo/pkg/slack" + "go.probo.inc/probo/pkg/validator" ) +// UpdateOrganizationContext is the resolver for the updateOrganizationContext field. +func (r *mutationResolver) UpdateOrganizationContext(ctx context.Context, input types.UpdateOrganizationContextInput) (*types.UpdateOrganizationContextPayload, error) { + if err := r.authorize(ctx, input.OrganizationID, probo.ActionOrganizationContextUpdate); err != nil { + return nil, err + } + + prb := r.ProboService(ctx, input.OrganizationID.TenantID()) + + req := probo.UpdateOrganizationContextRequest{ + OrganizationID: input.OrganizationID, + Product: gqlutils.UnwrapOmittable(input.Product), + Architecture: gqlutils.UnwrapOmittable(input.Architecture), + Team: gqlutils.UnwrapOmittable(input.Team), + Processes: gqlutils.UnwrapOmittable(input.Processes), + Customers: gqlutils.UnwrapOmittable(input.Customers), + } + + organizationContext, err := prb.Organizations.UpdateContext(ctx, req) + if err != nil { + if validationErrors, ok := errors.AsType[validator.ValidationErrors](err); ok { + return nil, gqlutils.InvalidValidationErrors(ctx, validationErrors) + } + r.logger.ErrorCtx(ctx, "cannot update organization context", log.Error(err)) + return nil, gqlutils.Internal(ctx) + } + + return &types.UpdateOrganizationContextPayload{ + Context: types.NewOrganizationContext(organizationContext), + }, nil +} + // LogoURL is the resolver for the logoUrl field. func (r *organizationResolver) LogoURL(ctx context.Context, obj *types.Organization) (*string, error) { if err := r.authorize(ctx, obj.ID, probo.ActionOrganizationGetLogoUrl); err != nil {