From 5291cdb3db9d30574b73062c30c4b01973e63d6c Mon Sep 17 00:00:00 2001 From: gearnode Date: Fri, 31 Jan 2025 08:13:02 -0800 Subject: [PATCH] Add people node query support Signed-off-by: gearnode --- pkg/api/console/v1/v1_resolver.go | 7 ++++++ pkg/probo/coredata/people.go | 40 +++++++++++++++++++++++++++++++ pkg/probo/probo.go | 20 ++++++++++++++++ 3 files changed, 67 insertions(+) diff --git a/pkg/api/console/v1/v1_resolver.go b/pkg/api/console/v1/v1_resolver.go index eedc0d48c..0d23757e1 100644 --- a/pkg/api/console/v1/v1_resolver.go +++ b/pkg/api/console/v1/v1_resolver.go @@ -110,6 +110,13 @@ func (r *queryResolver) Node(ctx context.Context, id gid.GID) (types.Node, error } return types.NewOrganization(organization), nil + case coredata.PeopleEntityType: + people, err := r.svc.GetPeople(ctx, id) + if err != nil { + return nil, err + } + + return types.NewPeople(people), nil default: } diff --git a/pkg/probo/coredata/people.go b/pkg/probo/coredata/people.go index ffea0fbba..864cad631 100644 --- a/pkg/probo/coredata/people.go +++ b/pkg/probo/coredata/people.go @@ -57,6 +57,46 @@ func (p *People) scan(r pgx.Row) error { ) } +func (p *People) LoadByID( + ctx context.Context, + conn pg.Conn, + scope *Scope, + peopleID gid.GID, +) error { + q := ` +SELECT + id, + organization_id, + full_name, + primary_email_address, + additional_email_addresses, + created_at, + updated_at +FROM + peoples +WHERE + %s + AND id = @people_id +LIMIT 1; +` + + q = fmt.Sprintf(q, scope.SQLFragment()) + + args := pgx.NamedArgs{"people_id": peopleID} + maps.Copy(args, scope.SQLArguments()) + + r := conn.QueryRow(ctx, q, args) + + p2 := People{} + if err := p2.scan(r); err != nil { + return err + } + + *p = p2 + + return nil +} + func (p *Peoples) LoadByOrganizationID( ctx context.Context, conn pg.Conn, diff --git a/pkg/probo/probo.go b/pkg/probo/probo.go index abf41dd2b..478ba456c 100644 --- a/pkg/probo/probo.go +++ b/pkg/probo/probo.go @@ -69,6 +69,26 @@ func (s Service) GetOrganization( return organization, nil } +func (s Service) GetPeople( + ctx context.Context, + peopleID gid.GID, +) (*coredata.People, error) { + people := &coredata.People{} + + err := s.pg.WithConn( + ctx, + func(conn pg.Conn) error { + return people.LoadByID(ctx, conn, s.scope, peopleID) + }, + ) + + if err != nil { + return nil, err + } + + return people, nil +} + func (s Service) ListOrganizationFrameworks( ctx context.Context, organizationID gid.GID,