ListInstances lists all instances.
(ctx context.Context, req *connect.Request[v1pb.ListInstancesRequest])
| 67 | |
| 68 | // ListInstances lists all instances. |
| 69 | func (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. |
| 123 | func (s *InstanceService) ListInstanceDatabase(ctx context.Context, req *connect.Request[v1pb.ListInstanceDatabaseRequest]) (*connect.Response[v1pb.ListInstanceDatabaseResponse], error) { |
nothing calls this directly
no test coverage detected