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  }