diff --git a/pkg/api/console/v1/v1_resolver.go b/pkg/api/console/v1/v1_resolver.go index 0d23757e1..f48ada473 100644 --- a/pkg/api/console/v1/v1_resolver.go +++ b/pkg/api/console/v1/v1_resolver.go @@ -117,6 +117,13 @@ func (r *queryResolver) Node(ctx context.Context, id gid.GID) (types.Node, error } return types.NewPeople(people), nil + case coredata.VendorEntityType: + vendor, err := r.svc.GetVendor(ctx, id) + if err != nil { + return nil, err + } + + return types.NewVendor(vendor), nil default: } diff --git a/pkg/probo/coredata/vendor.go b/pkg/probo/coredata/vendor.go index d5927e5a8..2665f4ae8 100644 --- a/pkg/probo/coredata/vendor.go +++ b/pkg/probo/coredata/vendor.go @@ -53,6 +53,44 @@ func (v *Vendor) scan(r pgx.Row) error { ) } +func (v *Vendor) LoadByID( + ctx context.Context, + conn pg.Conn, + scope *Scope, + vendorID gid.GID, +) error { + q := ` +SELECT + id, + organization_id, + name, + created_at, + updated_at +FROM + vendors +WHERE + %s + AND id = @vendor_id +LIMIT 1; +` + + q = fmt.Sprintf(q, scope.SQLFragment()) + + args := pgx.NamedArgs{"vendor_id": vendorID} + maps.Copy(args, scope.SQLArguments()) + + r := conn.QueryRow(ctx, q, args) + + v2 := Vendor{} + if err := v2.scan(r); err != nil { + return err + } + + *v = v2 + + return nil +} + func (v *Vendors) LoadByOrganizationID( ctx context.Context, conn pg.Conn, diff --git a/pkg/probo/probo.go b/pkg/probo/probo.go index 478ba456c..266c4c816 100644 --- a/pkg/probo/probo.go +++ b/pkg/probo/probo.go @@ -89,6 +89,26 @@ func (s Service) GetPeople( return people, nil } +func (s Service) GetVendor( + ctx context.Context, + vendorID gid.GID, +) (*coredata.Vendor, error) { + vendor := &coredata.Vendor{} + + err := s.pg.WithConn( + ctx, + func(conn pg.Conn) error { + return vendor.LoadByID(ctx, conn, s.scope, vendorID) + }, + ) + + if err != nil { + return nil, err + } + + return vendor, nil +} + func (s Service) ListOrganizationFrameworks( ctx context.Context, organizationID gid.GID,