github.com/cloudwan/edgelq-sdk@v1.15.4/iam/access/v1/attestation_domain/attestation_domain.pb.api_access.go (about) 1 // Code generated by protoc-gen-goten-access 2 // Resource: AttestationDomain 3 // DO NOT EDIT!!! 4 5 package attestation_domain_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 attestation_domain_client "github.com/cloudwan/edgelq-sdk/iam/client/v1/attestation_domain" 21 attestation_domain "github.com/cloudwan/edgelq-sdk/iam/resources/v1/attestation_domain" 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 apiAttestationDomainAccess struct { 39 client attestation_domain_client.AttestationDomainServiceClient 40 } 41 42 func NewApiAttestationDomainAccess(client attestation_domain_client.AttestationDomainServiceClient) attestation_domain.AttestationDomainAccess { 43 return &apiAttestationDomainAccess{client: client} 44 } 45 46 func (a *apiAttestationDomainAccess) GetAttestationDomain(ctx context.Context, query *attestation_domain.GetQuery, opts ...gotenresource.GetOption) (*attestation_domain.AttestationDomain, 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 := &attestation_domain_client.GetAttestationDomainRequest{ 60 Name: &query.Reference.Name, 61 FieldMask: query.Mask, 62 } 63 res, err := a.client.GetAttestationDomain(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 *apiAttestationDomainAccess) BatchGetAttestationDomains(ctx context.Context, refs []*attestation_domain.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([]*attestation_domain.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 := &attestation_domain_client.BatchGetAttestationDomainsRequest{ 89 Names: asNames, 90 } 91 fieldMask := batchGetOpts.GetFieldMask(attestation_domain.GetDescriptor()) 92 if fieldMask != nil { 93 request.FieldMask = fieldMask.(*attestation_domain.AttestationDomain_FieldMask) 94 } 95 resp, err := a.client.BatchGetAttestationDomains(ctx, request, callOpts...) 96 if err != nil { 97 return err 98 } 99 resultMap := make(map[attestation_domain.Name]*attestation_domain.AttestationDomain, len(refs)) 100 for _, resolvedRes := range resp.GetAttestationDomains() { 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 *apiAttestationDomainAccess) QueryAttestationDomains(ctx context.Context, query *attestation_domain.ListQuery, opts ...gotenresource.QueryOption) (*attestation_domain.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 := &attestation_domain_client.ListAttestationDomainsRequest{ 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 if query.Filter != nil && query.Filter.GetCondition() != nil { 136 request.Filter, request.Parent = getParentAndFilter(query.Filter) 137 } 138 resp, err := a.client.ListAttestationDomains(ctx, request) 139 if err != nil { 140 return nil, err 141 } 142 return &attestation_domain.QueryResultSnapshot{ 143 AttestationDomains: resp.AttestationDomains, 144 NextPageCursor: resp.NextPageToken, 145 PrevPageCursor: resp.PrevPageToken, 146 TotalResultsCount: resp.TotalResultsCount, 147 CurrentOffset: resp.CurrentOffset, 148 }, nil 149 } 150 151 func (a *apiAttestationDomainAccess) WatchAttestationDomain(ctx context.Context, query *attestation_domain.GetQuery, observerCb func(*attestation_domain.AttestationDomainChange) error) error { 152 if !query.Reference.IsFullyQualified() { 153 return status.Errorf(codes.InvalidArgument, "Reference %s is not fully specified", query.Reference) 154 } 155 request := &attestation_domain_client.WatchAttestationDomainRequest{ 156 Name: &query.Reference.Name, 157 FieldMask: query.Mask, 158 } 159 ctx, cancel := context.WithCancel(ctx) 160 defer cancel() 161 162 changesStream, initErr := a.client.WatchAttestationDomain(ctx, request) 163 if initErr != nil { 164 return initErr 165 } 166 for { 167 resp, err := changesStream.Recv() 168 if err != nil { 169 return status.Errorf(status.Code(err), "watch recv error: %s", err) 170 } 171 change := resp.GetChange() 172 if err := observerCb(change); err != nil { 173 return err 174 } 175 } 176 } 177 178 func (a *apiAttestationDomainAccess) WatchAttestationDomains(ctx context.Context, query *attestation_domain.WatchQuery, observerCb func(*attestation_domain.QueryResultChange) error) error { 179 request := &attestation_domain_client.WatchAttestationDomainsRequest{ 180 Filter: query.Filter, 181 FieldMask: query.Mask, 182 MaxChunkSize: int32(query.ChunkSize), 183 Type: query.WatchType, 184 ResumeToken: query.ResumeToken, 185 StartingTime: query.StartingTime, 186 } 187 if query.Pager != nil { 188 request.OrderBy = query.Pager.OrderBy 189 request.PageSize = int32(query.Pager.Limit) 190 request.PageToken = query.Pager.Cursor 191 } 192 if query.Filter != nil && query.Filter.GetCondition() != nil { 193 request.Filter, request.Parent = getParentAndFilter(query.Filter) 194 } 195 ctx, cancel := context.WithCancel(ctx) 196 defer cancel() 197 198 changesStream, initErr := a.client.WatchAttestationDomains(ctx, request) 199 if initErr != nil { 200 return initErr 201 } 202 for { 203 respChange, err := changesStream.Recv() 204 if err != nil { 205 return status.Errorf(status.Code(err), "watch recv error: %s", err) 206 } 207 changesWithPaging := &attestation_domain.QueryResultChange{ 208 Changes: respChange.AttestationDomainChanges, 209 IsCurrent: respChange.IsCurrent, 210 IsHardReset: respChange.IsHardReset, 211 IsSoftReset: respChange.IsSoftReset, 212 ResumeToken: respChange.ResumeToken, 213 SnapshotSize: respChange.SnapshotSize, 214 } 215 if respChange.PageTokenChange != nil { 216 changesWithPaging.PrevPageCursor = respChange.PageTokenChange.PrevPageToken 217 changesWithPaging.NextPageCursor = respChange.PageTokenChange.NextPageToken 218 } 219 if err := observerCb(changesWithPaging); err != nil { 220 return err 221 } 222 } 223 } 224 225 func (a *apiAttestationDomainAccess) SaveAttestationDomain(ctx context.Context, res *attestation_domain.AttestationDomain, opts ...gotenresource.SaveOption) error { 226 saveOpts := gotenresource.MakeSaveOptions(opts) 227 var resp *attestation_domain.AttestationDomain 228 var err error 229 if !saveOpts.OnlyCreate() { 230 updateRequest := &attestation_domain_client.UpdateAttestationDomainRequest{ 231 AttestationDomain: res, 232 AllowMissing: !saveOpts.OnlyUpdate(), 233 } 234 if updateMask := saveOpts.GetUpdateMask(); updateMask != nil { 235 updateRequest.UpdateMask = updateMask.(*attestation_domain.AttestationDomain_FieldMask) 236 } 237 if mask, conditionalState := saveOpts.GetCAS(); mask != nil && conditionalState != nil { 238 updateRequest.Cas = &attestation_domain_client.UpdateAttestationDomainRequest_CAS{ 239 ConditionalState: conditionalState.(*attestation_domain.AttestationDomain), 240 FieldMask: mask.(*attestation_domain.AttestationDomain_FieldMask), 241 } 242 } 243 resp, err = a.client.UpdateAttestationDomain(ctx, updateRequest) 244 if err != nil { 245 return err 246 } 247 } else { 248 createRequest := &attestation_domain_client.CreateAttestationDomainRequest{ 249 AttestationDomain: res, 250 } 251 resp, err = a.client.CreateAttestationDomain(ctx, createRequest) 252 if err != nil { 253 return err 254 } 255 } 256 // Ensure object is updated - but in most shallow way possible 257 res.MakeDiffFieldMask(resp).Set(res, resp) 258 return nil 259 } 260 261 func (a *apiAttestationDomainAccess) DeleteAttestationDomain(ctx context.Context, ref *attestation_domain.Reference, opts ...gotenresource.DeleteOption) error { 262 delOpts := gotenresource.MakeDeleteOptions(opts) 263 if !ref.IsFullyQualified() { 264 return status.Errorf(codes.InvalidArgument, "Reference %s is not fully specified", ref) 265 } 266 request := &attestation_domain_client.DeleteAttestationDomainRequest{ 267 Name: &ref.Name, 268 AllowMissing: delOpts.AllowMissing(), 269 } 270 _, err := a.client.DeleteAttestationDomain(ctx, request) 271 return err 272 } 273 func getParentAndFilter(fullFilter *attestation_domain.Filter) (*attestation_domain.Filter, *attestation_domain.ParentName) { 274 var withParentExtraction func(cnd attestation_domain.FilterCondition) attestation_domain.FilterCondition 275 var resultParent *attestation_domain.ParentName 276 var resultFilter *attestation_domain.Filter 277 withParentExtraction = func(cnd attestation_domain.FilterCondition) attestation_domain.FilterCondition { 278 switch tCnd := cnd.(type) { 279 case *attestation_domain.FilterConditionComposite: 280 if tCnd.GetOperator() == gotenfilter.AND { 281 withoutParentCnds := make([]attestation_domain.FilterCondition, 0) 282 for _, subCnd := range tCnd.Conditions { 283 if subCndNoParent := withParentExtraction(subCnd); subCndNoParent != nil { 284 withoutParentCnds = append(withoutParentCnds, subCndNoParent) 285 } 286 } 287 if len(withoutParentCnds) == 0 { 288 return nil 289 } 290 if len(withoutParentCnds) == 1 { 291 return withoutParentCnds[0] 292 } 293 return attestation_domain.AndFilterConditions(withoutParentCnds...) 294 } else { 295 return tCnd 296 } 297 case *attestation_domain.FilterConditionCompare: 298 if tCnd.GetOperator() == gotenfilter.Eq && tCnd.GetRawFieldPath().String() == "name" { 299 nameValue := tCnd.GetRawValue().(*attestation_domain.Name) 300 if nameValue != nil && nameValue.ParentName.IsSpecified() { 301 resultParent = &nameValue.ParentName 302 if nameValue.IsFullyQualified() { 303 return tCnd 304 } 305 return nil 306 } 307 } 308 return tCnd 309 default: 310 return tCnd 311 } 312 } 313 cndWithoutParent := withParentExtraction(fullFilter.GetCondition()) 314 if cndWithoutParent != nil { 315 resultFilter = &attestation_domain.Filter{FilterCondition: cndWithoutParent} 316 } 317 return resultFilter, resultParent 318 } 319 320 func GetApiAccessBuilder() *gotenaccess.ApiAccessBuilder { 321 return gotenaccess.GetRegistry().FindApiAccessBuilder(attestation_domain.GetDescriptor()) 322 } 323 324 func init() { 325 gotenaccess.GetRegistry().RegisterApiAccessConstructor(attestation_domain.GetDescriptor(), func(cc grpc.ClientConnInterface) gotenresource.Access { 326 return attestation_domain.AsAnyCastAccess(NewApiAttestationDomainAccess(attestation_domain_client.NewAttestationDomainServiceClient(cc))) 327 }) 328 }