Files
zitadel/internal/api/grpc/instance/v2/instance.go

73 lines
1.9 KiB
Go
Raw Normal View History

package instance
import (
"context"
"strings"
"github.com/zitadel/zitadel/internal/api/grpc/object/v2"
"github.com/zitadel/zitadel/internal/zerrors"
2025-04-28 17:15:23 +02:00
instance "github.com/zitadel/zitadel/pkg/grpc/instance/v2beta"
)
func (s *Server) CreateInstance(ctx context.Context, req *instance.CreateInstanceRequest) (*instance.CreateInstanceResponse, error) {
id, pat, key, details, err := s.command.SetUpInstance(ctx, CreateInstancePbToSetupInstance(req, s.defaultInstance, s.externalDomain))
if err != nil {
return nil, err
}
var machineKey []byte
if key != nil {
machineKey, err = key.Detail()
if err != nil {
return nil, err
}
}
return &instance.CreateInstanceResponse{
Pat: pat,
MachineKey: machineKey,
InstanceId: id,
Details: object.DomainToDetailsPb(details),
}, nil
}
func (s *Server) DeleteInstance(ctx context.Context, request *instance.DeleteInstanceRequest) (*instance.DeleteInstanceResponse, error) {
instanceID := strings.TrimSpace(request.GetInstanceId())
if err := validateParam(instanceID, "instance_id"); err != nil {
return nil, err
}
obj, err := s.command.RemoveInstance(ctx, instanceID)
if err != nil {
return nil, err
}
return &instance.DeleteInstanceResponse{
Details: object.DomainToDetailsPb(obj),
}, nil
}
func (s *Server) UpdateInstance(ctx context.Context, request *instance.UpdateInstanceRequest) (*instance.UpdateInstanceResponse, error) {
instanceName := strings.TrimSpace(request.GetInstanceName())
if err := validateParam(instanceName, "instance_name"); err != nil {
return nil, err
}
obj, err := s.command.UpdateInstance(ctx, instanceName)
if err != nil {
return nil, err
}
return &instance.UpdateInstanceResponse{
Details: object.DomainToDetailsPb(obj),
}, nil
}
func validateParam(param string, paramName string) error {
if strings.TrimSpace(param) == "" {
return zerrors.ThrowInvalidArgument(nil, paramName, paramName+" must not be empty")
}
return nil
}