func()

in pkg/cloud/rgraph/rnode/generic_funcs.go [68:104]


func (f *GetFuncs[GA, Alpha, Beta]) Do(
	ctx context.Context,
	ver meta.Version,
	id *cloud.ResourceID,
	tt api.TypeTrait[GA, Alpha, Beta],
) (api.Resource[GA, Alpha, Beta], error) {
	current := api.NewResource(id, tt)
	switch ver {
	case meta.VersionGA:
		raw, err := f.GA.Do(ctx, id.Key, cloud.ForceProjectID(id.ProjectID))
		if err != nil {
			return nil, err
		}
		if err := current.Set(raw); err != nil {
			return nil, err
		}
	case meta.VersionAlpha:
		raw, err := f.Alpha.Do(ctx, id.Key, cloud.ForceProjectID(id.ProjectID))
		if err != nil {
			return nil, err
		}
		if err := current.SetAlpha(raw); err != nil {
			return nil, err
		}
	case meta.VersionBeta:
		raw, err := f.Beta.Do(ctx, id.Key, cloud.ForceProjectID(id.ProjectID))
		if err != nil {
			return nil, err
		}
		if err := current.SetBeta(raw); err != nil {
			return nil, err
		}
	default:
		return nil, fmt.Errorf("getFuncs.do unsupported version %q", ver)
	}
	return current.Freeze()
}