MCPcopy Create free account
hub / github.com/bytebase/bytebase / ListInstances

Method ListInstances

backend/api/v1/instance_service.go:69–120  ·  view source on GitHub ↗

ListInstances lists all instances.

(ctx context.Context, req *connect.Request[v1pb.ListInstancesRequest])

Source from the content-addressed store, hash-verified

67
68// ListInstances lists all instances.
69func (s *InstanceService) ListInstances(ctx context.Context, req *connect.Request[v1pb.ListInstancesRequest]) (*connect.Response[v1pb.ListInstancesResponse], error) {
70 offset, err := parseLimitAndOffset(&pageSize{
71 token: req.Msg.PageToken,
72 limit: int(req.Msg.PageSize),
73 maximum: 1000,
74 })
75 if err != nil {
76 return nil, err
77 }
78 limitPlusOne := offset.limit + 1
79
80 find := &store.FindInstanceMessage{
81 Workspace: common.GetWorkspaceIDFromContext(ctx),
82 ShowDeleted: req.Msg.ShowDeleted,
83 Limit: &limitPlusOne,
84 Offset: &offset.offset,
85 }
86 filterQ, err := store.GetListInstanceFilter(req.Msg.Filter)
87 if err != nil {
88 return nil, connect.NewError(connect.CodeInvalidArgument, err)
89 }
90 find.FilterQ = filterQ
91
92 orderByKeys, err := store.GetInstanceOrders(req.Msg.OrderBy)
93 if err != nil {
94 return nil, connect.NewError(connect.CodeInvalidArgument, err)
95 }
96 find.OrderByKeys = orderByKeys
97
98 instances, err := s.store.ListInstances(ctx, find)
99 if err != nil {
100 return nil, connect.NewError(connect.CodeInternal, err)
101 }
102
103 nextPageToken := ""
104 if len(instances) == limitPlusOne {
105 instances = instances[:offset.limit]
106 if nextPageToken, err = offset.getNextPageToken(); err != nil {
107 return nil, connect.NewError(connect.CodeInternal, errors.Wrapf(err, "failed to marshal next page token"))
108 }
109 }
110
111 response := &v1pb.ListInstancesResponse{
112 NextPageToken: nextPageToken,
113 }
114 workspaceID := common.GetWorkspaceIDFromContext(ctx)
115 for _, instance := range instances {
116 ins := convertToV1Instance(instance, s.licenseService.IsInstanceEffectivelyActivated(ctx, workspaceID, instance))
117 response.Instances = append(response.Instances, ins)
118 }
119 return connect.NewResponse(response), nil
120}
121
122// ListInstanceDatabase list all databases in the instance.
123func (s *InstanceService) ListInstanceDatabase(ctx context.Context, req *connect.Request[v1pb.ListInstanceDatabaseRequest]) (*connect.Response[v1pb.ListInstanceDatabaseResponse], error) {

Callers

nothing calls this directly

Calls 8

GetListInstanceFilterFunction · 0.92
GetInstanceOrdersFunction · 0.92
parseLimitAndOffsetFunction · 0.85
convertToV1InstanceFunction · 0.85
getNextPageTokenMethod · 0.80
ListInstancesMethod · 0.65

Tested by

no test coverage detected