Fix people in mcp

Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
This commit is contained in:
Sacha Al Himdani
2026-01-02 10:20:13 +01:00
parent 6ab5ace353
commit aba51629c0
12 changed files with 69 additions and 36 deletions

View File

@@ -0,0 +1,5 @@
UPDATE peoples
SET additional_email_addresses = ARRAY[]::TEXT[]
WHERE additional_email_addresses IS NULL;
ALTER TABLE peoples ALTER COLUMN additional_email_addresses SET NOT NULL;

View File

@@ -3523,7 +3523,7 @@ input CreatePeopleInput {
organizationId: ID!
fullName: String!
primaryEmailAddress: EmailAddr!
additionalEmailAddresses: [EmailAddr!]
additionalEmailAddresses: [EmailAddr!]!
kind: PeopleKind!
position: String
contractStartDate: Datetime

View File

@@ -13522,7 +13522,7 @@ input CreatePeopleInput {
organizationId: ID!
fullName: String!
primaryEmailAddress: EmailAddr!
additionalEmailAddresses: [EmailAddr!]
additionalEmailAddresses: [EmailAddr!]!
kind: PeopleKind!
position: String
contractStartDate: Datetime
@@ -60752,7 +60752,7 @@ func (ec *executionContext) unmarshalInputCreatePeopleInput(ctx context.Context,
it.PrimaryEmailAddress = data
case "additionalEmailAddresses":
ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("additionalEmailAddresses"))
data, err := ec.unmarshalOEmailAddr2ᚕgoᚗproboᚗincᚋproboᚋpkgᚋmailᚐAddrᚄ(ctx, v)
data, err := ec.unmarshalNEmailAddr2ᚕgoᚗproboᚗincᚋproboᚋpkgᚋmailᚐAddrᚄ(ctx, v)
if err != nil {
return it, err
}

View File

@@ -425,7 +425,7 @@ type CreatePeopleInput struct {
OrganizationID gid.GID `json:"organizationId"`
FullName string `json:"fullName"`
PrimaryEmailAddress mail.Addr `json:"primaryEmailAddress"`
AdditionalEmailAddresses []mail.Addr `json:"additionalEmailAddresses,omitempty"`
AdditionalEmailAddresses []mail.Addr `json:"additionalEmailAddresses"`
Kind coredata.PeopleKind `json:"kind"`
Position *string `json:"position,omitempty"`
ContractStartDate *time.Time `json:"contractStartDate,omitempty"`

View File

@@ -2073,7 +2073,7 @@ func (r *mutationResolver) CreatePeople(ctx context.Context, input types.CreateP
OrganizationID: input.OrganizationID,
FullName: input.FullName,
PrimaryEmailAddress: input.PrimaryEmailAddress,
AdditionalEmailAddresses: []mail.Addr{},
AdditionalEmailAddresses: input.AdditionalEmailAddresses,
Kind: input.Kind,
Position: input.Position,
ContractStartDate: input.ContractStartDate,

View File

@@ -11,6 +11,7 @@ import (
"github.com/modelcontextprotocol/go-sdk/mcp"
"go.probo.inc/probo/pkg/authz"
"go.probo.inc/probo/pkg/coredata"
"go.probo.inc/probo/pkg/mail"
"go.probo.inc/probo/pkg/page"
"go.probo.inc/probo/pkg/probo"
"go.probo.inc/probo/pkg/server/api/mcp/v1/types"
@@ -171,13 +172,18 @@ func (r *Resolver) AddPeopleTool(ctx context.Context, req *mcp.CallToolRequest,
svc := r.ProboService(ctx, input.OrganizationID)
additionalEmails := []mail.Addr{}
if input.AdditionalEmailAddresses != nil {
additionalEmails = input.AdditionalEmailAddresses
}
people, err := svc.Peoples.Create(
ctx,
probo.CreatePeopleRequest{
OrganizationID: input.OrganizationID,
FullName: input.FullName,
PrimaryEmailAddress: input.PrimaryEmailAddress,
AdditionalEmailAddresses: input.AdditionalEmailAddresses,
AdditionalEmailAddresses: additionalEmails,
Kind: input.Kind,
Position: input.Position,
ContractStartDate: input.ContractStartDate,