github.com/cloudwan/edgelq-sdk@v1.15.4/audit/access/v1alpha2/method_descriptor/method_descriptor.pb.api_access.go (about) 1 // Code generated by protoc-gen-goten-access 2 // Resource: MethodDescriptor 3 // DO NOT EDIT!!! 4 5 package method_descriptor_access 6 7 import ( 8 "context" 9 10 "google.golang.org/grpc" 11 "google.golang.org/grpc/codes" 12 "google.golang.org/grpc/metadata" 13 "google.golang.org/grpc/status" 14 15 gotenaccess "github.com/cloudwan/goten-sdk/runtime/access" 16 gotenresource "github.com/cloudwan/goten-sdk/runtime/resource" 17 gotenfilter "github.com/cloudwan/goten-sdk/runtime/resource/filter" 18 "github.com/cloudwan/goten-sdk/types/watch_type" 19 20 method_descriptor_client "github.com/cloudwan/edgelq-sdk/audit/client/v1alpha2/method_descriptor" 21 method_descriptor "github.com/cloudwan/edgelq-sdk/audit/resources/v1alpha2/method_descriptor" 22 ) 23 24 var ( 25 _ = new(context.Context) 26 27 _ = metadata.MD{} 28 _ = new(grpc.ClientConnInterface) 29 _ = codes.NotFound 30 _ = status.Status{} 31 32 _ = new(gotenaccess.Watcher) 33 _ = watch_type.WatchType_STATEFUL 34 _ = new(gotenresource.ListQuery) 35 _ = gotenfilter.Eq 36 ) 37 38 type apiMethodDescriptorAccess struct { 39 client method_descriptor_client.MethodDescriptorServiceClient 40 } 41 42 func NewApiMethodDescriptorAccess(client method_descriptor_client.MethodDescriptorServiceClient) method_descriptor.MethodDescriptorAccess { 43 return &apiMethodDescriptorAccess{client: client} 44 } 45 46 func (a *apiMethodDescriptorAccess) GetMethodDescriptor(ctx context.Context, query *method_descriptor.GetQuery, opts ...gotenresource.GetOption) (*method_descriptor.MethodDescriptor, error) { 47 getOpts := gotenresource.MakeGetOptions(opts) 48 callHeaders := metadata.MD{} 49 if getOpts.GetSkipCache() { 50 callHeaders["cache-control"] = []string{"no-cache"} 51 } 52 callOpts := []grpc.CallOption{} 53 if len(callHeaders) > 0 { 54 callOpts = append(callOpts, grpc.Header(&callHeaders)) 55 } 56 if !query.Reference.IsFullyQualified() { 57 return nil, status.Errorf(codes.InvalidArgument, "Reference %s is not fully specified", query.Reference) 58 } 59 request := &method_descriptor_client.GetMethodDescriptorRequest{ 60 Name: &query.Reference.Name, 61 FieldMask: query.Mask, 62 } 63 res, err := a.client.GetMethodDescriptor(ctx, request, callOpts...) 64 if err != nil { 65 return nil, err 66 } 67 query.Reference.Resolve(res) 68 return res, nil 69 } 70 71 func (a *apiMethodDescriptorAccess) BatchGetMethodDescriptors(ctx context.Context, refs []*method_descriptor.Reference, opts ...gotenresource.BatchGetOption) error { 72 batchGetOpts := gotenresource.MakeBatchGetOptions(opts) 73 callHeaders := metadata.MD{} 74 if batchGetOpts.GetSkipCache() { 75 callHeaders["cache-control"] = []string{"no-cache"} 76 } 77 callOpts := []grpc.CallOption{} 78 if len(callHeaders) > 0 { 79 callOpts = append(callOpts, grpc.Header(&callHeaders)) 80 } 81 asNames := make([]*method_descriptor.Name, 0, len(refs)) 82 for _, ref := range refs { 83 if !ref.IsFullyQualified() { 84 return status.Errorf(codes.InvalidArgument, "Reference %s is not fully specified", ref) 85 } 86 asNames = append(asNames, &ref.Name) 87 } 88 request := &method_descriptor_client.BatchGetMethodDescriptorsRequest{ 89 Names: asNames, 90 } 91 fieldMask := batchGetOpts.GetFieldMask(method_descriptor.GetDescriptor()) 92 if fieldMask != nil { 93 request.FieldMask = fieldMask.(*method_descriptor.MethodDescriptor_FieldMask) 94 } 95 resp, err := a.client.BatchGetMethodDescriptors(ctx, request, callOpts...) 96 if err != nil { 97 return err 98 } 99 resultMap := make(map[method_descriptor.Name]*method_descriptor.MethodDescriptor, len(refs)) 100 for _, resolvedRes := range resp.GetMethodDescriptors() { 101 resultMap[*resolvedRes.GetName()] = resolvedRes 102 } 103 for _, ref := range refs { 104 resolvedRes := resultMap[ref.Name] 105 if resolvedRes != nil { 106 ref.Resolve(resolvedRes) 107 } 108 } 109 if batchGetOpts.MustResolveAll() && len(resp.GetMissing()) > 0 { 110 return status.Errorf(codes.NotFound, "Number of references not found: %d", len(resp.GetMissing())) 111 } 112 return nil 113 } 114 115 func (a *apiMethodDescriptorAccess) QueryMethodDescriptors(ctx context.Context, query *method_descriptor.ListQuery, opts ...gotenresource.QueryOption) (*method_descriptor.QueryResultSnapshot, error) { 116 qOpts := gotenresource.MakeQueryOptions(opts) 117 callHeaders := metadata.MD{} 118 if qOpts.GetSkipCache() { 119 callHeaders["cache-control"] = []string{"no-cache"} 120 } 121 callOpts := []grpc.CallOption{} 122 if len(callHeaders) > 0 { 123 callOpts = append(callOpts, grpc.Header(&callHeaders)) 124 } 125 request := &method_descriptor_client.ListMethodDescriptorsRequest{ 126 Filter: query.Filter, 127 FieldMask: query.Mask, 128 IncludePagingInfo: query.WithPagingInfo, 129 } 130 if query.Pager != nil { 131 request.PageSize = int32(query.Pager.Limit) 132 request.OrderBy = query.Pager.OrderBy 133 request.PageToken = query.Pager.Cursor 134 } 135 resp, err := a.client.ListMethodDescriptors(ctx, request) 136 if err != nil { 137 return nil, err 138 } 139 return &method_descriptor.QueryResultSnapshot{ 140 MethodDescriptors: resp.MethodDescriptors, 141 NextPageCursor: resp.NextPageToken, 142 PrevPageCursor: resp.PrevPageToken, 143 TotalResultsCount: resp.TotalResultsCount, 144 CurrentOffset: resp.CurrentOffset, 145 }, nil 146 } 147 148 func (a *apiMethodDescriptorAccess) WatchMethodDescriptor(ctx context.Context, query *method_descriptor.GetQuery, observerCb func(*method_descriptor.MethodDescriptorChange) error) error { 149 if !query.Reference.IsFullyQualified() { 150 return status.Errorf(codes.InvalidArgument, "Reference %s is not fully specified", query.Reference) 151 } 152 request := &method_descriptor_client.WatchMethodDescriptorRequest{ 153 Name: &query.Reference.Name, 154 FieldMask: query.Mask, 155 } 156 ctx, cancel := context.WithCancel(ctx) 157 defer cancel() 158 159 changesStream, initErr := a.client.WatchMethodDescriptor(ctx, request) 160 if initErr != nil { 161 return initErr 162 } 163 for { 164 resp, err := changesStream.Recv() 165 if err != nil { 166 return status.Errorf(status.Code(err), "watch recv error: %s", err) 167 } 168 change := resp.GetChange() 169 if err := observerCb(change); err != nil { 170 return err 171 } 172 } 173 } 174 175 func (a *apiMethodDescriptorAccess) WatchMethodDescriptors(ctx context.Context, query *method_descriptor.WatchQuery, observerCb func(*method_descriptor.QueryResultChange) error) error { 176 request := &method_descriptor_client.WatchMethodDescriptorsRequest{ 177 Filter: query.Filter, 178 FieldMask: query.Mask, 179 MaxChunkSize: int32(query.ChunkSize), 180 Type: query.WatchType, 181 ResumeToken: query.ResumeToken, 182 StartingTime: query.StartingTime, 183 } 184 if query.Pager != nil { 185 request.OrderBy = query.Pager.OrderBy 186 request.PageSize = int32(query.Pager.Limit) 187 request.PageToken = query.Pager.Cursor 188 } 189 ctx, cancel := context.WithCancel(ctx) 190 defer cancel() 191 192 changesStream, initErr := a.client.WatchMethodDescriptors(ctx, request) 193 if initErr != nil { 194 return initErr 195 } 196 for { 197 respChange, err := changesStream.Recv() 198 if err != nil { 199 return status.Errorf(status.Code(err), "watch recv error: %s", err) 200 } 201 changesWithPaging := &method_descriptor.QueryResultChange{ 202 Changes: respChange.MethodDescriptorChanges, 203 IsCurrent: respChange.IsCurrent, 204 IsHardReset: respChange.IsHardReset, 205 IsSoftReset: respChange.IsSoftReset, 206 ResumeToken: respChange.ResumeToken, 207 SnapshotSize: respChange.SnapshotSize, 208 } 209 if respChange.PageTokenChange != nil { 210 changesWithPaging.PrevPageCursor = respChange.PageTokenChange.PrevPageToken 211 changesWithPaging.NextPageCursor = respChange.PageTokenChange.NextPageToken 212 } 213 if err := observerCb(changesWithPaging); err != nil { 214 return err 215 } 216 } 217 } 218 219 func (a *apiMethodDescriptorAccess) SaveMethodDescriptor(ctx context.Context, res *method_descriptor.MethodDescriptor, opts ...gotenresource.SaveOption) error { 220 saveOpts := gotenresource.MakeSaveOptions(opts) 221 var resp *method_descriptor.MethodDescriptor 222 var err error 223 if !saveOpts.OnlyCreate() { 224 updateRequest := &method_descriptor_client.UpdateMethodDescriptorRequest{ 225 MethodDescriptor: res, 226 AllowMissing: !saveOpts.OnlyUpdate(), 227 } 228 if updateMask := saveOpts.GetUpdateMask(); updateMask != nil { 229 updateRequest.UpdateMask = updateMask.(*method_descriptor.MethodDescriptor_FieldMask) 230 } 231 if mask, conditionalState := saveOpts.GetCAS(); mask != nil && conditionalState != nil { 232 updateRequest.Cas = &method_descriptor_client.UpdateMethodDescriptorRequest_CAS{ 233 ConditionalState: conditionalState.(*method_descriptor.MethodDescriptor), 234 FieldMask: mask.(*method_descriptor.MethodDescriptor_FieldMask), 235 } 236 } 237 resp, err = a.client.UpdateMethodDescriptor(ctx, updateRequest) 238 if err != nil { 239 return err 240 } 241 } else { 242 createRequest := &method_descriptor_client.CreateMethodDescriptorRequest{ 243 MethodDescriptor: res, 244 } 245 resp, err = a.client.CreateMethodDescriptor(ctx, createRequest) 246 if err != nil { 247 return err 248 } 249 } 250 // Ensure object is updated - but in most shallow way possible 251 res.MakeDiffFieldMask(resp).Set(res, resp) 252 return nil 253 } 254 255 func (a *apiMethodDescriptorAccess) DeleteMethodDescriptor(ctx context.Context, ref *method_descriptor.Reference, opts ...gotenresource.DeleteOption) error { 256 return status.Errorf(codes.Internal, "Delete operation on MethodDescriptor is prohibited") 257 } 258 259 func GetApiAccessBuilder() *gotenaccess.ApiAccessBuilder { 260 return gotenaccess.GetRegistry().FindApiAccessBuilder(method_descriptor.GetDescriptor()) 261 } 262 263 func init() { 264 gotenaccess.GetRegistry().RegisterApiAccessConstructor(method_descriptor.GetDescriptor(), func(cc grpc.ClientConnInterface) gotenresource.Access { 265 return method_descriptor.AsAnyCastAccess(NewApiMethodDescriptorAccess(method_descriptor_client.NewMethodDescriptorServiceClient(cc))) 266 }) 267 }